- Testfaelle zu Aufgabenblatt 8 -- Testfaelle zu Aufgabenteil 1 -- Beachten Sie, dass das Resultat i.a. nicht eindeutig festgelegt ist c_t1 = color (Ug [(0,Red,[1,2,3]), (1,Red,[0,2,3]), (2,Red,[0,1]), (3,Red,[0,1])]) == Just (Ug [(0,Red,[1,2,3]),(1,Blue,[0,2,3]),(2,Green,[0,1]),(3,Green,[0,1])]) c_t2 = color (Ug [ (i,Red,[0..5]\\[i]) | i <- [0..5]]) == Nothing c_t3 = color (Ug [ (i,Red,[(i-1) `mod` 6,(i+1) `mod` 6]) | i <- [0..5]]) == Just (Ug [(0,Red,[5,1]),(1,Blue,[0,2]),(2,Red,[1,3]),(3,Blue,[2,4]),(4,Red,[3,5]),(5,Blue,[4,0])]) test_ugcolor = and [c_t1, c_t2, c_t3] -- Testfaelle zu Aufgabenteil 2 -- basic start sudokus basic_start1 = [[9,1,6,0,0,4,0,7,2], [8,0,0,6,2,0,0,5,0], [5,0,0,0,0,8,9,3,0], [0,6,0,0,0,0,2,0,0], [0,0,0,2,0,7,0,0,0], [0,0,5,0,0,0,0,9,0], [0,9,7,8,0,0,0,0,3], [0,8,0,0,7,6,0,0,9], [4,5,0,1,0,0,6,8,7]] basic_start2 = [[6,0,0,3,0,0,1,0,0], [0,7,1,6,2,0,0,0,0], [8,0,5,0,0,1,0,0,0], [5,0,0,8,7,0,9,0,1], [0,0,9,0,0,0,6,0,0], [4,0,7,0,6,9,0,0,8], [0,0,0,2,0,0,8,0,7], [0,0,0,0,8,6,4,1,0], [0,0,8,0,0,3,0,0,2]] basic_start3 = [[9,0,6,0,1,3,0,0,8], [0,5,8,0,0,0,0,9,0], [0,3,0,0,0,0,0,1,0], [0,6,0,8,0,0,9,2,0], [0,0,3,4,0,9,1,0,0], [0,4,9,0,0,6,0,3,0], [0,9,0,0,0,0,0,8,0], [0,1,0,0,0,0,6,7,0], [4,0,0,9,6,0,3,0,1]] basic_inv1 = [[9,0,6,0,1,3,0,0,8], [0,5,8,0,0,0,0,9,0], [0,3,0,0,0,0,0,1,0], [0,6,0,8,0,0,9,2,0], [0,0,3,4,0,9,9,0,0], [0,4,9,0,0,6,0,3,0], [0,9,0,0,0,0,0,8,0], [0,1,0,0,0,0,6,7,0], [4,0,0,9,6,0,3,0,1]] basic_inv2 = [[9,0,6,0,1,3,0,0,8], [1,5,8,0,0,0,0,9,0], [0,3,1,0,0,0,0,1,0], [0,6,0,8,0,0,9,2,0], [0,0,3,4,0,9,1,0,0], [0,4,9,0,0,6,0,3,0], [0,9,0,0,0,0,0,8,0], [0,1,0,0,0,0,6,7,0], [4,0,0,9,6,0,3,0,1]] -- cross start sudokus cross_start1 = [[0,0,3,4,0,0,0,8,0], [4,5,6,7,8,9,1,2,0], [7,8,0,1,2,3,0,5,0], [0,6,4,2,1,7,9,3,0], [2,9,1,5,3,8,0,7,4], [3,0,8,6,9,4,0,0,0], [0,3,5,9,0,2,0,4,1], [0,1,7,8,0,0,0,6,2], [0,0,2,0,6,1,0,0,0]] cross_start2 = [[0,0,3,4,0,0,0,0,0], [4,5,0,7,8,9,1,0,0], [7,8,0,1,2,3,0,5,0], [0,6,4,2,1,7,9,0,0], [2,9,1,5,0,0,0,7,4], [0,0,8,6,9,4,0,0,0], [0,0,5,9,0,2,0,4,1], [0,0,7,8,0,0,0,6,2], [0,0,2,0,0,1,0,0,0]] cross_inv1 = [[0,0,3,4,0,0,0,0,0], [4,5,0,7,8,9,1,0,0], [7,8,0,1,2,3,0,5,0], [0,6,4,2,1,7,9,0,0], [2,9,1,5,0,0,0,7,4], [0,0,8,6,9,4,0,0,0], [0,0,5,9,0,2,0,4,1], [0,0,7,8,0,0,0,6,2], [0,0,2,0,0,1,0,0,6]] -- color start sudokus color_start1 = [[1,2,3,0,5,0,0,0,9], [0,0,0,0,0,0,0,0,3], [7,0,9,0,2,3,4,5,6], [2,0,1,0,0,4,8,9,5], [8,0,5,9,1,2,0,0,0], [0,0,0,5,3,8,2,7,1], [0,0,0,3,6,7,5,4,8], [5,4,8,2,9,0,0,0,0], [0,6,7,8,4,0,0,0,0]] color_start2 = [[0,0,3,4,5,0,0,0,0], [0,0,6,0,0,0,1,2,3], [0,8,9,1,2,3,4,5,6], [0,3,1,6,7,4,8,9,5], [0,7,5,0,0,0,3,0,0], [6,9,4,5,3,0,2,0,0], [9,1,2,3,0,0,0,0,0], [0,0,0,2,9,0,6,0,0], [0,0,0,8,4,0,0,0,0]] color_inv1 = [[0,0,3,4,5,0,0,0,0], [0,0,6,0,0,6,1,2,3], [0,8,9,1,2,3,4,5,6], [0,3,1,6,7,4,8,9,5], [0,7,5,0,0,0,3,0,0], [6,9,4,5,3,0,2,0,0], [9,1,2,3,0,0,0,0,0], [0,0,0,2,9,0,6,0,0], [0,0,0,8,4,0,0,0,0]] -- 2.a t_val1 = (isValid basic_start1 Basic) == True t_val2 = (isValid basic_start2 Basic) == True t_val3 = (isValid basic_start3 Basic) == True t_val4 = (isValid cross_start1 Cross) == True t_val5 = (isValid cross_start2 Cross) == True t_val6 = (isValid color_start1 Color) == True t_val7 = (isValid color_start2 Color) == True t_val8 = (isValid basic_inv1 Basic) == False t_val9 = (isValid basic_inv2 Basic) == False t_val10 = (isValid cross_inv1 Cross) == False t_val11 = (isValid color_inv1 Color) == False test_isValid = and [t_val1,t_val2,t_val3,t_val4,t_val5,t_val6,t_val7, t_val8,t_val9,t_val10,t_val11] -- 2.b -- * Beachten Sie, dass die voll ausgefuellte Sudoku zu einer Anfangs-Sudoku-Matrix i.a nicht eindeutig ist -- Basis-Instanzen t_basic1 = (solve basic_start1 Basic) == (Just [[9,1,6,3,5,4,8,7,2],[8,7,3,6,2,9,1,5,4],[5,2,4,7,1,8,9,3,6],[7,6,8,9,3,5,2,4,1],[1,4,9,2,8,7,3,6,5],[2,3,5,4,6,1,7,9,8],[6,9,7,8,4,2,5,1,3],[3,8,1,5,7,6,4,2,9],[4,5,2,1,9,3,6,8,7]]) t_basic2 = (solve basic_start2 Basic) == (Just [[6,2,4,3,5,7,1,8,9],[9,7,1,6,2,8,3,5,4],[8,3,5,4,9,1,7,2,6],[5,6,3,8,7,2,9,4,1],[2,8,9,1,3,4,6,7,5],[4,1,7,5,6,9,2,3,8],[3,4,6,2,1,5,8,9,7],[7,5,2,9,8,6,4,1,3],[1,9,8,7,4,3,5,6,2]]) t_basic3 = (solve basic_start3 Basic) == (Just [[9,7,6,5,1,3,2,4,8],[1,5,8,6,4,2,7,9,3],[2,3,4,7,9,8,5,1,6],[7,6,1,8,3,5,9,2,4],[8,2,3,4,7,9,1,6,5],[5,4,9,1,2,6,8,3,7],[6,9,7,3,5,1,4,8,2],[3,1,5,2,8,4,6,7,9],[4,8,2,9,6,7,3,5,1]]) t_basic4 = (solve basic_inv1 Basic) == Nothing t_basic5 = (solve basic_inv2 Basic) == Nothing test_basic = and [t_basic1, t_basic2, t_basic3, t_basic4, t_basic5] -- Kreuz-Instanzen t_cross1 = (solve cross_start1 Cross) == (Just [[1,2,3,4,5,6,7,8,9],[4,5,6,7,8,9,1,2,3],[7,8,9,1,2,3,4,5,6],[5,6,4,2,1,7,9,3,8],[2,9,1,5,3,8,6,7,4],[3,7,8,6,9,4,2,1,5],[6,3,5,9,7,2,8,4,1],[9,1,7,8,4,5,3,6,2],[8,4,2,3,6,1,5,9,7]]) t_cross2 = (solve cross_start2 Cross) == (Just [[1,2,3,4,5,6,7,8,9],[4,5,6,7,8,9,1,2,3],[7,8,9,1,2,3,4,5,6],[5,6,4,2,1,7,9,3,8],[2,9,1,5,3,8,6,7,4],[3,7,8,6,9,4,2,1,5],[6,3,5,9,7,2,8,4,1],[9,1,7,8,4,5,3,6,2],[8,4,2,3,6,1,5,9,7]]) t_cross3 = (solve cross_inv1 Cross) == Nothing test_cross = and [t_cross1, t_cross2, t_cross3] -- Farb-Instanzen -- Die Loesungen zu Color Instanzen sind nicht eindeutig t_color1 = (solve color_start1 Color) == (Just [[1,2,3,4,5,6,7,8,9],[4,5,6,7,8,9,1,2,3],[7,8,9,1,2,3,4,5,6],[2,3,1,6,7,4,8,9,5],[8,7,5,9,1,2,3,6,4],[6,9,4,5,3,8,2,7,1],[9,1,2,3,6,7,5,4,8],[5,4,8,2,9,1,6,3,7],[3,6,7,8,4,5,9,1,2]]) t_color2 = (solve color_start2 Color) == (Just [[1,2,3,4,5,6,7,8,9],[4,5,6,7,8,9,1,2,3],[7,8,9,1,2,3,4,5,6],[2,3,1,6,7,4,8,9,5],[8,7,5,9,1,2,3,6,4],[6,9,4,5,3,8,2,7,1],[9,1,2,3,6,7,5,4,8],[5,4,8,2,9,1,6,3,7],[3,6,7,8,4,5,9,1,2]]) t_color3 = (solve color_inv1 Color) == Nothing test_color = and [t_color1, t_color2, t_color3] test_all = and [test_isValid, test_basic, test_cross, test_color]