Knaph

پنجره‌ی زمینه12 از 37

جا می‌شود؟

این تمرین اختیاری است. برای کسانی است که کمی پایتون بلدند، و چیزی را تمرین می‌کند که درس «[هر آنچه مدل می‌بیند](everything-it-can-see)» گفت: همه‌ی آنچه در درخواست هست، به‌اضافه‌ی پاسخ، باید در پنجره‌ی زمینه جا شود. برنامه‌ی شما اندازه‌ی یک پنجره‌ی زمینه و تعدادِ توکن‌های چیزهایی را می‌گیرد که در یک درخواست می‌روند: ``text window 950 reply 200 fixed system 300 fixed tools 150 fixed notes 100 message 100 message 100 message 100 message 50 ` - window اندازه‌ی پنجره‌ی زمینه است، بر حسب توکن. - reply تعدادِ توکن‌هایی است که باید برای پاسخِ مدل خالی بماند. - هر خطِ fixed چیزی است که همیشه در زمینه هست (دستورهای برنامه، شرح ابزارها، یادداشت‌ها) و نمی‌شود کنارش گذاشت. - هر خطِ message یک پیام از گفت‌وگوست، **قدیمی‌ترین اول**. آخرین خط تازه‌ترین پیام است: همان پرسشی که مدل باید الان به آن پاسخ دهد. تابعِ messages_to_drop را بنویسید. این تابع برمی‌گرداند چند تا از **قدیمی‌ترین** پیام‌ها باید حذف شوند تا بخشِ ثابت، پیام‌هایی که می‌مانند و پاسخ، همه با هم در پنجره جا شوند: - اگر همه‌چیز از قبل جا می‌شود، 0 برگردانید؛ - وگرنه پیام‌ها را از قدیمی‌ترین، یکی‌یکی، حذف کنید تا جا شود، و برگردانید چند تا حذف کردید؛ - تازه‌ترین پیام را هرگز حذف نکنید: اگر حتی وقتی فقط تازه‌ترین پیام مانده جا نمی‌شود، -1 برگردانید. کدی که ورودی را می‌خواند و پاسخ را چاپ می‌کند از قبل نوشته شده است. برای نمونه‌ی بالا باید این را چاپ کند: `text drop the oldest 2 message(s) room left for the reply: 250 `` برنامه‌های واقعی زیرک‌ترند (به‌جای حذف کردنِ پیام‌های قدیمی خلاصه‌شان می‌کنند، همان‌طور که در درس «[وقتی پنجره پر می‌شود](when-the-window-fills-up)» می‌بینید)، ولی حسابی که زیرِ کار است همین است.

ورود برای امتحان این تمرین.