اتصال

اتصال

دشوار

دستورالعمل‌ها

نتیجه‌ی یک بازی Hex / Polygon را محاسبه کنید.

بازی رومیزی انتزاعی‌ای که با نام‌های Hex / Polygon / CON-TAC-TIX شناخته می‌شود، از نظر قواعد بسیار ساده است، هرچند در عمل پیچیده است. دو بازیکن سنگ‌ها را روی متوازی‌الاضلاعی با خانه‌های شش‌ضلعی می‌گذارند. بازیکنی که زودتر سنگ‌هایش را به ضلع مقابل وصل کند، برنده می‌شود. چهار ضلع متوازی‌الاضلاع بین دو بازیکن تقسیم می‌شود (یعنی به یکی از بازیکنان یک ضلع و ضلع مستقیم مقابلش تعلق می‌گیرد و به بازیکن دیگر دو ضلع دیگر).

هدف شما ساختن برنامه‌ای است که با گرفتن یک نمایش ساده از صفحه، برنده (یا نبودن برنده) را محاسبه می‌کند. توجه کنید که لازم نیست همه‌ی بازی‌ها «منصفانه» باشند. (برای مثال، ممکن است تعداد سنگ‌های بازیکنان برابر نباشد یا عرض و ارتفاع صفحه‌ی بازی متفاوت باشد.)

صفحه‌ها به این شکل هستند:

. O . X .
 . X X O .
  O O O X .
   . X O X O
    X O O O X

«بازیکن O» از بالا به پایین بازی می‌کند و «بازیکن X» از چپ به راست. در مثال بالا، O از چپ به راست ارتباط برقرار کرده است، اما هیچ‌کس برنده نشده، چون O بالا و پایین را به هم وصل نکرده است.

دستورهای ویژه‌ی این ترک

ممکن است متوجه شوید که بعضی از Test caseها ناعادلانه به نظر می‌رسند. با این حال، ممکن است به‌حق چنین باشند. برای مثال، رایج است که به بازیکنان جوان یا مبتدی n مهره‌ی اضافه در موقعیت‌های ثابت روی تخته بدهند، در نتیجه ممکن است در بازی‌ای که در بقیه‌ی موارد کاملاً قانونی است، تعداد مهره‌های دو طرف برابر نباشد.

در هر صورت، این تمرین فقط به تعیین برنده‌ی بازی‌ای اهمیت می‌دهد که می‌تواند پارامترهای متنوعی داشته باشد، مثل طول تخته و مهره‌های اضافه. و به هیچ حالت دیگری از بازی علاقه‌ای ندارد؛ مثل اینکه چه کسی کجا حرکت کرد، چه زمانی، یا نوبت چه کسی است.

پس با دیدن آن بازی‌های به‌ظاهر ناعادلانه گیج نشوید.

ویرایش از طریق GitHub این لینک در پنجره یا زبانه‌ی جدیدی باز می‌شود
Scala Exercism

آماده‌اید اتصال را شروع کنید؟

در Exercism ثبت‌نام کنید تا Scala را همراه با 95 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.