diff --git a/Sudoku/SudokuEvent.mch b/Sudoku/SudokuEvent.mch new file mode 100644 index 0000000000000000000000000000000000000000..2aa9304e68814271f745c0d2a580b1ae0885e652 --- /dev/null +++ b/Sudoku/SudokuEvent.mch @@ -0,0 +1,93 @@ +MACHINE SudokuEvent +/* A version of Sudoku where the solving happens inside an event + (c) Michael Leuschel +*/ +DEFINITIONS + Sze == 3; Mx==(Sze*Sze); + DOM == 1..Mx; D1 == 1..(Mx-1); D2 == 2..Mx ; + RAN == (1..Mx); + SET_PREF_MAXINT == 3; SET_PREF_TIME_OUT == 45000; + SUBSQ == ran(%i.(i:1..Sze | ((i-1)*Sze+1)..i*Sze)); + SUBSQE == { {1,2,3,4}, {5,6,7,8}, {9,10,11,12}, {13,14,15,16} }; + ANIMATION_FUNCTION_DEFAULT == {r,c,i|r:1..Mx & c:1..Mx & i=16}; + ANIMATION_FUNCTION == ( {r,c,i|r:DOM & c:DOM & i:RAN & i = Board(r)(c)} ); + ANIMATION_IMG0 == "images/sm_0.gif"; + ANIMATION_IMG1 == "images/sm_1.gif"; + ANIMATION_IMG2 == "images/sm_2.gif"; + ANIMATION_IMG3 == "images/sm_3.gif"; + ANIMATION_IMG4 == "images/sm_4.gif"; + ANIMATION_IMG5 == "images/sm_5.gif"; + ANIMATION_IMG6 == "images/sm_6.gif"; + ANIMATION_IMG7 == "images/sm_7.gif"; + ANIMATION_IMG8 == "images/sm_8.gif"; + ANIMATION_IMG9 == "images/sm_9.gif"; + ANIMATION_IMG16 == "images/sm_empty_box.gif"; + SET_PREF_MAX_OPERATIONS == 82; + + /* PUZZLE CONSTRAINTS : */ +PUZZLE == ( + + Board(1)(1)=7 & Board(1)(2)=8 & Board(1)(3)=1 & Board(1)(4)=6 & Board(1)(6)=2 + & Board(1)(7)=9 & Board(1)(9) = 5 & + Board(2)(1)=9 & Board(2)(3)=2 & Board(2)(4)=7 & Board(2)(5)=1 & + Board(3)(3)=6 & Board(3)(4)=8 & Board(3)(8)=1 & Board(3)(9)=2 & + + Board(4)(1)=2 & Board(4)(4)=3 & Board(4)(7)=8 & Board(4)(8)=5 & Board(4)(9)=1 & + Board(5)(2)=7 & Board(5)(3)=3 & Board(5)(4)=5 & Board(5)(9)=4 & + Board(6)(3)=8 & Board(6)(6)=9 & Board(6)(7)=3 & Board(6)(8)=6 & + + Board(7)(1)=1 & Board(7)(2)=9 & Board(7)(6)=7 & Board(7)(8)=8 & + Board(8)(1)=8 & Board(8)(2)=6 & Board(8)(3)=7 & Board(8)(6)=3 & Board(8)(7)=4 & Board(8)(9)=9 & + Board(9)(3)=5 & Board(9)(7)=1 + ); + + UnassignedPosition(x,y) == x:DOM & y:DOM & not(y:dom(Board(x))) +VARIABLES + Board, + curx, cury +INVARIANT + Board : DOM --> (DOM +-> RAN) & + curx : DOM & + cury : DOM +INITIALISATION + Board : (Board : DOM --> (DOM +-> RAN) & PUZZLE) || + curx, cury := 1,1 +OPERATIONS + SetEmpty = BEGIN Board := %i.(i:DOM|{}) END; + + SetPuzzle = BEGIN Board : (Board : DOM --> (DOM +-> RAN) & PUZZLE) END; + + //val <-- GetBoard(x,y) = PRE x:DOM & y:dom(Board(x)) THEN val := Board(x)(y) END; + + SetCurPos(x,y) = PRE x:DOM & y:DOM THEN + curx, cury := x,y + END; + SetBoard(val) = PRE val:RAN THEN + Board(curx)(cury) := val // Set the Value at a given board position + END; + + solve(SBoard) = PRE + SBoard : DOM --> (DOM --> RAN) /*@desc "The solution must be complete" */ & + !(x,y).(y:dom(Board(x)) + => SBoard(x)(y) = Board(x)(y)) /*@desc "Copy partial solution (Board variable)" */ & + !y.(y:DOM => + LET By BE By = SBoard(y) IN + !(x1).(x1:D1 + => !x2.(x1<x2 & x2:D2 + => (SBoard(x1)(y) /= SBoard(x2)(y) & + By(x1) /= By(x2))) + ) + END + ) /*@desc "Values are distinct on all columns and rows" */ + & + !(s1,s2).(s1:SUBSQ & s2:SUBSQ => !x1.(x1:s1 => + !(y1,x2,y2).( (x1:s1 & x2:s1 & x1>=x2 & y1:s2 & y2:s2 & (x1=x2 => y1>y2) + & (x1,y1) /= (x2,y2) ) + => + SBoard(x1)(y1) /= SBoard(x2)(y2) + ) + ) ) /*@desc "Values are all distinct within each Sub-Square" */ + THEN + Board := SBoard + END +END \ No newline at end of file diff --git a/Sudoku/SudokuFeld.svg b/Sudoku/SudokuFeld.svg new file mode 100644 index 0000000000000000000000000000000000000000..e2c01fa7137a35e69b924a156f425a094e930fca --- /dev/null +++ b/Sudoku/SudokuFeld.svg @@ -0,0 +1,923 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns="http://www.w3.org/2000/svg" + width="900" + height="900" + viewBox="5 15 150 120" + version="1.1" + id="svg5154"> + + <style id="sudoku_styles"> + .normal { + stroke : lightgray; + stroke-width : 0.1; + fill : white + } + .selected { + stroke : black; + stroke-width : 0.1; + fill : lightgray + } + .wrong { + stroke : red; + stroke-width : 0.1; + fill : rosybrown + } + .hover { + stroke : black; + stroke-width : 0.1; + fill : yellow + } +</style> + + <g id = "g_1_1"> + <rect id = "board_1_1" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_1_1" visibility="visible">1</tspan> + </text> + </g> + + <g id = "g_1_2" transform="translate(0,10)"> + <rect id = "board_1_2" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_1_2" visibility="visible">0</tspan> + </text> + </g> + + <g id = "g_1_3" transform="translate(0,20)"> + <rect id = "board_1_3" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_1_3" visibility="visible">1</tspan> + </text> + </g> + + <g id = "g_1_4" transform="translate(0,30)"> + <rect id = "board_1_4" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_1_4" visibility="visible">6</tspan> + </text> + </g> + + <g id = "g_1_5" transform="translate(0,40)"> + <rect id = "board_1_5" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_1_5" visibility="visible">8</tspan> + </text> + </g> + + <g id = "g_1_6" transform="translate(0,50)"> + <rect id = "board_1_6" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_1_6" visibility="visible">0</tspan> + </text> + </g> + + <g id = "g_1_7" transform="translate(0,60)"> + <rect id = "board_1_7" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_1_7" visibility="visible">7</tspan> + </text> + </g> + + <g id = "g_1_8" transform="translate(0,70)"> + <rect id = "board_1_8" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_1_8" visibility="visible">3</tspan> + </text> + </g> + + <g id = "g_1_9" transform="translate(0,80)"> + <rect id = "board_1_9" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_1_9" visibility="visible">5</tspan> + </text> + </g> + + <g id = "g_2_1" transform="translate(10,0)"> + <rect id = "board_2_1" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_2_1" visibility="visible">6</tspan> + </text> + </g> + + <g id = "g_2_2" transform="translate(10,10)"> + <rect id = "board_2_2" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_2_2" visibility="visible">1</tspan> + </text> + </g> + + <g id = "g_2_3" transform="translate(10,20)"> + <rect id = "board_2_3" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_2_3" visibility="visible">2</tspan> + </text> + </g> + + <g id = "g_2_4" transform="translate(10,30)"> + <rect id = "board_2_4" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_2_4" visibility="visible">0</tspan> + </text> + </g> + + <g id = "g_2_5" transform="translate(10,40)"> + <rect id = "board_2_5" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_2_5" visibility="visible">1</tspan> + </text> + </g> + + <g id = "g_2_6" transform="translate(10,50)"> + <rect id = "board_2_6" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_2_6" visibility="visible">3</tspan> + </text> + </g> + + <g id = "g_2_7" transform="translate(10,60)"> + <rect id = "board_2_7" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_2_7" visibility="visible">5</tspan> + </text> + </g> + + <g id = "g_2_8" transform="translate(10,70)"> + <rect id = "board_2_8" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_2_8" visibility="visible">1</tspan> + </text> + </g> + + <g id = "g_2_9" transform="translate(10,80)"> + <rect id = "board_2_9" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_2_9" visibility="visible">0</tspan> + </text> + </g> + + <g id = "g_3_1" transform="translate(20,0)"> + <rect id = "board_3_1" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_3_1" visibility="visible">6</tspan> + </text> + </g> + + <g id = "g_3_2" transform="translate(20,10)"> + <rect id = "board_3_2" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_3_2" visibility="visible">1</tspan> + </text> + </g> + + <g id = "g_3_3" transform="translate(20,20)"> + <rect id = "board_3_3" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_3_3" visibility="visible">7</tspan> + </text> + </g> + + <g id = "g_3_4" transform="translate(20,30)"> + <rect id = "board_3_4" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_3_4" visibility="visible">1</tspan> + </text> + </g> + + <g id = "g_3_5" transform="translate(20,40)"> + <rect id = "board_3_5" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_3_5" visibility="visible">3</tspan> + </text> + </g> + + <g id = "g_3_6" transform="translate(20,50)"> + <rect id = "board_3_6" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_3_6" visibility="visible">3</tspan> + </text> + </g> + + <g id = "g_3_7" transform="translate(20,60)"> + <rect id = "board_3_7" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_3_7" visibility="visible">4</tspan> + </text> + </g> + + <g id = "g_3_8" transform="translate(20,70)"> + <rect id = "board_3_8" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_3_8" visibility="visible">5</tspan> + </text> + </g> + + <g id = "g_3_9" transform="translate(20,80)"> + <rect id = "board_3_9" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_3_9" visibility="visible">1</tspan> + </text> + </g> + + <g id = "g_4_1" transform="translate(30,0)"> + <rect id = "board_4_1" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_4_1" visibility="visible">4</tspan> + </text> + </g> + + <g id = "g_4_2" transform="translate(30,10)"> + <rect id = "board_4_2" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_4_2" visibility="visible">4</tspan> + </text> + </g> + + <g id = "g_4_3" transform="translate(30,20)"> + <rect id = "board_4_3" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_4_3" visibility="visible">4</tspan> + </text> + </g> + + <g id = "g_4_4" transform="translate(30,30)"> + <rect id = "board_4_4" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_4_4" visibility="visible">5</tspan> + </text> + </g> + + <g id = "g_4_5" transform="translate(30,40)"> + <rect id = "board_4_5" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_4_5" visibility="visible">4</tspan> + </text> + </g> + + <g id = "g_4_6" transform="translate(30,50)"> + <rect id = "board_4_6" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_4_6" visibility="visible">8</tspan> + </text> + </g> + + <g id = "g_4_7" transform="translate(30,60)"> + <rect id = "board_4_7" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_4_7" visibility="visible">6</tspan> + </text> + </g> + + <g id = "g_4_8" transform="translate(30,70)"> + <rect id = "board_4_8" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_4_8" visibility="visible">7</tspan> + </text> + </g> + + <g id = "g_4_9" transform="translate(30,80)"> + <rect id = "board_4_9" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_4_9" visibility="visible">3</tspan> + </text> + </g> + + <g id = "g_5_1" transform="translate(40,0)"> + <rect id = "board_5_1" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_5_1" visibility="visible">5</tspan> + </text> + </g> + + <g id = "g_5_2" transform="translate(40,10)"> + <rect id = "board_5_2" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_5_2" visibility="visible">7</tspan> + </text> + </g> + + <g id = "g_5_3" transform="translate(40,20)"> + <rect id = "board_5_3" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_5_3" visibility="visible">1</tspan> + </text> + </g> + + <g id = "g_5_4" transform="translate(40,30)"> + <rect id = "board_5_4" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_5_4" visibility="visible">7</tspan> + </text> + </g> + + <g id = "g_5_5" transform="translate(40,40)"> + <rect id = "board_5_5" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_5_5" visibility="visible">7</tspan> + </text> + </g> + + <g id = "g_5_6" transform="translate(40,50)"> + <rect id = "board_5_6" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_5_6" visibility="visible">0</tspan> + </text> + </g> + + <g id = "g_5_7" transform="translate(40,60)"> + <rect id = "board_5_7" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_5_7" visibility="visible">8</tspan> + </text> + </g> + + <g id = "g_5_8" transform="translate(40,70)"> + <rect id = "board_5_8" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_5_8" visibility="visible">1</tspan> + </text> + </g> + + <g id = "g_5_9" transform="translate(40,80)"> + <rect id = "board_5_9" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_5_9" visibility="visible">7</tspan> + </text> + </g> + + <g id = "g_6_1" transform="translate(50,0)"> + <rect id = "board_6_1" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_6_1" visibility="visible">0</tspan> + </text> + </g> + + <g id = "g_6_2" transform="translate(50,10)"> + <rect id = "board_6_2" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_6_2" visibility="visible">7</tspan> + </text> + </g> + + <g id = "g_6_3" transform="translate(50,20)"> + <rect id = "board_6_3" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_6_3" visibility="visible">7</tspan> + </text> + </g> + + <g id = "g_6_4" transform="translate(50,30)"> + <rect id = "board_6_4" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_6_4" visibility="visible">0</tspan> + </text> + </g> + + <g id = "g_6_5" transform="translate(50,40)"> + <rect id = "board_6_5" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_6_5" visibility="visible">2</tspan> + </text> + </g> + + <g id = "g_6_6" transform="translate(50,50)"> + <rect id = "board_6_6" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_6_6" visibility="visible">6</tspan> + </text> + </g> + + <g id = "g_6_7" transform="translate(50,60)"> + <rect id = "board_6_7" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_6_7" visibility="visible">1</tspan> + </text> + </g> + + <g id = "g_6_8" transform="translate(50,70)"> + <rect id = "board_6_8" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_6_8" visibility="visible">1</tspan> + </text> + </g> + + <g id = "g_6_9" transform="translate(50,80)"> + <rect id = "board_6_9" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_6_9" visibility="visible">5</tspan> + </text> + </g> + + <g id = "g_7_1" transform="translate(60,0)"> + <rect id = "board_7_1" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_7_1" visibility="visible">0</tspan> + </text> + </g> + + <g id = "g_7_2" transform="translate(60,10)"> + <rect id = "board_7_2" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_7_2" visibility="visible">6</tspan> + </text> + </g> + + <g id = "g_7_3" transform="translate(60,20)"> + <rect id = "board_7_3" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_7_3" visibility="visible">6</tspan> + </text> + </g> + + <g id = "g_7_4" transform="translate(60,30)"> + <rect id = "board_7_4" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_7_4" visibility="visible">6</tspan> + </text> + </g> + + <g id = "g_7_5" transform="translate(60,40)"> + <rect id = "board_7_5" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_7_5" visibility="visible">6</tspan> + </text> + </g> + + <g id = "g_7_6" transform="translate(60,50)"> + <rect id = "board_7_6" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_7_6" visibility="visible">4</tspan> + </text> + </g> + + <g id = "g_7_7" transform="translate(60,60)"> + <rect id = "board_7_7" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_7_7" visibility="visible">4</tspan> + </text> + </g> + + <g id = "g_7_8" transform="translate(60,70)"> + <rect id = "board_7_8" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_7_8" visibility="visible">4</tspan> + </text> + </g> + + <g id = "g_7_9" transform="translate(60,80)"> + <rect id = "board_7_9" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_7_9" visibility="visible">4</tspan> + </text> + </g> + + <g id = "g_8_1" transform="translate(70,0)"> + <rect id = "board_8_1" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_8_1" visibility="visible">7</tspan> + </text> + </g> + + <g id = "g_8_2" transform="translate(70,10)"> + <rect id = "board_8_2" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_8_2" visibility="visible">2</tspan> + </text> + </g> + + <g id = "g_8_3" transform="translate(70,20)"> + <rect id = "board_8_3" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_8_3" visibility="visible">5</tspan> + </text> + </g> + + <g id = "g_8_4" transform="translate(70,30)"> + <rect id = "board_8_4" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_8_4" visibility="visible">3</tspan> + </text> + </g> + + <g id = "g_8_5" transform="translate(70,40)"> + <rect id = "board_8_5" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_8_5" visibility="visible">8</tspan> + </text> + </g> + + <g id = "g_8_6" transform="translate(70,50)"> + <rect id = "board_8_6" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_8_6" visibility="visible">4</tspan> + </text> + </g> + + <g id = "g_8_7" transform="translate(70,60)"> + <rect id = "board_8_7" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_8_7" visibility="visible">6</tspan> + </text> + </g> + + <g id = "g_8_8" transform="translate(70,70)"> + <rect id = "board_8_8" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_8_8" visibility="visible">5</tspan> + </text> + </g> + + <g id = "g_8_9" transform="translate(70,80)"> + <rect id = "board_8_9" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_8_9" visibility="visible">7</tspan> + </text> + </g> + + <g id = "g_9_1" transform="translate(80,0)"> + <rect id = "board_9_1" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_9_1" visibility="visible">3</tspan> + </text> + </g> + + <g id = "g_9_2" transform="translate(80,10)"> + <rect id = "board_9_2" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_9_2" visibility="visible">6</tspan> + </text> + </g> + + <g id = "g_9_3" transform="translate(80,20)"> + <rect id = "board_9_3" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_9_3" visibility="visible">5</tspan> + </text> + </g> + + <g id = "g_9_4" transform="translate(80,30)"> + <rect id = "board_9_4" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_9_4" visibility="visible">6</tspan> + </text> + </g> + + <g id = "g_9_5" transform="translate(80,40)"> + <rect id = "board_9_5" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_9_5" visibility="visible">5</tspan> + </text> + </g> + + <g id = "g_9_6" transform="translate(80,50)"> + <rect id = "board_9_6" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_9_6" visibility="visible">2</tspan> + </text> + </g> + + <g id = "g_9_7" transform="translate(80,60)"> + <rect id = "board_9_7" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_9_7" visibility="visible">0</tspan> + </text> + </g> + + <g id = "g_9_8" transform="translate(80,70)"> + <rect id = "board_9_8" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_9_8" visibility="visible">1</tspan> + </text> + </g> + + <g id = "g_9_9" transform="translate(80,80)"> + <rect id = "board_9_9" + width="10" height="10" x="10" y="10" + class = "normal" + /> + <text text-align="left" x="13" y="18" + font-size ="8" font-family="sans-serif "> + <tspan id="txt_9_9" visibility="visible">3</tspan> + </text> + </g> +</svg> \ No newline at end of file diff --git a/Sudoku/visb_sudoku.json b/Sudoku/visb_sudoku.json new file mode 100644 index 0000000000000000000000000000000000000000..1358523905400c8ce4a5d58a15f5bb78202b0692 --- /dev/null +++ b/Sudoku/visb_sudoku.json @@ -0,0 +1,43 @@ +{ + "svg":"SudokuFeld.svg", + "definitions": + [ + { "name":"BOARD", + "value" : "%x.(x:DOM|%y.(y:DOM|0) <+ Board(x))" + } + ], + "items": [ + { + "for": {"from":1, "to":9}, + "repeat": [1,2,3,4,5,6,7,8,9], + "id": "txt_%0_%1", + "attr": "text", + "value" : "BOARD(%0)(%1)" + }, + { + "for": {"from":1, "to":9}, + "repeat": [1,2,3,4,5,6,7,8,9], + "id": "board_%0_%1", + "attr": "class", + "value" : "IF curx=%0 & cury=%1 THEN \"selected\" ELSIF %1:dom(Board(%0)) & (curx=%0 or cury=%1) & BOARD(%0)(%1)=BOARD(curx)(cury) THEN \"wrong\" ELSE \"normal\" END" + }, + { + "for": {"from":1, "to":9}, + "repeat": [1,2,3,4,5,6,7,8,9], + "id": "txt_%0_%1", + "attr": "visibility", + "value" : "IF %1 : dom(Board(%0)) THEN \"visible\" ELSE \"hidden\" END" + } +], + "events": [ + { + "for": {"from":1, "to":9}, + "repeat": [1,2,3,4,5,6,7,8,9], + "id": "g_%0_%1", + "event": "SetCurPos", + "predicates" : ["x=%0","y=%1"], + "hovers": [{ "attr":"stroke-width", "enter":"1", "leave":"0.1"} + ] + } + ] +}