Scheme2.pdf

‫زبان‌های‌بروامه‌وویسی‬
‫‪Scheme‬‬
‫تمریه‌عملی‌دوم‬
‫‪‬‬
‫جَاب توریيّا را تِ آدرس ‪ [email protected]‬تفرستید‪ .‬پاسخ تواهی سَاالت را در یک فایل‬
‫تا ًام ‪ = # ( STD#‬ضوارُ داًصجَیی) قرار دّید ٍ فایل هرتَطِ را در یک فایل‬
‫‪ zip‬تِ ًام ‪ = # ( STD#‬ضوارُ‬
‫داًصجَیی) فطردُ کٌید‪ ..‬هَضَع ایهیل ًیس تاید حتوا تِ فرهت ‪ STD#‬تاضد‪ .‬در صَرتی کِ توریي را تِ صَرت گرٍّی‬
‫اًجام هیدّید ضوارُ داًصجَیی ّنگرٍُ خَد را در هتي ایهیل تٌَیسید‪.‬‬
‫‪‬‬
‫هْلت ارسال ایي توریي تا ساعت‌‪‌۲۳:۵۹‬روز‌‪۱۲‬ام‌آبان است‪.‬‬
‫‪‬‬
‫توریيّا تِ صَرت خَدکار تصحیح هیضَد‪ .‬لطفا تِ ّیچ عٌَاى اسن تاتعّا ٍ تعداد ٍ ترتیة پاراهترّای ٍرٍدی را تغییر‬
‫ًدّید‪ .‬در صَرتی کِ در توریي قثل اسن یا پاراهترّا را تغییر دادُاید تا ایهیل جدیدی تر رٍی ایهیل توریي قثلی‬
‫تغییراتی کِ اًجام دادُاید را اعالم کٌید‪.‬‬
‫‪‬‬
‫ّرگًَِ سَال در هَرد توریي را تِ آدرس ‪ [email protected]‬تفرستید‪.‬‬
‫‪‌.۱‬وظریه‌ی‌اعداد‌در‌‪‌Scheme‬‬
‫‪ ‬تاتع ‪ lcm‬را تٌَیسید کِ ک‪.‬م‪.‬م دٍ عدد را هحاسثِ هیکٌد‪ .‬در صَرتی کِ تاتع ضوا ترای اعداد تسرگ‬
‫(در حد یک هیلیارد) ّن سریع کار کٌد ًورُی اضافی خَاّید گرفت‪ .‬هثال‪:‬‬
‫‪(lcm 15 21) -> 105‬‬
‫‪ ‬تاتع ‪ is-complete‬را تٌَیسید کِ یک عدد تِ عٌَاى ٍرٍدی هیگیرد ٍ در صَرتی کِ آى عدد کاهل‬
‫تاضد هقدار ‪ ٍ true‬در غیر ایي صَرت هقدار ‪ false‬ترهیگرداًد‪ .‬عدد کاهل عددی است کِ حاصلجوع‬
‫هقسَمعلیِّایص (تِ جس خَدش) تا خَدش تراتر تاضد‪ .‬هثال‪:‬‬
‫‪(is-complete 28) -> true‬‬
‫‪(is-complete 20) -> false‬‬
‫‪‌.۲‬اعمال‌پیش‌رفته‌روی‌لیست‌‬
‫‪ ‬تاتع ‪ filter‬را تٌَیسید کِ یک تاتع یک هتغیرُ ٍ یک لیست را تِ عٌَاى ٍرٍدی هیگیرد ٍ اعضایی از‬
‫لیست کِ از فیلتر دادُضدُ عثَر هیکٌٌد را در یک لیست ترهیگرداًد‪ .‬هثال‪:‬‬
‫)‪(filter (lambda (x) (> x 10)) ‘(1 12 4 11 9)) -> ‘(12 11‬‬
‫‪ ‬تاتع ‪ map‬را تٌَیسید کِ یک تاتع یک هتغیرُ ٍ یک لیست را تِ عٌَاى ٍرٍدی هیگیرد ٍ تاتع دادُضدُ‬
‫را تر رٍی ّوِی اعضای لیست اجرا کٌد‪ .‬هثال‪:‬‬
‫)‪(map (lambda (x) (* 2 x)) ‘(1 2 3 4)) -> ‘(2 4 6 8‬‬
‫‪‌.۳‬مرتب‌سازی‌سریع‌‬
‫تاتع ‪ quick-sort‬را پیادُسازی کٌید کِ تِ عٌَاى ٍرٍدی یک لیست هیگیرد هیگیرد ٍ هرتةضدُی آى را‬
‫ترهیگرداًد‪ .‬در صَرتی کِ تاتع ضوا تِ طَر کلی (هستقل از ترتیة اعداد ٍرٍدی) سریع کار کٌد ًورُی اهتیازی‬
‫خَاّید گرفت‪( .‬تِ عٌَاى راًُوایی هیتَاًید از تاتعّای ‪ let ٍ random‬استفادُ کٌید)‪ .‬هثال‪:‬‬
‫)‪(quick-sort ‘(4 2 3 1 5)) -> ‘(1 2 3 4 5‬‬