A4V2.pdf

‫تمرین سری چهارم‬
‫تاریخ تحویل تمرین ‪ 16‬آذرماه‬
‫درس مبانی برنامه سازی‬
‫‪CE153‬‬
‫توضیحات اولیه‬
‫• آخرین مهلت تمرین‪ ،‬ساعت ‪ 23:59‬روز ‪ 16‬آذرماه است‪.‬‬
‫• بعد از اتمام زمان ارسال‪ ،‬تا ‪ 3‬روز میتوانید تمرین های خود را با‬
‫تاخیر ارسال نمایید‪.‬‬
‫• به ازای هر روز تاخیر ‪ %20‬از نمره شما کسر می شود‪.‬‬
‫• پاسخ تمامی سواالت را در سامانهی شریف جاج بارگذاری کنید‪،‬‬
‫نمرهی شش سوال اول را در جاج خواهید گرفت‪ .‬با این وجود‪،‬‬
‫نمرهی سوال هفتم در تحویل حضوری داده خواهد شد‪.‬‬
‫• نمرهی سوال هفتم بر اساس الگوریتم پیادهسازی و زمان پاسخ شما‬
‫داده خواهد شد‪.‬‬
‫• سواالت خود را در پیاتزا مطرح کنید‪.‬‬
‫سوال اول‬
‫‪ ‬برنامه ای بنویسید که با دریافت ‪ n‬به عنوان تعداد رووس گراف ساده و دریافت‬
‫یک ماتریس ‪ n‬در ‪ n‬متشکل از صفر و یک ها به عنوان ماتریس مجاورت یک‬
‫گراف ساده تعداد مولفه های هم بندی گراف را تشخیص بدهد‪ n( .‬حداکثر‬
‫‪)1000‬‬
‫‪( ‬راهنمایی‪:‬از تابع بازگشتی استفاده کنید‪).‬‬
‫خروجی نمونه‬
‫ورودی نمونه‬
‫‪4‬‬
‫‪0010‬‬
‫‪0000‬‬
‫‪1000‬‬
‫‪0000‬‬
‫‪3‬‬
‫سوال دوم‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫پشمک حوصلهاش سر رفته و میخواهد با خودش کمی بازی کند‪.‬‬
‫او یک نوار خانهخانه به طول 𝑛‪۲‬دارد (این نوار 𝑛‪۲‬خانه دارد) که در هر خانهآن‬
‫یک عدد نوشته شدهاست‪ .‬بازی او به اینصورت تعریف میشود که در هر مرحله‬
‫کارهای زیر را انجام میدهد‪:‬‬
‫نیمی از نوار را میبرد و دور میریزد‬
‫به اندازه بیشترین عدد از نوار دور ریختهشده به خودش امتیاز میدهد!‬
‫اگر هم از نوار تنها یک خانه باقیمانده بود‪ ،‬آن را نیز دور ریخته و بهاندازه عدد‬
‫آن امتیاز میگیرد‪.‬‬
‫حال پشمک میخواهد بداند که بیشترین امتیازی که میتواند بدست بیاورد‬
‫چقدر خواهد بود‪ .‬به او کمک کنید‪.‬‬
‫(راهنمایی‪:‬از تابع بازگشتی استفاده کنید)‬
‫ابتدا ‪n‬را به عنوان ورودی دریافت کنید‪،‬در خط بعدی عدد های درج شده روی‬
‫نوار را با یک فاصله بین هردو عدد وارد نمایید‪.‬‬
‫در خروجی هم امتیاز آن را چاپ نمایید‬
‫در ابتدا عدد ‪ n‬و سپس ‪ 2^n‬عدد برای هر‬
‫خانه نوار داده میشود‪ n( .‬حداکثر ‪)20‬‬
‫خروجی بیشترین امتیاز ممکن است‪.‬‬
‫ورودی نمونه‬
‫خروجی نمونه‬
‫‪3‬‬
‫‪12345678‬‬
‫‪25‬‬
‫سوال سوم‬
‫‪ ‬در این سوال می خواهیم اعداد بزرگ (تا ‪ 100‬رقم) را با استفاده از آرایه‬
‫(نگه داری هر رقم در یک خانه آرایه) با هم جمع و تفریق کنیم ‪ .‬به این‬
‫ترتیب‪ ،‬برنامه دو عدد را به ترتیب در دو خط اول ورودی می گیرد و در‬
‫خط سوم ‪ a‬یا ‪ s‬را به ترتیب به معنی جمع یا تفریق می گیرد و نتیجه را‬
‫چاپ کند‪.‬‬
‫ورودی نمونه‬
‫خروجی نمونه‬
‫‪11111111111111111111‬‬
‫‪22222222222222222222‬‬
‫‪a‬‬
‫‪33333333333333333333‬‬
‫سوال چهارم‬
‫‪ ‬برنامه ای بنویسید که جواب های یک دستگاه ‪ n‬معادله ‪ n‬مجهول را محاسبه‬
‫کند‪ .‬به این صورت که در خط اول ورودی ‪ n‬را به عنوان تعداد مجهوالت می‬
‫گیرد ودر ‪ n‬خط بعد‪ ،‬در هر خط ‪ n+1‬عدد به ترتیب به عنوان ضرایب مجهول‬
‫ها و عدد ثابت می گیرد‪ .‬سپس در یک خط خروجی مقدار هر مجهول را با‬
‫دقتی تا یک رقم اعشار چاپ می کند‪ n( .‬حداکثر ‪)100‬‬
‫‪( ‬راهنمایی‪ :‬می توانید از روش کرامر استفاده کنید‪).‬‬
‫ورودی نمونه‬
‫خروجی نمونه‬
‫‪3‬‬
‫‪2 3 7 12‬‬
‫‪3216‬‬
‫‪4 3 6 13‬‬
‫‪1.0 1.0 1.0 1.0‬‬
‫سوال پنجم‬
‫‪ ‬دنباله ای از اعداد مثبت و منفی داریم ‪ .‬می خواهیم زیر دنباله پیوستهای را‬
‫پیدا کنیم که مجموع اعداد در این زیر دنباله بین زیردنباله های موجود بیشترین‬
‫باشد‪ .‬در خط اول ورودی عدد ‪ n‬را به عنوان تعداد اعضای آرایه بگیرد و در خط‬
‫بعد اعضای آرایه را به ترتیب می گیرد‪ .‬سپس در تنها خط خروجی بزرگترین‬
‫مجموع از بین تمام زیر دنباله ها را چاپ می کند‪ n( .‬حداکثر ‪)10^6‬‬
‫ورودی نمونه‬
‫خروجی نمونه‬
‫‪6‬‬
‫‪1 2 -5 4 -3 2‬‬
‫‪4‬‬
‫ورودی نمونه‬
‫خروجی نمونه‬
‫‪4‬‬
‫‪-2 -3 -4 -1‬‬
‫‪-1‬‬
‫ورودی نمونه‬
‫خروجی نمونه‬
‫‪5‬‬
‫‪4 6 2 0 9‬‬
‫‪21‬‬
‫سوال ششم‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫برنامه ای بنویسید که یک رشته ی کاراکتری از عبارت جبری را از ورودی دریافت کرده و‬
‫انتگرال آن را به صورت یک رشته در خروجی چاپ کند‪.‬‬
‫فرمت کلی هر جمله از عبارت به صورت })‪{(sign) (number) x ^ (power‬میباشد که‬
‫طبیعتاً ممکن است قسمت هایی از آن در جمله موجود نباشد‪.‬‬
‫نکات‪:‬‬
‫‪-1‬ضریب جمالت رشته ورودی عدد صحیح و توان آنها اعداد صحیح نامنفی اند‪.‬‬
‫‪-2‬همانطور که می دانید جمالت با ضریب صفر‪ ،‬توان ‪ ،1‬عالمت مثبت جمله اول‪ ،‬ضریب ‪1 x‬با‬
‫توان صفر و ‪...‬نباید در رشته خروجی درج گردند) ‪.‬یعنی رشته خروجی طبق استاندارد ریاضی‬
‫باید ساده شده باشد(‬
‫‪-3‬ضریب جمالت خروجی به صورت عدد اعشاری تا دو رقم اعشار) شبیه نمونه (در رشته قرار‬
‫میگیرند)‪.‬صفرهای بی ارزش بعد از اعشار نباید چاپ گردند(‬
‫‪-3‬عبارت جبری حاصل را تا حد امکان ساده کنید)مثال به جای ‪x^5+x^5‬باید ‪2x^5‬نوشته‬
‫شود(‬
‫‪-۴‬عبارات نهایی باید به ترتیب درجه ‪x‬در رشته خروجی مرتب گردند‪.‬‬
‫‪ -5‬نیازی به جمع کردن ثابت ‪C‬با حاصل انتگرال نمیباشد‪.‬‬
‫طول رشته را حداکثر هزار بگیرید‪.‬‬
‫ورودی نمونه‬
‫خروجی نمونه‬
‫‪4x^2-5x^4+x-2‬‬
‫‪-x^5+1.33x^3+0.5x^2-2x‬‬
‫سوال هفتم‬
‫‪ ‬تا به حال ‪ 20۴8‬بازی کردین!؟ ‪‬‬
‫با مراجعه به این لینک میتونین بازی کنین!‬
‫این معما یک جدول ‪ ۴ * ۴‬دارد که بعضی از خانههای آن خالی هستند و در‬
‫بعضی دیگر از خانهها توانهایی از دو نوشته شدهاند‪ .‬در ابتدا تنها دو خانه با‬
‫عدد وجود دارد که به صورت تصادفی ‪ 2‬یا ‪ ۴‬هستند‪ .‬در هر قدم از بازی شما‬
‫یکی از جهتهای باال‪ ،‬پایین‪ ،‬چپ‪ ،‬یا راست به عنوان حرکت خود انتخاب‬
‫میکنید و همه ی خانههای پر تا جایی که بتوانند در آن جهت حرکت‬
‫میکنند‪ .‬در صورتی که در حین حرکت دو خانه با عدد یکسان به هم برخورد‬
‫کنند‪ ،‬در خانهی جدیدی با مقدار مجموع آن دو ادغام میشوند و مقدار‬
‫خانهی جدید به امتیاز شما اضافه میشود‪ .‬سپس تصادفی در یکی از‬
‫خانههای خالی یک ‪ 2‬یا ‪ ۴‬قرار میگیرد‪.‬‬
‫برای این سوال‪ ،‬شما باید دو مرحله را طی کنید!‬
‫در مرحلهی اول برنامهای بنویسید که بازی ‪ 20۴8‬را تحت کنسول پیاده کند‪ .‬قواعد این‬
‫بازی در قسمت قبل گفته شد‪.‬‬
‫سپس در مرحلهی دوم‪ ،‬برای برنامهای که در قسمت نوشتهاید‪ ،‬هوش مصنوعی بنویسید‪.‬‬
‫در این صورت‪ ،‬به جای اینکه هر بار کاربر‪ ،‬حرکت به چپ‪ ،‬راست‪ ،‬باال یا پایین را انتخاب‬
‫کند‪ ،‬کامپیوتر به صورت خودکار یکی از این حرکات را که منجر به امتیاز باالتر میشود‪،‬‬
‫انتخاب کند‪.‬‬
‫برای این کار الگوریتمهای مختلفی وجود دارد‪ .‬هدف این سوال‪ ،‬تمرکز بر روی‬
‫الگوریتمهای هوش مصنوعی و آشنایی با آنها به عنوان بخش مهمی از علوم کامپیوتر‬
‫است‪.‬‬
‫نحوهی نمرهدهی به این صورت است که هر برنامهای که در زمان کمتری به خانهی‬
‫‪ 20۴8‬برسد و در مرحلهی دوم‪ ،‬امتیاز بیشتری داشته باشد‪ ،‬نمره باالتری خواهد گرفت‬
‫و بنابراین‪ ،‬در تحویل حضوری‪ ،‬برنامهها ردهبندی شده و مطابق با آن‪ ،‬امتیاز خواهند‬
‫گرفت‪.‬‬
‫در پیاتزا‪ ،‬بخش جداگانهای برای این سوال درنظر گرفته شده است‪ .‬سواالت مربوط به‬
‫‪ 20۴8‬را در آن بخش مطرح کنید‪.‬‬