از زاینده‌رود تا می‌سی‌سی‌پی: مسا‌ئل چهارمین مسابقه پایتون اصفهان

چهارمین دوره مسابقات دانش‌آموزی زبان برنامه‌نویسی پایتون در ۲ شهریورماه ۹۷ در خانه ریاضیات اصفهان برگزار شد. در این خواندنی، به مسائل این مسابقه می‌پردازیم.

گزارش تصویری برگزاری مسابقه را می‌توانید اینجا بخوانید.

رود می‌سی‌سی‌پی (Mississippi River) موضوع مسابقه برنامه‌نویسی امسال بود. تیم اول مسابقه (بهار دیبایی‌نیا و نرگس منتظری) موفق شد همه مسائل را در زمان ۲ ساعت حل و نمره کامل ۱۰۰ را کسب کند. برنامه‌های جواب به زودی به این خواندنی افزوده خواهد شد.

مساله‌های مسابقه از سه بخش جدا تشکیل شده‌اند:

بخش اول: ابتدا برنامه‌هایی برای پیدا کردن حجم آب یکی از دریاچه‌های نزدیک سرچشمه رود به نام نوکومیس می‌نویسی.

بخش دوم: در این بخش برنامه‌هایی خواهی نوشت که جمعیت ماهی‌های دریاچه را پیدا کنند.

بخش سوم: در آخر به شهر بوتن‌روژ، در نزدیکی محل پیوستن رود به دریا می‌رویم. برنامه‌هایی می‌نویسی که از داده‌های واقعی رود استفاده می‌کنند.

این فایل را دانلود کن و برنامه‌هایت را در آن بنویس.

بخش اول

عمق و حجم آب دریاچه نوکومیس در طول سال تغییر می‌کند.

mississipi2

بین عمق (d) و حجم (v) دریاچه رابطه زیر وجود دارد:

    \[ v = 8000d^2+50000d \]

الان شروع سال و عمق دریاچه 5 متر است.

1A. برنامه‌ای بنویس که عمق دریاچه را بگیرد و حجم آن را پیدا کند.

1B. هر روز 20000 متر مکعب آب وارد دریاچه می‌شود.

برنامه‌ای بنویس که یک روز از سال (day) را بگیرد و حجم آب دریاچه در آن روز را پیدا کند. day یک عدد بین 1 تا 365 است.

1C. در کنار دریاچه یک کارخانه هست که هر روز 4000 متر مکعب آب مصرف می‌کند. این را هم حالا در نظر بگیر.

1D. در شهر 600 خانه هست که آب آنها از دریاچه تامین می‌شود. هر خانه هر روز 10 متر مکعب آب مصرف می‌کند. این را هم حالا در نظر بگیر.

1E. مقداری از حجم دریاچه هر روز به دلیل بخار شدن آب از دست می‌رود. این مقدار برای هر روز برابر با 0.5 درصد از حجم آب دریاچه در روز قبل است. این را هم حالا در نظر بگیر.

بخش دوم

mississipi3

هر روز تعدادی ماهی وارد دریاچه‌ می‌شوند. الان که شروع سال است، 2000 ماهی در دریاچه وجود دارند.

2A. حالت اول: هر روز 30 ماهی جدید وارد دریاچه می‌شوند.

برنامه‌ای بنویس که یک روز از سال (day) را بگیرد و جمعیت ماهی‌های دریاچه در آن روز (population) را پیدا کند. day یک عدد بین 1 تا 365 است.

2B. حالت دوم: هر روز 30 ماهی جدید وارد دریاچه می‌شوند. این تعداد هر روز ۲ تا افزایش می‌یابد

برنامه‌ای بنویس که یک روز از سال را بگیرد و جمعیت ماهی‌های دریاچه در آن روز را پیدا کند.

2C. حالت سوم: در روز‌هایی که جمعیت ماهی‌های دریاچه بزرگتر از 10000 تا باشد، ما‌هیگیرها اجازه دارند که 120 تا از ماهی‌ها را در آن روز صید کنند. این را هم حالا در نظر بگیر.

2D. از روز 200م سال (آغاز پاییز)، هر روز 2 پرنده ماهیخوار جدید به دریاچه می‌آیند. در روز اول سال هیچ پرنده‌ ماهی‌خواری در دریاچه نیست.

برنامه‌ای بنویس که یک روز از سال را بگیرد و جمعیت پرنده‌های ماهیخوار دریاچه در آن روز را پیدا کند.

2E. حالت چهارم: هر پرنده در سوال 1D در هر روز 2 ماهی می‌خورد. این را هم حالا در نظر بگیر.

برنامه‌ای بنویس که یک روز از سال را بگیرد و جمعیت ماهی‌های دریاچه در آن روز را پیدا کند.

بخش سوم

رود می‌سی‌سی‌پی پس از طی چندین هزار کیلومتر، در ایالت لوئیزیانا به خلیج مکزیک می‌ریزد.

mississipi4

ما داده روزانه رود می‌سی‌سی‌پی در شهر بتن‌روژ را از سازمان زمین‌شناسی (USGS) تهیه کرده‌ایم.

این داده واقعی شامل مقدار جریان (متر مکعب بر ثانیه) و عمق رود (متر) در هر روز در ۱۰ سال گذشته است.

depth flow day month year
7.00 16118 1 1 2008
6.75 15607 2 1 2008
.

.

.

.

.

.

.

.

.

.

4.52 11079 1 1 2018

 

برنامه خواندن و تبدیل فایل داده یعنی data.csv به یک لیست از دیکشنری‌ها در فایل P3.py قرار داده شده است.

برای نمونه، این دیکشنری اول است:

{‘year’: 2008, ‘month’: 1, ‘day’: 1, ‘flow’: 16118.0, ‘depth’: 7.0}

3A. برنامه‌ای بنویس که یک روز (day)، ماه (month)، و سال (year) را بگیرد و عمق رود (depth) در آن تاریخ را پیدا کند.

3B. برنامه‌ای بنویس که بزرگترین مقدار جریانی (flow)  که در ۱۰ سال اتفاق افتاده را پیدا کند.

3C. برنامه‌ای بنویس که یک سال (year) را بگیرد و بزرگترین مقدار جریان (flow) در آن سال را پیدا کند.

3D. برنامه‌ای بنویس که یک ماه (month) را بگیرد و میانگین جریان (flow) آن ماه را پیدا کند.

3E. درصد افزایش روزانه‌ عمق از رابطه زیر به دست می‌آید:

    \[ v = 100 \frac {depth_{today}-depth_{yesterday}}{depth_{yesterday}} \]

برنامه‌ای بنویس که بزرگترین درصد افزایش روزانه‌ عمق که در ۱۰ سال اتفاق افتاده را پیدا کند.

3F. برنامه‌ای بنویس که مقدار تقریبی جریان در ۱۵ ژانویه ۲۰۱۸ را به دست آورد.

 

نظرات

  • ali

    عالی

  • mohammad

    خوشم اومد 🙂