در ایام شیوع کرونا مدارس زیادی تصمیم گرفتند بعد از اتمام ایام قرنطینه برای جبران جاماندگی ناشی از آموزش مجازی، آموزش حضوری خود را به صورت شبانه روزی و بدون هیچ گونه تعطیلاتی دایر کنند! مدیران مدارس تصمیم گرفتند که تمامی روزهای تعطیل از جمله جمعهها اساتید سر کلاس حضور پیدا کنند.
هر معلمی موظف است که با یک دوره تناوب ثابت در مدرسه حضور پیدا کند. به طور مثال آقای کوشکی دبیر درس ریاضی موظف است هر دو روز یک بار و آقای زمانی دبیر ادبیات موظف است هر سه روز یک بار به مدرسه بیاید. اولین روز سال تحصیلی (اول مهر) تمامی معلمها به مدرسه میآیند و کار خود را از آن روز شروع میکنند. دانشآموزان میخواهند بفهمند اولین روزی که دوباره همه معلمها با هم جمع میشوند؛ روز چندم ماه است؟ (همهی ماهها سی روزه هستند.)
در اولین خط ورودی (تعداد معلمها) وارد میشود.
در هر خط از خط بعدی، دوره تناوب حضور معلمها وارد میشود.
در تنها خط خروجی، اولین روز حضور دوبارهی همه معلمها نمایش داده میشود.
این مدرسه تنها دو معلم دارد که معلم اول هر ۶ روز یک بار و معلم دوم هر ۷ روز یک بار به مدرسه میآیند. این دو معلم پس از اولین روز مدارس، ۴۲ روز بعد در ۴۳امین روز سال تحصیلی دوباره با هم به مدرسه میآیند و آن روز ۱۳ام ماه است. بنابراین در خروجی عدد ۱۳ چاپ میشود.
این مدرسه چهار معلم دارد که هر معلم به ترتیب هر ۲ روز یک بار، هر ۴ روز یک بار، هر ۱۳ روز یکبار و هر ۱۲ روز یک بار به مدرسه میآیند. این معلمها پس از اولین روز مدارس، ۱۵۶ روز بعد در ۱۵۷امین روز تحصیلی دوباره با هم به مدرسه میآیند و آن روز ۷ام ماه است. بنابراین در خروجی عدد ۷ چاپ میشود.
در این سوال شما میبایست بازی اتللو را پیادهسازی کنید.
این بازی به صورت دو نفره انجام میشود. ابتدا چهار مهره مطابق شکل در وسط صفحه قرار میگیرند. مهرهی تیره بازی را آغاز میکند. هر یک از دو بازیکن به نوبت یک مهره (از طرف رنگ خود) را در صفحه قرار میدهند به طوری که حداقل یکی از مهرههای حریف را در حداقل یکی از راستاهای هشتگانه محاصره کند. سپس تمامی مهرههای محاصرهشده در هر یک از راستاهای هشتگانه تغییر رنگ میدهند.
زمانی که هیچ یک از بازیکنان حرکتی نداشته باشند؛ بازی به پایان میرسد و بازیکنی که تعداد مهرههای بیشتری روی صفحه داشته باشد؛ برنده است.
نکته ۱: تنها مهرههایی را میتوان تصاحب کرد که بین مهرهی جدید و مهرههای قبلی محاصره شده باشند یعنی مهرههایی که در جریان بازی در بین مهرههای ناهمرنگ قرار میگیرند؛ تغییر رنگ نمیدهند.
نکته ۲: در صورتی یکی از بازیکنان در نوبت خود، مکانی برای محاصره حریف نداشته باشد و نتواند حتی یک مهره او را محاصره کند؛ نوبت خود را از دست میدهد و حرکت به حریف واگذار میشود تا زمانی که امکان محاصره برایش ایجاد شود.
در اولین خط ورودی (مجموع تعداد حرکتهای بازیکن اول و دوم) وارد میشود.
در خط دوم، حرکت بازیکنان با یک فاصله از هم وارد میشود. هر حرکت شامل رشتهی دو کاراکتری است که کاراکتر اول یکی از حروف تا و کاراکتر دوم عددی بین ۱ تا ۸ خواهد بود. (تضمین میشود که تمامی حرکتها در ورودی مجاز هستند.)
در تنها خط خروجی به ترتیب امتیاز فعلی بازیکن اول و دوم با یک فاصله از هم نمایش داده میشود.
در تنها خط خروجی ابتدا امتیاز بازیکن اول (۶ مهرهی تیره) و سپس امتیاز بازیکن دوم (۱ مهرهی روشن) وارد میشود.
در تنها خط خروجی ابتدا امتیاز بازیکن اول (۴ مهرهی تیره) و سپس امتیاز بازیکن دوم (۴ مهرهی روشن) وارد میشود.
یک زمین موزاییک کاری شدهی پهناور داریم و بچههای محل میخواهند در آن بازی کنند. مشکلی که وجود دارد این است که بعضی از این موزاییکها شکسته شده و بچهها میترسند که پایشان گیر کند و آسیب ببینند. آنها تصمیم گرفتند که یک زیر مستطیل به تعداد موزاییکهای مشخص از این زمین را انتخاب کنند که در آن هیچ موزاییک خرابی وجود نداشته باشد. حال شما باید به آنها بگویید برای این کار چند انتخاب دارند؟
خروجی تنها شامل یک عدد است که تعداد زیر مستطیلهای با تعداد موزاییک را نمایش میدهد.
با توجه به تصویر و جدول زیر تعداد زمینهای بازی مستطیل شکل با ۴ موزاییک، ۱۲ تاست. بنابراین عدد ۱۲ در خروجی چاپ میشود.
موزاییکهای تحت پوشش | |
---|---|
زمین ۱ | ۱ ۲ ۸ ۹ |
زمین ۲ | ۳ ۴ ۱۱ ۱۲ |
زمین ۳ | ۴ ۵ ۱۲ ۱۳ |
زمین ۴ | ۵ ۶ ۱۳ ۱۴ |
زمین ۵ | ۶ ۷ ۱۴ ۱۵ |
زمین ۶ | ۳ ۴ ۵ ۶ |
زمین ۷ | ۴ ۵ ۶ ۷ |
زمین ۸ | ۸ ۹ ۱۰ ۱۱ |
زمین ۹ | ۹ ۱۰ ۱۱ ۱۲ |
زمین ۱۰ | ۱۰ ۱۱ ۱۲ ۱۳ |
زمین ۱۱ | ۱۱ ۱۲ ۱۳ ۱۴ |
زمین ۱۲ | ۱۲ ۱۳ ۱۴ ۱۵ |
با توجه به تصویر و جدول زیر تعداد زمینهای بازی مستطیل شکل با ۲ موزاییک، ۱۱ تاست. بنابراین عدد ۱۱ در خروجی چاپ میشود.
موزاییکهای تحت پوشش | |
---|---|
زمین ۱ | ۱ ۲ |
زمین ۲ | ۲ ۳ |
زمین ۳ | ۲ ۸ |
زمین ۴ | ۷ ۱۱ |
زمین ۵ | ۱۱ ۱۲ |
زمین ۶ | ۹ ۱۴ |
زمین ۷ | ۱۳ ۱۴ |
زمین ۸ | ۱۴ ۱۵ |
زمین ۹ | ۴ ۵ |
زمین ۱۰ | ۵ ۶ |
زمین ۱۱ | ۵ ۱۰ |
مسئلهی قبل را در نظر بگیرید. یک زمین بازی را خوب مینامیم که علاوه بر اینکه مستطیل شکل باشد و در آن هیچ موزاییک خرابی وجود نداشته باشد؛ از هیچ یک از اضلاعش قابل گسترش نباشد. این بار از شما میخواهیم تعداد زمینهای خوب را بیابید.
توجه: برخلاف سوال قبل، در ورودی این سوال (تعداد موزاییکهای زمین انتخابی) نداریم.
خروجی تنها شامل یک عدد است که تعداد زمینهای خوب را نمایش میدهد.
با توجه به تصویر و جدول زیر تعداد زمینهای خوب ۳ تاست. بنابراین عدد ۳ در خروجی چاپ میشود.
موزاییکهای تحت پوشش | |
---|---|
زمین خوب ۱ | ۱ ۲ ۸ ۹ |
زمین خوب ۲ | ۳ ۴ ۵ ۶ ۷ ۱۱ ۱۲ ۱۳ ۱۴ ۱۵ |
زمین خوب ۳ | ۸ ۹ ۱۰ ۱۱ ۱۲ ۱۳ ۱۴ ۱۵ |
با توجه به تصویر و جدول زیر تعداد زمینهای خوب ۹ تاست. بنابراین عدد ۹ در خروجی چاپ میشود.
موزاییکهای تحت پوشش | |
---|---|
زمین خوب ۱ | ۱ ۲ ۳ |
زمین خوب ۲ | ۲ ۸ |
زمین خوب ۳ | ۷ ۱۱ |
زمین خوب ۴ | ۱۱ ۱۲ |
زمین خوب ۵ | ۱۳ ۱۴ ۱۵ |
زمین خوب ۶ | ۹ ۱۴ |
زمین خوب ۷ | ۴ ۵ ۶ |
زمین خوب ۸ | ۵ ۱۰ |
زمین خوب ۹ | ۱۶ |
یکی از بهروزترین و پیشرفتهترین روشهای تحلیل داده و خلق ارزش با استفاده از دادهها، تحلیل داده مبتنی بر گراف است. در این روش همهی دادههای موجود در مسئله به صورت راسها و یالهای یک گراف بزرگ مدل میشوند و جواب سوالات تحلیلگر داده با اجرای الگوریتمهای پرکاربرد گراف آماده میشود.
یکی از این الگوریتمها یافتن تمام مسیرهای موجود بین دو راس مشخص از گراف است که کاربرد وسیعی در تحلیل دادههای مالی دارد. مثالهای عملیاتی زیر را در نظر بگیرید:
مثال اول: یک مزایده برگزار شده است که نتیجه آن واگذاری یک ملک/کارخانه به قیمت پایینتر از ارزش واقعی بوده، میخواهیم در مورد احتمال رد و بدل شدن رشوه بین برنده مزایده و برگزار کنندگان تحقیق کنیم. اگر رشوهدهنده با چند واسطه رشوه داده باشد تشخیص آن با روشهای معمولی سخت است اما با الگوریتم یافتن مسیرها میتوان تمام مسیرهای انتقال پول بین رشوهدهنده و رشوهگیرنده به طول ۳، ۴ یا حتی بیشتر را روی گراف روابط مالی در چند ثانیه به دست آورد. در صورت وجود حداقل یک مسیر احتمال وجود تبانی در این مزایده بالاست.
مثال دوم: یکی از حوزههای پرکاربرد تحلیل دادهی گرافی، حوزهی بانکی است. یکی از مسائل آن احتمال تبانی وام گیرنده با کارمندان شعبهی بانک است به این صورت که وام گیرنده ممکن است با پرداخت رشوه به کارمند بانک بتواند وام کلانی را بگیرد در صورتی که شرایط دریافت آن وام را نداشته (مثلاً از بدهکاران بانکی بوده و قسطهای وامهای کلان قبلی را هنوز تسویه نکرده است) واحد بازرسی بانک با اجرای الگوریتم یافتن مسیرها روی تراکنشها و خرید و فروشهای وام گیرنده و کارمندان بانکی که از آن وام گرفته است به راحتی میتواند به وجود رابطهی مالی (حتی با چندین واسطه) پی ببرد و جلوی ادامهی تخلفات را بگیرد.
در این مسئله یک گراف (جهتدار یا بدون جهت) به همراه یک راس مبدا و یک راس مقصد به شما داده میشود و از شما خواسته میشود تمام مسیرهای از مبدا تا مقصد که طولشان در بازهی مشخصی قرار دارد، را بیابید. سپس تعداد و شناسهی تمام یالهای موجود در این مسیرها را در خروجی چاپ کنید.
توجه: برنامهی شما حتما باید به زبان باشد و شما مجاز به ایجاد هر گونه کلاس، تابع، اینترفیس و ... هستید.
در خط اول خروجی تعداد تمام یالهایی که در مسیرهایی به کمترین و بیشترین طول داده شده وجود دارند نمایش داده میشوند. در خط دوم خروجی شناسهی تمام یالهای مذکور به ترتیب (از کوچک به بزرگ) با یک فاصله از هم نمایش داده میشوند.
با توجه به جدول زیر تعداد مسیر به حداقل طول ۲ و حداکثر طول ۴، ۲ تاست و یالهای ۲، ۳ و ۴ در آن وجود دارند. بنابراین عدد ۳ (تعداد یالها) و شناسهی یالها در خروجی چاپ میشود.
یالهای موجود | |
---|---|
مسیر ۱ | ۳ ۲ |
مسیر ۲ | ۴ ۲ |
با توجه به جهتدار بودن گراف هیچ مسیری از مبدا (راس ۱) به مقصد (راس ۳) به حداقل طول ۲ و حداکثر طول ۵، وجود ندارد. بنابراین عدد ۰ در خروجی چاپ میشود.
مالیات اصلیترین راه تامین درآمد بسیاری از کشورها از جمله کشورهای پیشرفته است و هزینهی بسیاری از پروژههای زیرساختی، عمرانی و حتی حقوق کارمندان دولت، معلمان و ... از طریق دریافت مالیات از کسبه، شرکتها و ... تامین میشود. فرار مالیاتی به زبان ساده یعنی مالیاتدهنده تلاش کند کمتر از میزان واقعی مالیات پرداخت کند. مثلاً فرض کنید یک کاسب در طول سال، ۱۰۰ میلیون تومان سود (مجموع درآمد منهای هزینهها) داشته و با نرخ ۱۵ درصد باید ۱۵ میلیون تومان مالیات بپردازد. حالا اگر این کاسب تلاش کند با روشهای مختلف میزان سود اصلی خود را کمتر نشان دهد، مالیات کمتری نیز میپردازد. به این عمل فرار مالیاتی میگوییم.
در حال حاضر فرار مالیاتی یک چالش بزرگ در کشورهای دنیاست، گزارشهای مختلف نشان میدهد در ایران خودمان سالانه بین ۴۰ تا ۱۵۰ هزار میلیارد تومان فرار مالیاتی داریم. یکی از موثرترین راههای جلوگیری از فرار مالیاتی در برخی از کشورهای پیشرفته تحلیل دادههای مالی به صورت گراف است. به این صورت که تمام دادههای مالی شامل تراکنشها، خرید و فروشها و مالکیتها را به صورت راسهای گراف اصلی (گرافی بسیار بزرگ) مدل میکنیم و انواع شکلهایی که احتمال دارد فرار مالیاتی باشد را به صورت گراف الگو (گرافی بسیار کوچک) مدل میکنیم. سپس در گراف اصلی زیرگرافهایی که شبیه گراف الگوی فرار مالیاتی باشد را پیدا میکنیم.
مثالهای از تخلفات که به راحتی قابل تبدیل به گرافهای الگو هستند:
در ادامه حالت ساده شدهی این مسئله آورده شده، که حل آن میتواند مقدمهای بر حل مسئلهی فرار مالیاتی باشد، پس تلاش خود را به کار ببرید، این گوی و این میدان!
در این مسئله یک گراف اصلی و یک گراف الگو به شما داده میشود. حال شما میبایست تعداد زیر گرافهای موجود در گراف اصلی را پیدا کنید به طوری که این زیرگرافها مشابه گراف الگو باشند. (برای فهم بهتر مسئله به شکلهای پایین صفحه مراجعه کنید)
توجه: برنامهی شما حتما باید به زبان باشد و شما مجاز به ایجاد هر گونه کلاس، تابع، اینترفیس و ... هستید.
خروجی تنها شامل یک عدد است که تعداد زیرگرافهای موجود از گراف اصلی (شبیه به گراف الگو) را نشان میدهد.
گراف اصلی نمونه ۱:
گراف الگو نمونه ۱:
با توجه به جدول زیر تعداد زیرگرافهای مشابه گراف الگو در گراف اصلی، ۵ تاست، بنابراین عدد ۵ در خروجی چاپ میشود.
راس A | راس B | راس C | |
---|---|---|---|
زیرگراف ۱ | راس ۱ | راس ۲ | راس ۳ |
زیرگراف ۲ | راس ۱ | راس ۲ | راس ۴ |
زیرگراف ۳ | راس ۱ | راس ۲ | راس ۵ |
زیرگراف ۴ | راس ۱ | راس ۵ | راس ۳ |
زیرگراف ۵ | راس ۱ | راس ۵ | راس ۴ |
گراف اصلی نمونه ۲:
گراف الگو نمونه ۲:
با توجه به جدول زیر تعداد زیرگرافهای مشابه گراف الگو در گراف اصلی، ۱۲ تاست، بنابراین عدد ۱۲ در خروجی چاپ میشود.
راس A | راس B | راس C | |
---|---|---|---|
زیرگراف ۱ | راس ۱ | راس ۲ | راس ۳ |
زیرگراف ۲ | راس ۱ | راس ۲ | راس ۴ |
زیرگراف ۳ | راس ۱ | راس ۲ | راس ۵ |
زیرگراف ۴ | راس ۱ | راس ۳ | راس ۲ |
زیرگراف ۵ | راس ۱ | راس ۳ | راس ۴ |
زیرگراف ۶ | راس ۱ | راس ۳ | راس ۵ |
زیرگراف ۷ | راس ۱ | راس ۴ | راس ۲ |
زیرگراف ۸ | راس ۱ | راس ۴ | راس ۳ |
زیرگراف ۹ | راس ۱ | راس ۴ | راس ۵ |
زیرگراف ۱۰ | راس ۱ | راس ۵ | راس ۲ |
زیرگراف ۱۱ | راس ۱ | راس ۵ | راس ۳ |
زیرگراف ۱۲ | راس ۱ | راس ۵ | راس ۴ |
گراف اصلی نمونه ۳:
گراف الگو نمونه ۳:
با توجه به جدول زیر تعداد زیرگرافهای مشابه گراف الگو در گراف اصلی، ۲ تاست، بنابراین عدد ۲ در خروجی چاپ میشود.
راس A | راس B | |
---|---|---|
زیرگراف ۱ | راس ۱ | راس ۲ |
زیرگراف ۲ | راس ۲ | راس ۱ |