A Drop of the Programming Sea

یک قطره از دریای برنامه نویسی: وبلاگ امیرحسین مهدی‌نژاد، برنامه‌نویس، مدرس برنامه‌نویسی و دانشجوی مهندسی کامپیوتر

A Drop of the Programming Sea

یک قطره از دریای برنامه نویسی: وبلاگ امیرحسین مهدی‌نژاد، برنامه‌نویس، مدرس برنامه‌نویسی و دانشجوی مهندسی کامپیوتر

● The Nim Game

يكشنبه, ۲۰ اسفند ۱۳۹۱، ۰۵:۱۳ ب.ظ

بازی دو نفره نیم 

تقریباً همه ی برنامه نویس ها با بازی نیم آشنا هستند، نیم یک بازی دو نفره و دارای استراتژی برد است که معمولاً با 3کپه از سنگ‌ریزه (یا لوبیا، چوب‌کبریت و...) انجام می‌شود. در هر نوبت هر بازیکن از یک کپه حداقل یک سنگ‌ریزه و حداکثر تمام کپه را بر می‌دارد. هر بازیکنی که نتواند در نوبت خود هیچ سنگ ریزه ای بردارد، باخته است.


روش کار این کد:

برنامه ابتدا تعداد سنگ ریزه های 3ستون را از کاربر دریافت می کند. هر بازیکن در نوبت خود ابتدا شماره ی ستون و تعداد سنگ ریزه هایی که از آن برمی دارد را وارد می کند (بعد از هر حرکت، بازیکن عوض می شود) و در نهایت کسی بازنده است که نتواند سنگ ریزه ای را انتخاب کند.


مثال: یک بازی نیم را با کپه‌های {۳، ۴ و ۵} تایی در نظر بگیرید.


A B C

|   |   |

۵ ۴ ۳ بازیکن۱ دو سنگ‌ریزه از A برمی‌دارد


۵ ۴ ۱ بازیکن۲ سه سنگ‌ریزه از C برمی‌دارد


۲ ۴ ۱ بازیکن۱ یکی از B برمی‌دارد


۲ ۳ ۱ بازیکن۲ یکی از B برمی‌دارد


۲ ۲ ۱ بازیکن۱ کپه A را برمی‌دارد


۲ ۲ ۰ بازیکن۲ یکی از B بر می‌دارد


۲ ۱ ۰ بازیکن۱ یکی از C برمی‌دارد


۱ ۱ ۰ بازیکن۲ یکی از B برمی‌دارد


۱ ۰ ۰ بازیکن۱ آخرین سنگ‌ریزه را برمی‌دارد و پیروز می‌شود.


// A Drop of the Programming Sea - adops.blog.ir #include <iostream> #include <cstdlib> using namespace std; int main() { int k,n,m,t,s; cin >> k >> n >> m; while(!0) { cin >> s >> t; if(s > 3) cerr << endl << "Just 3 cells\n\a" << endl; else { switch(s) { case 1: k-=t; break; case 2: n-=t; break; case 3: m-=t; break; default: break; } if(k<0 || n<0 || m<0) { cout << "LOSE!\a\a\a\a\a" << endl; break; } } } return 0; }

نظرات  (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی