Znaleziony temat: prolog sudoku
This response was truncated by the cut-off limit (max tokens). Open the sidebar, Increase the parameter in the settings and then regenerate.
————————-
Prolog Sudoku – namiekko.pl, na miekko, miękko
Sudoku to popularna gra logiczna, która polega na uzupełnianiu diagramu 9×9 w taki sposób, aby w każdym wierszu, kolumnie i bloku 3×3 znalazły się cyfry od 1 do 9, bez powtórzeń. Istnieje wiele sposobów rozwiązywania sudoku, a jednym z nich jest wykorzystanie języka programowania Prolog.
Prolog to język programowania logicznego, który opiera się na logice matematycznej. Dzięki swojej deklaratywnej naturze, Prolog jest idealnym narzędziem do rozwiązywania problemów logicznych, takich jak sudoku. W tym artykule przedstawimy krótki poradnik, jak rozwiązać sudoku za pomocą Prologa.
1. Definicja reguł
Pierwszym krokiem jest zdefiniowanie reguł, które będą opisywać zasady sudoku. Możemy zacząć od zdefiniowania, że diagram sudoku składa się z 9 wierszy i 9 kolumn. Możemy to zrobić za pomocą następujących reguł:
row(1..9).
column(1..9).
2. Definicja domen
Kolejnym krokiem jest zdefiniowanie domen, czyli możliwych wartości dla każdej komórki diagramu sudoku. W przypadku sudoku, domena to liczby od 1 do 9. Możemy to zrobić za pomocą reguły:
domain(1..9).
3. Definicja zasad
Następnie musimy zdefiniować zasady, które będą określać, że w każdym wierszu, kolumnie i bloku 3×3 nie mogą się powtarzać żadne liczby. Możemy to zrobić za pomocą następujących reguł:
all_different(Row) :- permutation(Row, [1,2,3,4,5,6,7,8,9]).
valid_row(Row) :- all_different(Row).
valid_column(Column) :- all_different(Column).
valid_block(Block) :- all_different(Block).
4. Definicja diagramu sudoku
Następnie musimy zdefiniować diagram sudoku, czyli wypełnić go liczbami. Możemy to zrobić za pomocą reguł, które będą określać, że każda komórka diagramu ma wartość z domeny:
sudoku(Board) :-
Board = [A1, A2, A3, A4, A5, A6, A7, A8, A9,
B1, B2, B3, B4, B5, B6, B7, B8, B9,
C1, C2, C3, C4, C5, C6, C7, C8, C9,
D1, D2, D3, D4, D5, D6, D7, D8, D9,
E1, E2, E3, E4, E5, E6, E7, E8, E9,
F1, F2, F3, F4, F5, F6, F7, F8, F9,
G1, G2, G3, G4, G5, G6, G7, G8, G9,
H1, H2, H3, H4, H5, H6, H7, H8, H9,
I1, I2, I3, I4, I5, I6, I7, I8, I9],
domain(Board),
valid_row([A1, A2, A3, A4, A5, A6, A7, A8, A9]),
valid_row([B1, B2, B3, B4, B5, B6, B7, B8, B9]),
valid_row([C1, C2, C3, C4, C5, C6, C7, C8, C9]),
valid_row([D1, D2, D3, D4, D5, D6, D7, D8, D9]),
valid_row([E1, E2, E3, E4, E5, E6, E7, E8, E9]),
valid_row([F1, F2, F3, F4, F5, F6, F7, F8, F9]),
valid_row([G1, G2, G3, G4, G5, G6, G7, G8, G9]),
valid_row([H1, H2, H3, H4, H5, H6, H7, H8, H9]),
valid_row([I1, I2, I3, I4, I5, I6, I7, I8, I9]),
valid_column([A1, B1, C1, D1, E1, F1, G1, H1, I1]),
valid_column([A2, B2, C2, D2, E2, F2, G2, H2, I2]),
valid_column([A3, B3, C3, D3, E3, F3, G3, H3, I3]),
valid_column([A4, B4, C4, D4, E4, F4, G4, H4, I4]),
valid_column([A5, B5, C5, D5, E5, F5, G5, H5, I5]),
valid_column([A6, B6, C6, D6, E6, F6, G6, H6, I6]),
valid_column([A7
Napisz komentarz do wpisu, powiedz nam czy Ci pomógł: prolog sudoku