✍️ برای مقایسه دو راهحل لازم نیست همیشه زمان بگیریم. اول مشخص کن چه کاری را میشماری؛ بعد اندازه ورودی را تغییر بده. راهحل الف هر عضو را یک بار بررسی میکند. راهحل ب هر زوج متفاوت از اعضا را یک بار بررسی میکند. برای پنج عضو، الف پنج بررسی و ب ده بررسی دارد؛ با ده عضو این عددها ده و چهلوپنج میشوند.
اینجا قرار نیست از زمان اجرا نتیجه قطعی بگیریم یا یک کار متفاوت را به اسم همان مسئله مقایسه کنیم. فقط مدل هزینه دو مسیر فرضی را کنار هم میگذاریم تا رشد کار را ببینیم. در اندازههای خیلی کوچک ممکن است تعداد زوجها کمتر از تعداد اعضا باشد؛ مثلاً برای یک عضو، بررسی زوجی اصلاً انجام نمیشود.
تابع خودت را از صفر بساز و دو شمارش را به همان ترتیب قرارداد برگردون. میتونی با حلقه یا رابطه عددی حساب کنی؛ نتیجه باید مستقل از ساعت و دستگاه باشد. خطای رایج اینه که برای مدل زوجی n*n بنویسیم؛ آن عبارت زوجهای خودی و هر دو جهت را میشمارد، در حالی که تعریف این تمرین فقط i < j است.
تابع آماده course_check فقط برای ارزیابی است: تابع اصلی را صدا میزند و حفظ ورودی را بررسی میکند. آن را تغییر نده؛ پاسخ تو همان تابع خواستهشده است.
فعالیت شما
تابع compare_work(n) عدد صحیح نامنفی n را میگیرد و فهرست [linear, pairs] را برمیگرداند: linear برابر n و pairs تعداد زوجهای i < j میان n عضو است. n=0 خروجی [0,0] و n=1 خروجی [1,0] دارد؛ compare_work(4) برابر [4,6] است. ورودی منفی در قرارداد نیست. تابع آماده course_check فقط برای ارزیابی است: تابع اصلی را صدا میزند و حفظ ورودی را بررسی میکند. آن را تغییر نده؛ پاسخ تو همان تابع خواستهشده است.