مسیرها
/
Python
Python
/
تمرین‌ها
/
کمک‌کننده‌ی سودوکوی قاتل
کمک‌کننده‌ی سودوکوی قاتل

کمک‌کننده‌ی سودوکوی قاتل

متوسط

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

یکی از دوستانتان در حال یادگیری حل «سودوکو قاتل» است (قواعدش را در ادامه می‌بینید)، اما برای تشخیص اینکه چه رقم‌هایی می‌توانند در یک «قفس» قرار بگیرند مشکل دارد. او از شما می‌خواهد که با نوشتن یک برنامه‌ی کوچک به او کمک کنید؛ برنامه‌ای که همه‌ی ترکیب‌های معتبر یک قفس مشخص را، با در نظر گرفتن محدودیت‌هایی که بر آن قفس اثر می‌گذارند، فهرست کند.

برای اینکه خروجی برنامه‌تان خوانا باشد، ترکیب‌هایی که برمی‌گرداند باید مرتب باشند.

قواعد سودوکو قاتل

  • قواعد استاندارد سودوکو برقرار است.
  • رقم‌های داخل یک قفس، که معمولاً با یک خط‌چین مشخص می‌شود، با هم برابر با عدد کوچکی هستند که در گوشه‌ی قفس نوشته شده است.
  • هر رقم در یک قفس فقط یک بار می‌تواند بیاید.

برای توضیح مفصل‌تر، این راهنما را ببینید.

مثال ۱: قفسی با تنها ۱ ترکیب ممکن

در یک قفس سه‌رقمی با مجموع 7، فقط یک ترکیب معتبر وجود دارد: 124

  • 1 + 2 + 4 = 7
  • هر ترکیب دیگری که جمعش 7 شود، مثلاً 232، قاعده‌ی تکرارنشدن رقم‌ها در یک قفس را نقض می‌کند.

جدولی سودوکو با سه قفس سودوکو قاتل که به‌عنوان یک گروه مشخص شده‌اند.
قفس اول در مربع ۳×۳ گوشه‌ی بالا سمت چپ جدول قرار دارد.
ستون میانی آن مربع قفس را تشکیل می‌دهد و خانه‌هایش از بالا به پایین این‌ها هستند: خانه‌ی اول شامل 1 و یک یادداشت مدادی 7 است که نشان‌دهنده‌ی مجموع 7 برای قفس است، خانه‌ی دوم شامل 2، خانه‌ی سوم شامل 5.
عددها با رنگ قرمز مشخص شده‌اند تا نشان دهند اشتباهی رخ داده است.
قفس دوم در مربع مرکزی ۳×۳ جدول قرار دارد.
ستون میانی آن مربع قفس را تشکیل می‌دهد و خانه‌هایش از بالا به پایین این‌ها هستند: خانه‌ی اول شامل 1 و یک یادداشت مدادی 7 است که نشان‌دهنده‌ی مجموع 7 برای قفس است، خانه‌ی دوم شامل 2، خانه‌ی سوم شامل 4.
هیچ‌یک از عددهای این قفس مشخص نشده‌اند و بنابراین اشتباهی ندارند.
قفس سوم در امتداد گوشه‌ی بیرونی مربع مرکزی ۳×۳ جدول قرار دارد.
این قفس از سه خانه‌ی زیر تشکیل شده است: خانه‌ی بالا سمت چپ قفس شامل 2 است که با رنگ قرمز مشخص شده، و مجموع قفس 7 است.
خانه‌ی بالا سمت راست قفس شامل 3 است.
خانه‌ی پایین سمت راست قفس شامل 2 است که با رنگ قرمز مشخص شده است. بقیه‌ی خانه‌ها خالی‌اند.

مثال ۲: قفسی با چندین ترکیب

در قفس دورقمی با مجموع 10، چهار ترکیب ممکن وجود دارد:

  • 19
  • 28
  • 37
  • 46

جدولی سودوکو که همه‌ی خانه‌هایش خالی است، به‌جز ستون میانی، ستون ۵، که ۸ خانه‌اش پر شده است.
هر دو ردیف پشت‌سرهم یک قفس سودوکو قاتل را تشکیل می‌دهند و به‌عنوان یک گروه مشخص شده‌اند.
از بالا به پایین: گروه اول خانه‌ای با مقدار 1 و یادداشت مدادی‌ای که مجموع قفس را 10 نشان می‌دهد، و خانه‌ای با مقدار 9 است.
گروه دوم خانه‌ای با مقدار 2 و یادداشت مدادی 10، و خانه‌ای با مقدار 8 است.
گروه سوم خانه‌ای با مقدار 3 و یادداشت مدادی 10، و خانه‌ای با مقدار 7 است.
گروه چهارم خانه‌ای با مقدار 4 و یادداشت مدادی 10، و خانه‌ای با مقدار 6 است.
آخرین خانه‌ی ستون خالی است.

مثال ۳: قفسی با چندین ترکیب که محدود شده است

در قفس دورقمی با مجموع 10 که ستون از قبل شامل 1 و 4 است، دو ترکیب ممکن وجود دارد:

  • 28
  • 37

19 و 46 به‌دلیل وجود 1 و 4 در ستون، بر اساس قواعد استاندارد سودوکو، ممکن نیستند.

جدولی سودوکو که همه‌ی خانه‌هایش خالی است، به‌جز ستون میانی، ستون ۵، که ۸ خانه‌اش پر شده است.
ردیف اول شامل 4 است، ردیف دوم خالی است و ردیف سوم شامل 1.
عدد 1 با رنگ قرمز مشخص شده است تا نشان دهد اشتباهی رخ داده است.
شش ردیف آخر ستون، قفس‌های سودوکو قاتل دوتایی تشکیل می‌دهند.
از بالا به پایین: گروه اول خانه‌ای با مقدار 2 و یادداشت مدادی‌ای است که مجموع قفس را 10 نشان می‌دهد، و خانه‌ای با مقدار 8.
گروه دوم خانه‌ای با مقدار 3 و یادداشت مدادی 10، و خانه‌ای با مقدار 7 است.
گروه سوم خانه‌ای با مقدار 1 که با رنگ قرمز مشخص شده است و یادداشت مدادی 10، و خانه‌ای با مقدار 9 است.

خودتان امتحان کنید

اگر می‌خواهید یک سودوکو قاتل آسان را امتحان کنید، می‌توانید این معما از Clover را حل کنید؛ معمایی که Mark Goodliffe در برنامه‌ی Cracking The Cryptic در ۲۱ ژوئن ۲۰۲۱ آن را معرفی کرده است.

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

اعتبار

تصویرهای بالا با F-Puzzles.com ساخته شده‌اند؛ ابزاری برای طراحی معما به قلم Eric Fox.

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

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

در Exercism ثبت‌نام کنید تا Python را همراه با 17 مفهوم146 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.