یک تابع پایتون بنویسید که یک لیست از اعداد اعشاری میگیرد و برای هر عدد مقدار یک تابع عددی سنگین (مثلاً f(x) = x**3 + math.sin(x)) را محاسبه کرده و نتایج را در یک کش مبتنی بر builtin hash برای جلوگیری از محاسبات تکراری ذخیره و بازخوانی کند.
4.0 بازدید آخرین ویرایش در 220 روز قبل ساعت 02:13 0.0
برای حل، از یک دیکشنری بهعنوان کش استفاده کنید که کلید آن hashِ مقدار ورودیِ عددی (پس از گرد کردن به چند رقم اعشار) یا tuple از پارامترها باشد و مقدار آن نتیجه محاسبات سنگین. از ماژول math برای توابع عددی استفاده کنید و قبل از گرفتن hash مقدار عددی را round کنید تا به خاطر خطای اعشاری از هشهای متفاوت جلوگیری شود. این رویکرد ساده مناسب اسکریپتنویسی و افزایش کارایی در محاسبات عددی است.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
این روش با استفاده از یک دیکشنری بهعنوان کش برای جلوگیری از محاسبات تکراری خوب است. کلید کش را میتوانید با مقدار ورودی گرد شده(round(x, d)) هش کنید یا از یک tuple مانند (round(x, d),) استفاده کنید تا از خطای اعشاری و تداخلهای هش جلوگیری کنید. به خاطر دقت اعشاری، استفاده از round(x, d) را با مقدار d مناسب انجام دهید تا تعارضهای ناخواسته کاهش یابد. همچنین اندازه کش را مدیریت کنید تا از مصرف حافظه بیش از حد جلوگیری شود و در صورت نیاز از سیاست حذف قدیمیها یا محدودسازی اندازه کش استفاده کنید.
گزارش