Assignment1.pdf

‫سپهر اسدی‪ ،‬کامیار اللهوردی‬
‫آشنایی اولیه با مفهوم زبانهای تابعی‬
‫مهلت تحویل‪ :‬یکشنبه ‪ 11‬مهر ‪1311‬‬
‫هدف این تمرین آشنایی بسیار مختصر با مفهوم زبانهای تابعی و نوشتن چند برنامهی ساده با یکی از این زبانها است‪.‬‬
‫در این تمرین شما میبایست دو فراکتال مشهور برفدانه کخ و مثلث سرپینسکی را رسم کنید‪ .‬برای پاسخ دهی به این‬
‫تمرین شما باید از ویژگیهای تابعی زبان ‪ slideshow‬برای کشیدن این دو فراکتال استفاده کنید‪.‬‬
‫برای این منظور‪ ،‬ابتدا در خط اول برنامه خود دستور زیر را وارد کنید‪:‬‬
‫‪#lang slideshow‬‬
‫همچنین توابع زیر به شما در کشیدن شکلها کمک خواهند کرد‪:‬‬
‫)‪(line x‬‬
‫)‪(blank x‬‬
‫)‪(hb-append img1 img2‬‬
‫)‪(cb-superimpose img1 img2‬‬
‫برای آشنایی بیشتر با توابع کشیدن در این زبان‪ ،‬میتوانید آموختار زیر را مطالعه کنید‪:‬‬
‫‪http://docs.racket-lang.org/quick/index.html‬‬
‫‪1‬‬
‫سؤال ‪ : 1‬برفدانهی کخ‬
‫هدف این سؤال پیادهسازی یک تابع به نام ‪ snowflake‬است‪:‬‬
‫)‪(snowflake n‬‬
‫این تابع برفدانه کخ مرحله ‪n‬ام را میسازد‪ .‬اندازهی برفدانه دلخواه است‪ ،‬اما باید به اندازهی کافی قابل دیدن باشد‪.‬‬
‫برای مثال‪:‬‬
‫)‪(snowflake 7‬‬
‫)‪(snowflake 3‬‬
‫)‪(snowflake 1‬‬
‫برای اطالعات بیشتر در مورد برفدانه کخ میتوانید به آدرس زیر مراجعه کنید‪:‬‬
‫‪http://en.wikipedia.org/wiki/Koch_snowflake‬‬
‫‪2‬‬
‫سؤال ‪ : 2‬مثلث سرپینسکی‬
‫در این سؤال شما باید تابع زیر را پیادهسازی کنید‪:‬‬
‫)‪(sierpinski n‬‬
‫این تابع مثلث سرپینسکی مرحله ‪n‬ام را میسازد و مانند سؤال قبل اندازهها دلخواه است‪.‬‬
‫مثال‪:‬‬
‫)‪(sierpinski 7‬‬
‫)‪(sierpinski 3‬‬
‫)‪(sierpinski 1‬‬
‫برای اطالعات بیشتر در مورد مثلث سرپینسکی به آدرس زیر مراجعه کنید‪:‬‬
‫‪http://en.wikipedia.org/wiki/Sierpinski_triangle‬‬
‫‪3‬‬
‫نکات کلی‬
‫‪ ‬تمرین خود را حداکثر تا ساعت ‪ 23:31‬تاریخ ‪ 11‬مهر میتوانید با ‪ subject‬شماره دانشجویی به آدرس‬
‫‪ [email protected]‬ارسال کنید‪ .‬در متن ایمیل نام و نام خانوادگی و شماره دانشجویی خود‬
‫و در صورت وجود نکتهی خاصی که برای تصحیح تمرینتان الزم است را بنویسید‪.‬‬
‫‪ ‬ارسالهای با تأخیر تصحیح نمیشوند‪ .‬از ارسال تمرین بعد از زمان مقرر بپرهیزید‪.‬‬
‫‪ ‬پاسخ به تمام سؤاالت را در یک فایل ‪ .rkt‬بنویسید و اسم فایل را شماره دانشجویی خود قرار دهید‪.‬‬
‫‪ ‬از کپی کردن تمرینها بپرهیزید‪ .‬در صورت مشاهده‪ ،‬طرفین نمرهای معادل منفی مجموع کل نمرهی تمرینها‬
‫خواهند گرفت‪.‬‬
‫‪ ‬جواب تمرینهای خود را به گروه نفرستید‪.‬‬
‫‪ ‬سواالت خود را در گروه مطرح کنید تا دوستانتان هم استفاده کنند‪.‬‬
‫‪4‬‬