BME Villamosmérnöki és Informatikai Kar
Műszaki informatika szak |
Nappali tagozat
2007/2008-as tanév, tavaszi félév
|
A Sudoku-táblát a nagy házi feladatban specifikált Prolog-struktúrával, illetve SML-párral adjuk meg.
A kért mátrix bal felső mezőjét a Sudoku-tábla egy mezőjének a koordinátáival (a tábla egy oszlopának és egy sorának a megadásával) adjuk meg. A Sudoku-tábla bal felső mezőjének koordinátája: (1,1). Az eredmény egy olyan lista, amely a keresett mátrix mezőinek értékét sorfolytonosan tartalmazza.
matrix
néven, amely egy Sudoku-táblából
egy cellaméretű mátrixot állít elő. Ha a megadott paraméterekkel a
mátrix nem állítható elő, az eredmény az üres lista.
(* type col = int type row = int matrix : (sspec, col, row) -> field list matrix (t, x, y) = a t Sudoku-tábla (x,y) koordinátájú mezőjével meghatározott, cellaméretű mátrix, sorfolytonos ábrázolással *)
matrix/4
néven, amely egy
Sudoku-táblából egy cellaméretű mátrixot állít elő. Ha a megadott
paraméterekkel a mátrix nem állítható elő, az eljárás hiúsuljon meg.
% :- type col == int. % :- type row == int. % :- pred matrix(sspec::in, col::in, row::in, list(field)::out). % matrix(T,X,Y,C), ahol % T az sspec specifikációnak megfelelő Sudoku-tábla, % X a col, Y a row típusnak megfelelő koordináta, % C a list(field) típusnak megfelelő mezőlista.
| ?- matrix(s(3, [[0,2,3,4,1,0,5,8,0], [0,7,8,0,0,0,0,2,1], [0,0,5,7,2,0,0,3,9], [0,8,2,9,6,1,0,4,0], [0,9,0,5,0,4,0,1,0], [0,6,0,2,7,3,9,5,0]]), 5, 2, C). C = [0,0,0,2,0,0,6,1,0] ? ; no
| ?- matrix(s(3, [[6,2,3,4,1,9,5,8,7], [9,7,8,3,5,6,4,2,1], [1,4,5,7,2,8,6,3,9], [5,8,2,9,6,1,7,4,3], [3,9,7,5,8,4,2,1,6], [4,6,1,2,7,3,9,5,8]]), 5, 2, C). C = [5,6,4,2,8,6,6,1,7] ? ; no
| ?- matrix(s(3, [[6,2,3,4,1,9,5,8,7], [9,7,8,3,5,6,4,2,1], [1,4,5,7,2,8,6,3,9], [5,8,2,9,6,1,7,4,3], [3,9,7,5,8,4,2,1,6], [4,6,1,2,7,3,9,5,8]]), 8, 2, C). no
- matrix((3, [[0,2,3,4,1,0,5,8,0], [0,7,8,0,0,0,0,2,1], [0,0,5,7,2,0,0,3,9], [0,8,2,9,6,1,0,4,0], [0,9,0,5,0,4,0,1,0], [0,6,0,2,7,3,9,5,0]]), 5, 2); > val it = [0,0,0,2,0,0,6,1,0] : int list
- matrix((3, [[6,2,3,4,1,9,5,8,7], [9,7,8,3,5,6,4,2,1], [1,4,5,7,2,8,6,3,9], [5,8,2,9,6,1,7,4,3], [3,9,7,5,8,4,2,1,6], [4,6,1,2,7,3,9,5,8]]), 5, 2); > val it = [5,6,4,2,8,6,6,1,7] : int list
- matrix((3, [[6,2,3,4,1,9,5,8,7], [9,7,8,3,5,6,4,2,1], [1,4,5,7,2,8,6,3,9], [5,8,2,9,6,1,7,4,3], [3,9,7,5,8,4,2,1,6], [4,6,1,2,7,3,9,5,8]]), 8, 2); > val it = [] : int list
A vizsgaosztályzat megállapításakor a határidőre beadott, helyesen megoldott kis házi feladatokért plusz 1-1 pont jár.