سودوکو در جاوااسکریپت
سودوکو یکی از بازیهای محبوب پازل است که شامل یک جدول 9x9 میباشد. هدف از این بازی، پر کردن جدول با اعداد ۱ تا ۹ به گونهای است که هر عدد تنها یک بار در هر ردیف، ستون و مربع ۳x۳ ظاهر شود. در اینجا، ما به بررسی نحوه پیادهسازی سودوکو در زبان برنامهنویسی جاوااسکریپت میپردازیم.
مبانی پیادهسازی
برای شروع، ما به یک ساختار دادهای مناسب نیاز داریم. میتوانیم از آرایهها برای ذخیرهسازی جدول سودوکو استفاده کنیم. به عنوان مثال، یک آرایه دو بعدی به شکل زیر تعریف میکنیم:
```javascript
let sudokuGrid = [
[5, 3, 0, 0, 7, 0, 0, 0, 0],
[6, 0, 0, 1, 9, 5, 0, 0, 0],
[0, 9, 8, 0, 0, 0, 0, 6, 0],
[8, 0, 0, 0, 6, 0, 0, 0, 3],
[4, 0, 0, 8, 0, 3, 0, 0, 1],
[7, 0, 0, 0, 2, 0, 0, 0, 6],
[0, 6, 0, 0, 0, 0, 2, 8, 0],
[0, 0, 0, 4, 1, 9, 0, 0, 5],
[0, 0, 0, 0, 8, 0, 0, 7, 9]
];
```
الگوریتم حل سودوکو
برای حل سودوکو، میتوان از الگوریتم بازگشتی استفاده کرد. این الگوریتم به طور مکرر سعی میکند اعداد را در جدول قرار دهد و در صورت عدم موفقیت، به عقب برمیگردد و عدد دیگری را امتحان میکند. به عنوان نمونه، میتوانیم تابع زیر را برای حل سودوکو تعریف کنیم:
```javascript
function solveSudoku(grid) {
for (let row = 0; row < 9; row++) {
for (let col = 0; col < 9; col++) {
if (grid[row][col] === 0) {
for (let num = 1; num <= 9; num++) {
if (isValid(grid, row, col, num)) {
grid[row][col] = num;
if (solveSudoku(grid)) {
return true;
}
grid[row][col] = 0; // Backtrack
}
}
return false;
}
}
}
return true; // Solved
}
function isValid(grid, row, col, num) {
for (let x = 0; x < 9; x++) {
if (grid[row][x] === num || grid[x][col] === num ||
grid[3 * Math.floor(row / 3) + Math.floor(x / 3)][3 * Math.floor(col / 3) + x % 3] === num) {
return false;
}
}
return true;
}
```
نتیجهگیری
با استفاده از این کد، میتوانیم جدول سودوکو را حل کنیم. این الگوریتم به راحتی میتواند بهبود یابد و ویژگیهای بیشتری مانند تولید جدولهای تصادفی یا بررسی صحت جدولهای ورودی را اضافه کند. در نهایت، با ترکیب این کدها و بهبود آنها، میتوانیم یک بازی سودوکو کامل بسازیم.