### TTY Sudoku - by ZhanEn (Eric) Chan %eden empty is ""; a1 = a2 = a3 = a4 = a5 = a6 = a7 = a8 = a9 = empty; b1 = b2 = b3 = b4 = b5 = b6 = b7 = b8 = b9 = empty; c1 = c2 = c3 = c4 = c5 = c6 = c7 = c8 = c9 = empty; d1 = d2 = d3 = d4 = d5 = d6 = d7 = d8 = d9 = empty; e1 = e2 = e3 = e4 = e5 = e6 = e7 = e8 = e9 = empty; f1 = f2 = f3 = f4 = f5 = f6 = f7 = f8 = f9 = empty; g1 = g2 = g3 = g4 = g5 = g6 = g7 = g8 = g9 = empty; h1 = h2 = h3 = h4 = h5 = h6 = h7 = h8 = h9 = empty; i1 = i2 = i3 = i4 = i5 = i6 = i7 = i8 = i9 = empty; columnA is [a1, a2, a3, a4, a5, a6, a7, a8, a9]; columnB is [b1, b2, b3, b4, b5, b6, b7, b8, b9]; columnC is [c1, c2, c3, c4, c5, c6, c7, c8, c9]; columnD is [d1, d2, d3, d4, d5, d6, d7, d8, d9]; columnE is [e1, e2, e3, e4, e5, e6, e7, e8, e9]; columnF is [f1, f2, f3, f4, f5, f6, f7, f8, f9]; columnG is [g1, g2, g3, g4, g5, g6, g7, g8, g9]; columnH is [h1, h2, h3, h4, h5, h6, h7, h8, h9]; columnI is [i1, i2, i3, i4, i5, i6, i7, i8, i9]; row1 is [a1, b1, c1, d1, e1, f1, g1, h1, i1]; row2 is [a2, b2, c2, d2, e2, f2, g2, h2, i2]; row3 is [a3, b3, c3, d3, e3, f3, g3, h3, i3]; row4 is [a4, b4, c4, d4, e4, f4, g4, h4, i4]; row5 is [a5, b5, c5, d5, e5, f5, g5, h5, i5]; row6 is [a6, b6, c6, d6, e6, f6, g6, h6, i6]; row7 is [a7, b7, c7, d7, e7, f7, g7, h7, i7]; row8 is [a8, b8, c8, d8, e8, f8, g8, h8, i8]; row9 is [a9, b9, c9, d9, e9, f9, g9, h9, i9]; region1 is [a1, a2, a3, b1, b2, b3, c1, c2, c3]; region2 is [d1, d2, d3, e1, e2, e3, f1, f2, f3]; region3 is [g1, g2, g3, h1, h2, h3, i1, i2, i3]; region4 is [a4, a5, a6, b4, b5, b6, c4, c5, c6]; region5 is [d4, d5, d6, e4, e5, e6, f4, f5, f6]; region6 is [g4, g5, g6, h4, h5, h6, i4, i5, i6]; region7 is [a7, a8, a9, b7, b8, b9, c7, c8, c9]; region8 is [d7, d8, d9, e7, e8, e9, f7, f8, f9]; region9 is [g7, g8, g9, h7, h8, h9, i7, i8, i9]; borderSymbol is "="; verticalSymbol is "|"; horizontalSymbol is "-"; crossSymbol is "+"; undefSymbol is "_"; topBorder is borderSymbol // borderSymbol // borderSymbol // borderSymbol // borderSymbol // borderSymbol // borderSymbol // borderSymbol // borderSymbol // borderSymbol // borderSymbol // borderSymbol // borderSymbol; bottomBorder is borderSymbol // borderSymbol // borderSymbol // borderSymbol // borderSymbol // borderSymbol // borderSymbol // borderSymbol // borderSymbol // borderSymbol // borderSymbol // borderSymbol // borderSymbol; rowSeparator is borderSymbol // horizontalSymbol // horizontalSymbol // horizontalSymbol // crossSymbol // horizontalSymbol // horizontalSymbol // horizontalSymbol // crossSymbol // horizontalSymbol // horizontalSymbol // horizontalSymbol // borderSymbol; func padsq { para digstr; return (digstr=="") ? " " : digstr; } line1 is verticalSymbol // padsq(a1) // padsq(b1) // padsq(c1) // verticalSymbol // padsq(d1) // padsq(e1) // padsq(f1) // verticalSymbol // padsq(g1) // padsq(h1) // padsq(i1) // verticalSymbol; line2 is verticalSymbol // padsq(a2) // padsq(b2) // padsq(c2) // verticalSymbol // padsq(d2) // padsq(e2) // padsq(f2) // verticalSymbol // padsq(g2) // padsq(h2) // padsq(i2) // verticalSymbol; line3 is verticalSymbol // padsq(a3) // padsq(b3) // padsq(c3) // verticalSymbol // padsq(d3) // padsq(e3) // padsq(f3) // verticalSymbol // padsq(g3) // padsq(h3) // padsq(i3) // verticalSymbol; line4 is verticalSymbol // padsq(a4) // padsq(b4) // padsq(c4) // verticalSymbol // padsq(d4) // padsq(e4) // padsq(f4) // verticalSymbol // padsq(g4) // padsq(h4) // padsq(i4) // verticalSymbol; line5 is verticalSymbol // padsq(a5) // padsq(b5) // padsq(c5) // verticalSymbol // padsq(d5) // padsq(e5) // padsq(f5) // verticalSymbol // padsq(g5) // padsq(h5) // padsq(i5) // verticalSymbol; line6 is verticalSymbol // padsq(a6) // padsq(b6) // padsq(c6) // verticalSymbol // padsq(d6) // padsq(e6) // padsq(f6) // verticalSymbol // padsq(g6) // padsq(h6) // padsq(i6) // verticalSymbol; line7 is verticalSymbol // padsq(a7) // padsq(b7) // padsq(c7) // verticalSymbol // padsq(d7) // padsq(e7) // padsq(f7) // verticalSymbol // padsq(g7) // padsq(h7) // padsq(i7) // verticalSymbol; line8 is verticalSymbol // padsq(a8) // padsq(b8) // padsq(c8) // verticalSymbol // padsq(d8) // padsq(e8) // padsq(f8) // verticalSymbol // padsq(g8) // padsq(h8) // padsq(i8) // verticalSymbol; line9 is verticalSymbol // padsq(a9) // padsq(b9) // padsq(c9) // verticalSymbol // padsq(d9) // padsq(e9) // padsq(f9) // verticalSymbol // padsq(g9) // padsq(h9) // padsq(i9) // verticalSymbol; proc display_board : a1, a2, a3, a4, a5, a6, a7, a8, a9, b1, b2, b3, b4, b5, b6, b7, b8, b9, c1, c2, c3, c4, c5, c6, c7, c8, c9, d1, d2, d3, d4, d5, d6, d7, d8, d9, e1, e2, e3, e4, e5, e6, e7, e8, e9, f1, f2, f3, f4, f5, f6, f7, f8, f9, g1, g2, g3, g4, g5, g6, g7, g8, g9, h1, h2, h3, h4, h5, h6, h7, h8, h9, i1, i2, i3, i4, i5, i6, i7, i8, i9 { writeln( topBorder ); writeln( line1 ); writeln( line2 ); writeln( line3 ); writeln( rowSeparator ); writeln( line4 ); writeln( line5 ); writeln( line6 ); writeln( rowSeparator ); writeln( line7 ); writeln( line8 ); writeln( line9 ); writeln( bottomBorder ); } proc loadPuzzle { para filepath; include(filepath); } /* This function is modified from sudokuKing2006 */ proc savePuzzle { para filepath; auto fp,i,j,k,result,columns,rows,this_cell, this_string; result = []; columns = ["a", "b", "c", "d", "e", "f", "g", "h", "i" ]; rows = [ "1", "2", "3", "4", "5", "6", "7", "8", "9" ]; for(i=1; i <= columns#; i++) { for(j=1; j <= rows#; j++) { this_cell = columns[i] // rows[j]; this_string = symboldefinition(this_cell); append result, this_string; } } fp=fopen(filepath, "w"); fprintf( fp,"autocalc=0;\n" ); for(k=1;k<=result#;k++) { fprintf( fp, result[k] // "\n" ); } fprintf( fp, "autocalc=1;\n" ); fclose( fp ); } proc writePuzzle { para filepath; auto fp; fp=fopen(filepath, "w"); fprintf( fp, topBorder ); fprintf( fp, "\n" ); fprintf( fp, line1 ); fprintf( fp, "\n" ); fprintf( fp, line2 ); fprintf( fp, "\n" ); fprintf( fp, line3 ); fprintf( fp, "\n" ); fprintf( fp, rowSeparator ); fprintf( fp, "\n" ); fprintf( fp, line4 ); fprintf( fp, "\n" ); fprintf( fp, line5 ); fprintf( fp, "\n" ); fprintf( fp, line6 ); fprintf( fp, "\n" ); fprintf( fp, rowSeparator ); fprintf( fp, "\n" ); fprintf( fp, line7 ); fprintf( fp, "\n" ); fprintf( fp, line8 ); fprintf( fp, "\n" ); fprintf( fp, line9 ); fprintf( fp, "\n" ); fprintf( fp, bottomBorder ); fprintf( fp, "\n" ); fclose( fp ); } /* for (i=1; i<=21; i++) { include("puzzle" // str(i) // ".txt"); eager(); writePuzzle("wpuzzle" // str(i)); }; */