BME Villamosmérnöki és Informatikai Kar
Műszaki informatika szak |
Nappali tagozat
2007/2008-as tanév, tavaszi félév
|
Egy Sudoku-tábla akkor felel meg a nagy házi feladat szerinti specifikációnak, ha bármely sorában, oszlopában, illetve cellájában nincs két azonos - 0-tól különböző - értékű mező.
A Sudoku-táblát a nagy házi feladatban specifikált Prolog-struktúrával, illetve SML-párral adjuk meg.
helyese
néven egy Sudoku-tábla
helyességének a megállapítására.
(* helyese : sspec -> bool helyese t = igaz, ha a t részlegesen vagy teljesen kitöltött Sudoku-tábla helyes *)
helyese/1
néven egy Sudoku-tábla
helyességének a megállapítására.
% :- pred helyese(sspec::in). % helyese(T), ahol az sspec specifikációnak megfelelő T egy részlegesen % vagy teljesen kitöltött Sudoku-tábla
|?- helyese(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]])). yes
|?- helyese(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]])). yes
|?- helyese(s(3, [[6,9,0, 1,8,0], [0,3,0, 0,9,0], [1,0,8, 6,0,5], [5,2,6, 7,3,8], [7,8,4, 1,5,9], [9,1,3, 0,0,6]])). no
- helyese(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]]); > val it = true : bool
- helyese(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]]); > val it = true : bool
- helyese(3, [[6,9,0, 1,8,0], [0,3,0, 0,9,0], [1,0,8, 6,0,5], [5,2,6, 7,3,8], [7,8,4, 1,5,9], [9,1,3, 0,0,6]]); > val it = false : bool
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.