سودوکو را بدون لحظه ای فکر حل کنید

این روزها سودوکو در جهان و ایران مشهور شده است و در روزنامه ها و مجله ها هم به سودوکو بر می خوریم. سودوکو جدولی نه در نه است که از قبل چند عدد در بعضی خانه های آن قرار گرفته اند و قرار است حل کننده اش اعداد یک تا نه در خانه های دیگر قرار دهد به شکلی که هیچ عددی در هیچ ستون یا ردیف یا خانه نه تایی ای تکرار نشود.

حل کردن این جدول ها کار چندان راحتی نیست، البته به شرطی که از راه حل های الگوریتمی استفاده نکنید. چند وقتی بود که می خواستم راه حل الگوریتمی / کامپیوتری این جدول ها را بنویسم که تنبلی ام می آمد ولی بعد از ارسال برنامه حل کننده سودوکو در وبلاگ یک پزشک و تلاش های دوست و همکار خوبم – مهدی – در حل کردن سودوکو، تصمیم گرفتم حوصله کنم و راه حل را بنویسم. اصل مقاله ای که از عکس ها و متن اش استفاده کرده ام در اینجاست : Solve Sudoku.

قدم اول – شروع برای شروع به یک جدول سودوکو و یک مداد و یک پاک کن احتیاج دارید.

1

قدم دوم – خانه های خالی را پر کنید شکی نیست که هر خانه ای باید با یکی از اعداد ۱ تا نه پر شود. پس در هر خانه خالی به ترتیبی که می بینید اعداد یک تا نه را بنویسید.

2

قدم سوم – افقی خط بزنید یکسری عدد از قبل در جدول چاپ شده اند. از بالا شروع کنید و روی عددی که مشخص است یک خط افقی بکشید و در آن ردیف همه آن عددها را پاک کنید. در اینجا مثلا روی ۶ یک خط کشیده ایم که بدانیم این عدد افقی حل شده و بعد کل شش های این ردیف را پاک کرده ایم.

3

قدم چهارم – عمودی حل کنید هر کدام از عددهای مشخص شده را انتخاب کنید، کنارش یک خط عمودی بکشید و تمام مشابه های آن عدد در ردیف های عمودی را پاک کنید.

4

قدم پنجم – دایره ای حذف کنید دور عدد مشخص شده یک دایره بکشید و بعد همه مشابه های آن عدد در مربع نه خانه ای را خط بزنید. مثلا اینجا دور شش یک دایره کشیده ایم و بعد در خانه نه تایی که این شش قرار دارد، همه شش های دیگر را حذف کرده ایم.<

مشخص است که داریم چه می کنیم ! همه احتمالات را برای همه خانه ها می نویسیم و بعد غیرممکن ها را پاک می کنیم. خطهای افقی و عمودی و دایره ها برای این هستند که فراموش نکنیم تا کجا پیش رفته ایم و کجاها باقی مانده اند

6

قدم ششم – تکرار کنید قدم های قبلی را برای همه خانه های از پیش چاپ شده تکرار کنید. همانطور که در شکل می بینید در بیشتر خانه ها یک یا دو یا سه عدد بیشتر باقی نمانده اند.

7

قدم هفتم – یکسری جواب پیدا کرده اید دقت کنید ! در بعضی خانه ها فقط یک عدد باقی مانده است. این عدد تنها عدد ممکن برای این خانه است پس آن را بزرگ و پر رنگ بنویسید و مراحل افقی و عمودی و دایره ای را برای آن تکرار کنید.

8

قدم هشتم – شیوه های دیگر حذف همیشه هم اینقدر خوش شانس نیستید که در هر خانه فقط یک عدد بماند. اول ستون ها را بررسی کنید و اگر در ستونی عددی بود که فقط در یک خانه وجود داشت، این عدد همان جواب مورد نظر برای آن خانه است. در تصویری که می بینید، خودکار به یک سه اشاره می کند که در ستون تنها سه است،‌پس جواب این خانه همین سه است. آن را بزرگ بنویسید و مراحل افقی و عمودی و دایره ای را تکرار کنید.

9

قدم نهم – به مربع های نه تایی نگاه کنید اگر مراحل قبلی را طی کردید و هنوز جدول حل نشده، به گروه های جدول نه تایی نگاه کنید. بدون اینکه فکر کنید یا حدس بزنید، عددی را پیدا کنید که در یک جدول نه تایی فقط یک باز ظاهر شده باشد، این عدد جواب آن خانه است. در شکل پنجی که مشاهده می کنید جواب آن خانه است. مثل همه جواب های دیگر آن را بزرگ بنویسید و مراحل افقی و عمودی و دایره ای را تکرار کنید.

10

قدم دهم – تکرار مراحل قبلی را ادامه بدهید و جدول حل خواهد شد. گذاشتن خط های افقی و عمودی را فراموش نکنید. جریان ساده است و بی نیاز از حدس زدن و فکر کردن.

امیدوارم از این راه حل خوشتان آمده باشد. این راه حل کامپیوتری و الگوریتمی حل سودوکو است. تقدیم به دوست خوبم مهدی که سودوکو حل کن حرفه ای است.

اگر می خواهید پیچیدگی و زحمت کم شود می توانید برعکس عمل کنید. به جای اینکه در اول کار در همه خانه ها یک تا نه را بنویسید و بعد پاک کنید، اول خانه ها را خالی بگذارید و هر چیزی که غیر ممکن شد را با یک نقطه مشخص کنید. با این روش هم سریعتر حل می کنید و هم بی دردسرتر. البته بهتر است دو سه باری به روش کلاسیک حل کنید تا ماهر بشوید و بعد بروید سراغ میانبرها