پايتون يک زبان برنامه نويسي سطح بالا است که ميتوان از آن به عنوان يک ماشين حساب بسيار پيشرفته هم استفاده کرد. براي مثال من پازل تشريفات عروسي را با استفاده از پايتون حل کردم تا هم کمي تمرين برنامه نويسي کرده باشم و هم اينکه شانس خودم را براي بردن جايزه اين هفته امتحان کنم. اولين قدم در حل يک مسئله درک کامل آن مسئله است، اجازه بديد ابتدا نگاهي به متن مسئله بياندازيم:
فرض کنيد براي برگزاري مراسم عروسي به تشريفات مجالس عروسي مراجعه ميکنيد. بستهايکه اين تشريفات ارائه ميدهد به اين شکل است که بهازاي هرکدام از مهمانان شما نفري 200 هزار تومان دريافت ميکند. البته، اين قيمت مشروط بر آن است که تعداد مهمانان شما حداقل 200 نفر باشند و درصورتيکه تعداد مهمانان کمتر از 200 نفر باشند، 15 درصد به مبلغ افزوده خواهد شد؛ يعني مثلا اگر 199 نفر مهمان داشته باشيد، بهجاي نفري 200 هزار تومان بايد نفري 230 هزار تومان پرداخت کنيد. در اين شرايط، چند حالت «غيرمنطقي» وجود دارد؟
مسئلهِ سادهاي است. منظور از حالت غير منطقي حالتي است که با دعوت مهمانان کمتر هزينه بيشتر از زماني باشد که مهمانان ما 200 نفر باشند. براي مثال در صورتي که تعداد مهمانان 200 نفر باشد با حسابِ اينکه هزينه هر مهمان 200 هزارتومانن است در مجموع بايد 40.000.000 تومان هزينه شود. اگر تعداد مهمانان 199 نفر باشد چون کمتر از 200 است 15 درصد به مبلغ اضافه ميشود ودر اين حالت هزينه هرمهمان برابر ميشود با 230 هزارتومان که در مجموع کل هزينه برابر ميشود با 46.000.000 تومان که به هيچ وجه منطقي نيست. حالا ما ميخواهيم ببينم که در کل چند حالت غير منطقي وجود دارد.
خوب روش حل بسيار ساده است. کافي است شما از 199 يکي يکي تعداد مهمانان را در مبلغ 230 هزارتومان ضرب کنيد و با مبلغ 40 ميليون توماني به ازاي 200 مهمان مقايسه کنيد، کار سادهاي است اما وقتگير هم است. ولي اگر شما پايتون بلد باشيد ميتوانيد در يکصدم ثانيه به جواب برسيد. حالا به شما توضيح ميدهم که من چطور با استفاده از پايتون به جواب رسيدم. حالتي که دويست مهمان داريم هزينه ما برابر ميشود با چهل ميليون تومان که من اين مبلغ را در متغير P1 ذخيره کردم. حالا ميماند ساخت يک حلقه که يکي يکي تعداد مهمانان را زياد کند و در عدد 230 هزارتومان ضرب کند و با مقدار P1 مقايسه کند. من ميتوانستم کارم را از عدد يک مهمان شروع کنم اما هيچ مجلس عروسي با يک مهمان برگزار نميشود، من از 100 شروع کردم و تا 199 جلو رفتم.
p1 = 40000 #200*200
p2 = 0
for i in range(1 , 100):
p2 = i * 230
من ميخواستم ببينم به ازاي چه تعداد مهمان هزينه غير منطقي ميشود و اين هزينه غير منطقي چقدر است پس اطلاعات را به صورت زير چاپ کردم.
if p2 >= p1:
print("for ",i," P1 is ",p1," and P2 is ",p2)
کدنويسي کمتر از 1 دقيقه وقت من را گرفت و مفسر پايتون در يک صدم ثانيه جواب را داد. اگر شاخص را 200 مهمان قرار بدهيم 25 حالت غير منطقي وجود دارد که اين حالتها در بازه 174 تا 199 مهمان به وجود ميآيد. فکر ميکنيد اگر ميخواستيم اين کار را با ماشين حسابهاي معمولي انجام بديم به ازاي 25 ضرب چه مقدار زمان لازم داشتيم؟!
در نهايت اميدوارم توانسته باشم به خوبي منظورم را برسانم. اگر دوست داشته باشيد ميتوانيد فايل اين کدها را از اينجا دانلود کنيد.
پينوشت:
گويا من مسئله را به اشتباه متوجه شدم. در واقعا تصور من بر اين بود که طراح ميخواهد بداند در چند حالت هزينه عروسي با دعوت ميهمانان کمتر از 200 نفر بيشتر ميشود. جواب صحيح را با توضيحات در اينجا بخوانيد.
درباره این سایت