تهمینه دیکشنری‌ای شامل لیست پکیج‌ها به همراه پیش‌نیازهای آن‌ها را از مدیر خود دریافت کرد. قرار بود تا تهمینه هر زمان که از او پکیجی خواسته شد او پیش‌نیازهای آن پکیج را اعلام کند. دیکشنری به صورت زیر بود:

{'pkg1': ['pkg3'], 'pkg2':['pkg3'], 'pkg3': [], 'pkg4':['pkg1', 'pkg2']}
Plain text

برای دانلود پروژه اولیه روی این لینک کلیک کنید.

حالا تهمینه نیاز دارد تا تابعی با نام sort_dependencies را پیاده‌سازی کند که در این تابع دیکشنری لیست تمامی پکیج‌ها و نام یک پکیج را به عنوان ورودی دریافت می‌کند و در صورتی که پکیج مورد نظر پیش‌نیاز داشت فقط لیست پیش‌نیازهای آن پکیج را برگرداند و در صورتی که پیش‌نیازی نداشت یک لیست خالی برگرداند.

برای مثال اگر به تابع sort_dependencies نام پکیج pkg4 را بدهند ابتدا باید بررسی کند که آیا پکیج شماره چهار پیش‌نیازی دارد یا خیر. در این مثال پیش‌نیازهای این پکیج برابر است با:

pkg4:[pkg1, pkg2]
Plain text

حال باید بررسی شود آیا این پیش‌نیاز‌ها، خودشان پیش‌نیاز دارند یا خیر. بعد از بررسی، پاسخ برابر است با:

[pkg3,pkg1,pkg2]
Plain text

البته پاسخ‌ زیر نیز قابل قبول است، در کل هر خروجی قابل نصبی از تابع sort_dependencies قابل قبول است:

[pkg3,pkg2,pkg1]
Plain text

حالت بالا بدون هیچ مشکلی نصب می‌شود زیرا پکیج شماره یک و دو نیاز به نصب پکیج شماره سه پیش از خود دارد و در هر دو خروجی بالا این مورد به درستی رعایت شده‌است. اما چهار خروجی زیر اشتباه است:

[pkg2,pkg3,pkg1]
Plain text
[pkg1,pkg3,pkg2]
Plain text
[pkg2,pkg1,pkg3]
Plain text
[pkg1,pkg2,pkg3]
Plain text

زیرا در این خروجی‌ها پکیج‌ها بدون ارور نصب نمی‌شوند و پیش نیاز پکیج یک به درستی رعایت نشده است.

نکات تکمیلی

  • فانکشن نباید پکیج تکراری در خروجی داشته باشد.
  • ترتیب پکیج ها به همان ترتیبی باشد که می بایست نصب شوند. توجه کنید هر خروجی که بتوان با آن بدون مشکل پکیج ها را نصب کرد، قابل قبول است و مسئله به ازای هر ورودی چندین جواب صحیح دارد.
  • نام تابع sort_dependencies در فایل solution.py به هیچ عنوان نباید تغییر کند.
  • خروجی می بایست لیستی از نوع رشته باشد.

نحوه ارسال جواب

در این تمرین شما تنها مجاز به تغییر محتوای فایل solution.py هستید. تغییرات خود را روی این فایل اعمال کنید و پس از تکمیل آن فایل کامل شده solution.py را ارسال کنید.


ارسال پاسخ برای این سؤال
فایلی انتخاب نشده است.