تهمینه دیکشنریای شامل لیست پکیجها به همراه پیشنیازهای آنها را از مدیر خود دریافت کرد. قرار بود تا تهمینه هر زمان که از او پکیجی خواسته شد او پیشنیازهای آن پکیج را اعلام کند. دیکشنری به صورت زیر بود:
{'pkg1': ['pkg3'], 'pkg2':['pkg3'], 'pkg3': [], 'pkg4':['pkg1', 'pkg2']}
برای دانلود پروژه اولیه روی این لینک کلیک کنید.
حالا تهمینه نیاز دارد تا تابعی با نام sort_dependencies
را پیادهسازی کند که در این تابع دیکشنری لیست تمامی پکیجها و نام یک پکیج را به عنوان ورودی دریافت میکند و در صورتی که پکیج مورد نظر پیشنیاز داشت فقط لیست پیشنیازهای آن پکیج را برگرداند و در صورتی که پیشنیازی نداشت یک لیست خالی برگرداند.
برای مثال اگر به تابع sort_dependencies
نام پکیج pkg4
را بدهند ابتدا باید بررسی کند که آیا پکیج شماره چهار پیشنیازی دارد یا خیر. در این مثال پیشنیازهای این پکیج برابر است با:
pkg4:[pkg1, pkg2]
حال باید بررسی شود آیا این پیشنیازها، خودشان پیشنیاز دارند یا خیر. بعد از بررسی، پاسخ برابر است با:
[pkg3,pkg1,pkg2]
البته پاسخ زیر نیز قابل قبول است، در کل هر خروجی قابل نصبی از تابع sort_dependencies
قابل قبول است:
[pkg3,pkg2,pkg1]
حالت بالا بدون هیچ مشکلی نصب میشود زیرا پکیج شماره یک و دو نیاز به نصب پکیج شماره سه پیش از خود دارد و در هر دو خروجی بالا این مورد به درستی رعایت شدهاست. اما چهار خروجی زیر اشتباه است:
[pkg2,pkg3,pkg1]
[pkg1,pkg3,pkg2]
[pkg2,pkg1,pkg3]
[pkg1,pkg2,pkg3]
زیرا در این خروجیها پکیجها بدون ارور نصب نمیشوند و پیش نیاز پکیج یک به درستی رعایت نشده است.
نکات تکمیلی
- فانکشن نباید پکیج تکراری در خروجی داشته باشد.
- ترتیب پکیج ها به همان ترتیبی باشد که می بایست نصب شوند. توجه کنید هر خروجی که بتوان با آن بدون مشکل پکیج ها را نصب کرد، قابل قبول است و مسئله به ازای هر ورودی چندین جواب صحیح دارد.
- نام تابع
sort_dependencies
در فایلsolution.py
به هیچ عنوان نباید تغییر کند. - خروجی می بایست لیستی از نوع رشته باشد.
نحوه ارسال جواب
در این تمرین شما تنها مجاز به تغییر محتوای فایل solution.py
هستید. تغییرات خود را روی این فایل اعمال کنید و پس از تکمیل آن فایل کامل شده solution.py
را ارسال کنید.
ارسال پاسخ برای این سؤال