یک تابع پایتون بنویسید که با استفاده از itertools.permutations همه ترتیبهای ممکن از یک لیست اعداد را تولید کند و برای هر ترتیب مجموع مجذورات عناصر را محاسبه کرده و فقط ترتیبهایی را که مجموع مجذورات آنها کمتر از یا برابر یک آستانه ورودیاند بازگرداند.
2.0 بازدید آخرین ویرایش در 202 روز قبل ساعت 02:58 0.0
برای حل این مسئله از ماژول itertools و تابع permutations استفاده کنید تا تمام جایگشتها را بهصورت یک مولد بسازید، سپس با استفاده از روشهای تابعی مانند map و filter یا comprehension مجموع مجذورات هر جایگشت را محاسبه و با آستانه مقایسه کنید. برای دادههای بزرگ از مولدها و generator expressions استفاده کنید تا حافظه کمتر مصرف شود؛ در مسائل عددی میتوانید برای سرعت از numpy بهره ببرید، اما نگارش ساده با تابع sum و یک عبارت generator برای سطح مبتدی مناسب است.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
استفاده از itertools.permutations برای تولید همه جایگشتهای لیست و محاسبه مجموع مجذورات هر جایگشت با یک عبارت ژنراتور مناسب است. برای بهینهسازی حافظه، نتایج را به صورت ژنراتور تولید کنید و از sum(x*x for x in perm) استفاده نمایید. اگر لیست دارای مقادیر تکراری است و میخواهید فقط جایگشتهای منحصر به فرد را برگردانید، میتوانید از یک مجموعه برای فیلتر کردن نتایج یا permutations بر پایه اندیسها استفاده کنید تا تکراریها حذف شوند. همچنین در ورودیهای بزرگ، پیچیدگی زمانی n! بسیار بالاست و ممکن است لازم باشد از pruning یا استفاده از numpy برای سرعت استفاده کنید.
گزارش