% Az Azonosito azonositójú teszteset ElvartEred elvárt eredménye különbözik % a KapottEred tényleges eredménytől. hibas_teszteset(Azonosito, ElvartEred, KapottEred) :- teszteset(Azonosito, FLeiro, Mx0), eredmeny(Azonosito, ElvartEred), findall(Mx-Sz, kizarasos_szukites(FLeiro, Mx0, Mx, Sz), OsszesEred), megfelelo_ered(OsszesEred, KapottEred), KapottEred \== ElvartEred. % megfelelo_ered(OsszesEred, KapottEred): OsszesEred a % kizarasos_szukites által előállított összes Mx-Sz megoldás listája, % és ez megfelel a KapottEred leírásnak. megfelelo_ered([], KapottEred) :- !, KapottEred = false. megfelelo_ered(Megoldasok, KapottEred) :- ( Megoldasok = [X] -> KapottEred = X ; KapottEred = tobbszoros_megoldas(Megoldasok) % ilyenkor biztosan hibás a program ). % Ha minden tesztesetre helyes választ ad a program, akkor ez a futás eredménye: % | ?- hibas_teszteset(Azon, E, KE). % no % Hibás program esetén pl. az alábbi futási eredményeket kaphatjuk: % | ?- hibas_teszteset(Azon, Elvart, Kapott). % Azon = 1, % Elvart = false, % Kapott = [[1,2],[2,1]]-([[1,2],[2,1]]-sor(1,1)) ? ; % no % | ?- hibas_teszteset(Azon, Elvart, Kapott). % Azon = 3, % Elvart = [[[0],[1,2],[1,2]],[[0,2],[0,1,2],[0,2]],[[0,1],[0,1],[0,2]]]-sor(1,0), % Kapott = tobbszoros_megoldas([[[[0,1,2],[1,2],[1,2]],[[0,2],[0,1,2],[0,2]],[[0,1],[0,1],[0]]]-sor(3,1),[[[0],[1,2],[1,2]],[[0,2],[0,1,2],[0,2]],[[0,1],[0,1],[0,2]]]-sor(1,0)]) ? ; % no teszteset(01, szt(2,2,[]), [[1,2],[2,1]]). teszteset(02, szt(2,2,[]), [[[1,2],[1,2]], [[1,2],[1,2]]]). teszteset(03, szt(3,2,[]), [[[0,1,2],[1,2], [1,2]], [[0,2], [0,1,2],[0,2]], [[0,1], [0,1], [0,2]]]). teszteset(04, szt(3,2,[]), [[[0,1,2],[0,1,2],[1,2]], [[0,1,2],[0,1,2],[0,2]], [[0,1,2],[0,1], [0,2]]]). teszteset(05, szt(4,2,[]), [[0, [1,2], [1,2], [0,1,2]], [0, [0,1,2],[0,2], [0,2]], [[0,1,2],[0,1,2],[0,1,2],[0,1,2]], [[0,1,2],[0,1,2],[0,1,2],[0,1,2]]]). teszteset(06, szt(3,2,[]), [[[0,1,2],[0,1,2],[0,1,2]], [[1,2], [0,1,2],[0,1]], [[1,2], [0,1,2],[0,1]]]). teszteset(07, szt(3,1,[]), [[[0,1], [0,1],[0,1]], [[0,1], 0, [0,1]], [[0,1], [0,1],0]]). teszteset(08, szt(3,2,[]), [[[0,1,2],[0,2],[0,2]], [[0,2], 1, [0,2]], [[0,2], [0,2],1]]). teszteset(09, szt(3,2,[]), [[[0,1,2],[1,2],[1,2]], [[1,2], 0, [1,2]], [[1,2], [1,2],0]]). teszteset(10, szt(5,3,[]), [[[0,1,2,3],[0,1,2], [0,1,2,3],[0,1,2,3],[0,1,2,3]], [[0,1,2], 3, 0, [0,1,2], [0,1,2]], [[0,1,2,3],0, [0,1,2,3],[0,1,2,3],[0,1,2,3]], [[0,1,2,3],[0,1,2], [0,1,2,3],[0,1,2,3],[0,1,2,3]], [[0,1,2,3],[0,1,2], [0,1,2,3],[0,1,2,3],[0,1,2,3]]]). teszteset(11, szt(5,3,[]), [[[0,1,2,3],[0,1,2,3],[0,1,2,3],[0,1,2,3],[0,1,2,3]], [[1,2,3], [1,3], [0,3], [1,2,3], [1,3]], [[0,1,2,3],[0,1,2,3],[0,1,2,3],[0,1,2,3],[0,1,2,3]], [[0,1,2,3],[0,1,2,3],[0,1,2,3],[0,1,2,3],[0,1,2,3]], [[0,1,2,3],[0,1,2,3],[0,1,2,3],[0,1,2,3],[0,1,2,3]]]). teszteset(12, szt(5,3,[]), [[[0,1,2,3],[1,2,3], [1,2,3], [0,1,2,3],[0,1,2,3]], [[1,2,3], [0,3], 0, [1,2,3], [1,3]], [[0,1,2,3],[1,2,3], [1,2,3], [0,1,2,3],[0,1,2,3]], [[0,1,2,3],[1,2,3], [1,2,3], [0,1,2,3],[0,1,2,3]], [[0,1,2,3],[1,2,3], [1,2,3], [0,1,2,3],[0,1,2,3]]]). teszteset(13, szt(5,3,[]), [[[0,1,2,3],[1,2,3], [1,2,3], [0,1,2,3],[0,1,2,3]], [[0,1,2,3],[1,2,3], [1,2,3], [1,2,3], [1,3]], [[0,1,2,3],[1,2,3], [1,2,3], [0,1,2,3],[0,1,2,3]], [[0,1,2,3],[1,2,3], [1,2,3], [0,1,2,3],[0,1,2,3]], [[0,1,2,3],[1,2,3], [1,2,3], [0,1,2,3],[0,1,2,3]]]). teszteset(14, szt(5,3,[]), [[[0,1,2,3],[1,2,3], [1,2,3], [0,1,2,3],[0,1,2,3]], [[0,1,2,3],[1,2,3], [1,2,3], [1,2,3], [1,3]], [[0,1,2,3],[1,2,3], [1,2,3], [1,2,3], [1,2,3]], [[0,1,2,3],[1,2,3], [1,2,3], [0,1,2,3],[0,1,2,3]], [[0,1,2,3],[1,2,3], [1,2,3], [0,1,2,3],[0,1,2,3]]]). teszteset(15, szt(4,3,[]), [[[0,1,2],[0,1,2],[1,2,3],[0,2,3]], [[1,2], [1,2,3],0, [1,2,3]], [[0,1,2],[0,1,2],[1,2,3],[1,2,3]], [[0,1,3],[0,1,2],[1,2,3],[0,2,3]]]). teszteset(16, szt(4,3,[]), [[[0,1,2],[0,1,2],[1,2], [0,2,3]], [[1,2], [1,2], 0, [2,3]], [[0,1,2],[0,2,3],[1,2,3],[0,2,3]], [[0,1,3],[0,1,2],[1,2,3],[1,2,3]]]). teszteset(17, szt(4,2,[]), [[[0,1,2],[0,1,2],[0,1,2],[0,1,2]], [[0,1,2],[0,1,2],[0,1,2],[0,1,2]], [0, [1,2], [1,2], [0,1,2]], [[0,1,2],[0,1,2],[0,1,2],[0,1,2]] ]). teszteset(18, szt(4,2,[]), [[1,2,0,0], [2,0,0,1], [0,1,2,0], [0,0,1,2] ]). teszteset(19, szt(4,2,[]), [[1, [0,2],[0,2], [0,2]], [[0,2],[0,1,2],[0,2], [1,2]], [[0,2],[0,1,2],[0,1], [0,2]], [ 0,[0,1,2],[0,1,2],[1,2]]]). teszteset(20, szt(6,3,[]), [[[0,2,3], [0,2,3], 1,[0,2,3], [0,3], [0,2,3]], [[0,1,3], [0,1,3], [0,3], [0,3], 2, [0,1,3]], [[0,1,2,3],[0,1,2,3],[0,2,3],[0,2,3], [1,3],[0,1,2,3]], [[0,1,2,3],[0,1,2,3],[0,2,3],[0,2,3], [1,3],[0,1,2,3]], [[0,1,2,3],[0,1,2,3],[0,2,3],[0,2,3],[0,1,3],[0,1,2,3]], [[0,2,3], [0,2,3], [0,2,3], 1, [0,3], [0,2,3]] ]). teszteset(21, szt(6,6,[]), [[[1,2,5,6],[2,3,5,6],[1,2,3,5,6], [2,5,6],4,[1,2,3,5,6]], [ 3,[2,4,5,6], [2,4,5,6],[2,4,5,6],1,[2,4,5,6]], [[1,2,4,6],[2,3,4,6],[1,2,3,4,6], [2,4,6],5,[1,2,3,4,6]], [[1,2,4,5],[2,3,4,5],[1,2,3,4,5], [2,4,5],6,[1,2,3,4,5]], [ [4,5,6], 1, [4,5,6], 3,2,[4,5,6]], [[1,2,4,6],[2,4,5,6],[1,2,4,5,6],[1,2,4,5],3,[1,2,4,5,6]] ]). teszteset(22, szt(6,6,[]), [[[1,2,5,6],[2,3,5,6],[1,2,3,5,6], [2,5,6],4,[1,2,3,5,6]], [ 3,[2,4,5,6], [2,4,5,6],[2,4,5,6],1,[2,4,5,6]], [[1,2,4,6],[2,3,4,6],[1,2,3,4,6], [2,4,6],5,[1,2,3,4,6]], [[1,2,4,5],[2,3,4,5],[1,2,3,4,5], [2,4,5],6,[1,2,3,4,5]], [ [4,5,6], 1, [4,5,6], 3,2,[4,5,6]], [ [2,4,6],[2,4,5,6], [2,4,5,6],[1,2,4,5],3,[2,4,5,6]] ]). teszteset(23, szt(6,6,[]), [[[1,2,5,6], 3,[1,2,4,6], [1,2,4,5],[4,5,6],[1,2,4,5,6]], [[2,3,5,6],[2,4,5,6],[2,3,4,6], [2,3,4,5], 1, [2,4,5,6]], [[2,3,5,6],[2,4,5,6],[1,3,4,6],[1,2,3,4,5],[4,5,6],[1,2,4,5,6]], [[1,2,5,6],[2,4,5,6],[1,2,4,6], [1,2,4,5], 3,[1,2,4,5,6]], [ 4, 1, 5, 6, 2, 3], [[1,2,5,6],[2,4,5,6],[1,2,4,6],[1,2,3,4,5],[4,5,6],[1,2,4,5,6]] ]). teszteset(24, szt(6,6,[]), [[[1,2,5,6], 3,[1,2,4,6], [1,2,4,5],[4,5,6],[1,2,4,5,6]], [[2,3,5,6],[2,4,5,6],[2,3,4,6], [2,3,4,5], 1, [2,4,5,6]], [[2,3,5,6],[2,4,5,6],[1,3,4,6],[1,2,3,4,5],[4,5,6],[1,2,4,5,6]], [[1,2,5,6],[2,4,5,6],[1,2,4,6], [1,2,4,5], 3,[1,2,4,5,6]], [ 4, 1, 5, 6, 2, 3], [ [1,2,5], [2,5], [1,2,4], [1,2,3,5], [5,6], [1,2,5,6]] ]). teszteset(25, szt(6,3,[]), [[1,[0,2], 0, 0, 3,[0,2]], [0,[1,2], 3,[1,2], 0, 0], [0,[1,2],[1,2],[2,3], 0, 0], [0,[0,3],[1,2],[0,3], 0,[1,2]], [2, 0, 0, 0, 1, 3], [3, 0, 0,[0,1], 2,[0,1]] ]). teszteset(26, szt(6,3,[]), [[1,[0,2], 0, 0, 3,[0,2]], [0,[1,2], 3,[1,2], 0, 0], [0,[1,2],[1,2],[2,3], 0, 0], [0,[0,3],[1,2],[1,3], 0,[1,2]], [2, 0, 0, 0, 1, 3], [3, 0, 0,[0,1], 2,[0,1]] ]). teszteset(27, szt(10,2,[]), [[1,0,0,0,0,0,0,2,0,0], [2,1,0,0,0,0,0,0,0,0], [0,0,1,0,0,0,2,0,0,0], [0,0,0,1,2,0,0,0,0,0], [0,0,0,0,1,0,0,0,0,2], [0,0,0,0,0,1,0,0,2,0], [0,0,0,2,0,0,1,0,0,0], [0,[0,2],[0,2],0,0,[0,2],0,0,1,0], [0,[0,2],[0,2],0,0,[0,2],0,[0,1],0,[0,1]], [0,[0,2],[0,2],0,0,[0,2],0,[0,1],0,[0,1]] ]). % Az elvárt eredmények értelmezése: % eredmeny(Sorszam, Eredmeny): A Sorszam-adik teszteset futásának % elvárt eredménye az Eredmeny. % Az Eredmeny-nek kétféle alakja lehet: % Eredmeny = Mx-Szukites. Ez azt jelenti, hogy eljárásnak % sikeresen kell lefutnia, pontosan egy megoldást adva, % és a 3. argumentumában az Mx eredménymátrixot, % a 4. argumentumában pedig az elvégzett szűkítés % Szukites leírását kell visszaadnia. % (Itt speciális esetben az eredmény lehet a ([]-nem) Prolog % kifejezés is, ami azt jelzi, hogy Mx ellentmondást % tartalmaz); % Eredmeny = false. Ez azt jelenti, hogy az eljárásnak meg kell % hiúsulnia, mert nem végezhető szűkítés eredmeny(1, false). eredmeny(2, false). eredmeny(3, [[[0],[1,2],[1,2]],[[0,2],[0,1,2],[0,2]],[[0,1],[0,1],[0,2]]]-sor(1,0)). eredmeny(4, [[[0,1,2],[0,1,2],[1]],[[0,1,2],[0,1,2],[0,2]],[[0,1,2],[0,1],[0,2]]]-oszl(3,1)). eredmeny(5, [[0,[1,2],[1,2],[0]],[0,[0,1,2],[0,2],[0,2]],[[0,1,2],[0,1,2],[0,1,2],[0,1,2]],[[0,1,2],[0,1,2],[0,1,2],[0,1,2]]]-sor(1,0)). eredmeny(6, [[[0],[0,1,2],[0,1,2]],[[1,2],[0,1,2],[0,1]],[[1,2],[0,1,2],[0,1]]]-oszl(1,0)). eredmeny(7, false). eredmeny(8, [[[1],[0,2],[0,2]],[[0,2],1,[0,2]],[[0,2],[0,2],1]]-sor(1,1)). eredmeny(9, [[[0],[1,2],[1,2]],[[1,2],0,[1,2]],[[1,2],[1,2],0]]-sor(1,0)). eredmeny(10, false). eredmeny(11, []-nem). eredmeny(12, [[[0,1,2,3],[1,2,3],[1,2,3],[0,1,2,3],[0,1,2,3]],[[1,2,3],[0],0,[1,2,3],[1,3]],[[0,1,2,3],[1,2,3],[1,2,3],[0,1,2,3],[0,1,2,3]],[[0,1,2,3],[1,2,3],[1,2,3],[0,1,2,3],[0,1,2,3]],[[0,1,2,3],[1,2,3],[1,2,3],[0,1,2,3],[0,1,2,3]]]-sor(2,0)). eredmeny(13, []-nem). eredmeny(14, []-nem). eredmeny(15, [[[0,1,2],[0,1,2],[1,2,3],[0,2,3]],[[1,2],[1,2,3],0,[1,2,3]],[[0,1,2],[0,1,2],[1,2,3],[1,2,3]],[[3],[0,1,2],[1,2,3],[0,2,3]]]-oszl(1,3)). eredmeny(16, [[[0,1,2],[0,1,2],[1,2],[3]],[[1,2],[1,2],0,[2,3]],[[0,1,2],[0,2,3],[1,2,3],[0,2,3]],[[0,1,3],[0,1,2],[1,2,3],[1,2,3]]]-sor(1,3)). eredmeny(17, [[[0,1,2],[0,1,2],[0,1,2],[0,1,2]],[[0,1,2],[0,1,2],[0,1,2],[0,1,2]],[0,[1,2],[1,2],[0]],[[0,1,2],[0,1,2],[0,1,2],[0,1,2]]]-sor(3,0)). eredmeny(18, false). eredmeny(19, [[1,[0,2],[0,2],[0]],[[0,2],[0,1,2],[0,2],[1,2]],[[0,2],[0,1,2],[0,1],[0]],[0,[0,1,2],[0,1,2],[1,2]]]-oszl(4,0)). eredmeny(20, [[[0,2,3],[0,2,3],1,[0,2,3],[0],[0,2,3]],[[0,1,3],[0,1,3],[0,3],[0,3],2,[0,1,3]],[[0,1,2,3],[0,1,2,3],[0,2,3],[0,2,3],[1,3],[0,1,2,3]],[[0,1,2,3],[0,1,2,3],[0,2,3],[0,2,3],[1,3],[0,1,2,3]],[[0,1,2,3],[0,1,2,3],[0,2,3],[0,2,3],[0],[0,1,2,3]],[[0,2,3],[0,2,3],[0,2,3],1,[0],[0,2,3]]]-oszl(5,0)). eredmeny(21, [[[1,2,5,6],[2,3,5,6],[1,2,3,5,6],[2,5,6],4,[1,2,3,5,6]],[3,[2,4,5,6],[2,4,5,6],[2,4,5,6],1,[2,4,5,6]],[[1,2,4,6],[2,3,4,6],[1,2,3,4,6],[2,4,6],5,[1,2,3,4,6]],[[1,2,4,5],[2,3,4,5],[1,2,3,4,5],[2,4,5],6,[1,2,3,4,5]],[[4,5,6],1,[4,5,6],3,2,[4,5,6]],[[1,2,4,6],[2,4,5,6],[1,2,4,5,6],[1],3,[1,2,4,5,6]]]-oszl(4,1)). eredmeny(22, [[[1,2,5,6],[2,3,5,6],[1,2,3,5,6],[2,5,6],4,[1,2,3,5,6]],[3,[2,4,5,6],[2,4,5,6],[2,4,5,6],1,[2,4,5,6]],[[1,2,4,6],[2,3,4,6],[1,2,3,4,6],[2,4,6],5,[1,2,3,4,6]],[[1,2,4,5],[2,3,4,5],[1,2,3,4,5],[2,4,5],6,[1,2,3,4,5]],[[4,5,6],1,[4,5,6],3,2,[4,5,6]],[[2,4,6],[2,4,5,6],[2,4,5,6],[1],3,[2,4,5,6]]]-sor(6,1)). eredmeny(23, [[[1,2,5,6],3,[1,2,4,6],[1,2,4,5],[4,5,6],[1,2,4,5,6]],[[2,3,5,6],[2,4,5,6],[2,3,4,6],[2,3,4,5],1,[2,4,5,6]],[[2,3,5,6],[2,4,5,6],[1,3,4,6],[1,2,3,4,5],[4,5,6],[1,2,4,5,6]],[[1,2,5,6],[2,4,5,6],[1,2,4,6],[1,2,4,5],3,[1,2,4,5,6]],[4,1,5,6,2,3],[[1,2,5,6],[2,4,5,6],[1,2,4,6],[3],[4,5,6],[1,2,4,5,6]]]-sor(6,3)). eredmeny(24, [[[1,2,5,6],3,[1,2,4,6],[1,2,4,5],[4,5,6],[1,2,4,5,6]],[[2,3,5,6],[2,4,5,6],[2,3,4,6],[2,3,4,5],1,[2,4,5,6]],[[2,3,5,6],[2,4,5,6],[1,3,4,6],[1,2,3,4,5],[4,5,6],[1,2,4,5,6]],[[1,2,5,6],[2,4,5,6],[1,2,4,6],[1,2,4,5],3,[1,2,4,5,6]],[4,1,5,6,2,3],[[1,2,5],[2,5],[1,2,4],[3],[5,6],[1,2,5,6]]]-sor(6,3)). eredmeny(25, [[1,[0,2],0,0,3,[0,2]],[0,[1,2],3,[1,2],0,0],[0,[1,2],[1,2],[3],0,0],[0,[0,3],[1,2],[0,3],0,[1,2]],[2,0,0,0,1,3],[3,0,0,[0,1],2,[0,1]]]-sor(3,3)). eredmeny(26, [[1,[0,2],0,0,3,[0,2]],[0,[1,2],3,[1,2],0,0],[0,[1,2],[1,2],[3],0,0],[0,[0,3],[1,2],[1,3],0,[1,2]],[2,0,0,0,1,3],[3,0,0,[0,1],2,[0,1]]]-sor(3,3)). eredmeny(27, false).