Sudoku
Sudoku adalah salah satu jenis puzzle atau permainan angka yang sangat populer. Tua dan muda memainkan permainan ini untuk mengisi waktu luang mereka atau untuk mengasah otak mereka dengan mudah. Meski merupakan game jadul, hingga kini penggemar sudoku terus bermunculan dan berkembang.
Sudoku, awalnya disebut Number Place, adalah teka-teki penempatan nomor kombinatorial berbasis logika. Dalam Sudoku klasik, tujuannya adalah untuk mengisi kisi 9 × 9 dengan angka sehingga setiap kolom, baris, dan masing-masing dari sembilan subkisi 3 × 3 yang membentuk kisi (juga disebut kotak, blok, atau wilayah) adalah semua berisi angka 1 sampai 9.
Bila Anda belum mengetahui konsep dasar dari bahasa pemrograman Python silahkan kunjungin artikel Konsep Dasar Python.
Kode Program
import numpy as np
def possible(y, x, n):
global grid
for i in range (0,9):
if grid[y][i] == n :
return False
for i in range(0,9):
if grid[i][x] == n :
return False
x0 = (x//3)*3
y0 = (y//3)*3
for i in range (0,3):
for j in range (0,3):
if grid[y0+i][x0+j] == n :
return False
return True
def solve() :
global grid
for y in range (9) :
for x in range (9) :
if grid[y][x] == 0 :
for n in range(1,10) :
if possible (y,x,n) :
grid[y][x] = n
solve()
grid[y][x] = 0
return
print(np.matrix(grid))
grid = [
[7, 8, 0, 4, 0, 0, 1, 2, 0],
[6, 0, 0, 0, 7, 5, 0, 0, 9],
[0, 0, 0, 6, 0, 1, 0, 7, 8],
[0, 0, 7, 0, 4, 0, 2, 6, 0],
[0, 0, 1, 0, 5, 0, 9, 3, 0],
[9, 0, 4, 0, 6, 0, 0, 0, 5],
[0, 7, 0, 3, 0, 0, 0, 1, 2],
[1, 2, 0, 0, 0, 7, 4, 0, 0],
[0, 4, 9, 2, 0, 6, 0, 0, 7]
]
print('Puzzle:')
print(np.matrix(grid))
print('Solve:')
solve()
Keluaran Program
Puzzle:
[[7 8 0 4 0 0 1 2 0]
[6 0 0 0 7 5 0 0 9]
[0 0 0 6 0 1 0 7 8]
[0 0 7 0 4 0 2 6 0]
[0 0 1 0 5 0 9 3 0]
[9 0 4 0 6 0 0 0 5]
[0 7 0 3 0 0 0 1 2]
[1 2 0 0 0 7 4 0 0]
[0 4 9 2 0 6 0 0 7]]
Solve:
[[7 8 5 4 3 9 1 2 6]
[6 1 2 8 7 5 3 4 9]
[4 9 3 6 2 1 5 7 8]
[8 5 7 9 4 3 2 6 1]
[2 6 1 7 5 8 9 3 4]
[9 3 4 1 6 2 7 8 5]
[5 7 8 3 9 4 6 1 2]
[1 2 6 5 8 7 4 9 3]
[3 4 9 2 1 6 8 5 7]]
Kesimpulan
Problem puzzle Sudoku diselesaikan dengan algoritma rekursif. Untuk artikel lain terkait dengan pemrograman Python silahkan lihat kumpulan artikelnya disini.