From: John L. <jr...@us...> - 2007-01-09 06:08:38
|
Update of /cvsroot/wxlua/wxLua/samples In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv1727/samples Modified Files: wxluasudoku.wx.lua Log Message: more cleanup and tweaks Index: wxluasudoku.wx.lua =================================================================== RCS file: /cvsroot/wxlua/wxLua/samples/wxluasudoku.wx.lua,v retrieving revision 1.62 retrieving revision 1.63 diff -C2 -d -r1.62 -r1.63 *** wxluasudoku.wx.lua 8 Jan 2007 23:39:52 -0000 1.62 --- wxluasudoku.wx.lua 9 Jan 2007 06:08:34 -0000 1.63 *************** *** 554,558 **** for n = 1, 9 do for i, cell_table in pairs(sudokuTable.row_values[n]) do ! if TableCount(cell_table) > 1 then for j, cell in pairs(cell_table) do sudokuTable.invalid[cell] = true --- 554,558 ---- for n = 1, 9 do for i, cell_table in pairs(sudokuTable.row_values[n]) do ! if TableCount(cell_table) > 1 then -- if >= 2 then invalid for j, cell in pairs(cell_table) do sudokuTable.invalid[cell] = true *************** *** 649,654 **** for col = 1, 9 do local cell = sudoku.RowColToCell(row, col) ! if not exceptTable[cell] then ! sudokuTable = sudoku.RemoveCellPossible(cell, value, sudokuTable) end end --- 649,654 ---- for col = 1, 9 do local cell = sudoku.RowColToCell(row, col) ! if (not exceptTable[cell]) and sudokuTable.possible[cell][value] then ! sudokuTable.possible[cell][value] = nil end end *************** *** 661,666 **** for row = 1, 9 do local cell = sudoku.RowColToCell(row, col) ! if not exceptTable[cell] then ! sudokuTable = sudoku.RemoveCellPossible(cell, value, sudokuTable) end end --- 661,666 ---- for row = 1, 9 do local cell = sudoku.RowColToCell(row, col) ! if (not exceptTable[cell]) and sudokuTable.possible[cell][value] then ! sudokuTable.possible[cell][value] = nil end end *************** *** 671,681 **** function sudoku.RemovePossibleBlock(block, value, sudokuTable, exceptTable) exceptTable = exceptTable or {} ! local block_row, block_col = sudoku.BlockToRowCol(block) ! for r = block_row, block_row+2 do ! for c = block_col, block_col+2 do ! local cell = sudoku.RowColToCell(r, c) ! if not exceptTable[cell] then ! sudokuTable = sudoku.RemoveCellPossible(cell, value, sudokuTable) ! end end end --- 671,679 ---- function sudoku.RemovePossibleBlock(block, value, sudokuTable, exceptTable) exceptTable = exceptTable or {} ! local block_cell = sudoku.BlockToCell(block) ! for n = 1, 9 do ! local cell = n + block_cell + sudoku.LinearBlockCellTable[n] ! if (not exceptTable[cell]) and sudokuTable.possible[cell][value] then ! sudokuTable.possible[cell][value] = nil end end *************** *** 694,698 **** local row, col = sudoku.CellToRowCol(cell) local block = sudoku.CellToBlock(cell) - local cell_possible = sudoku.GetCellPossible(cell, sudokuTable) --- 692,695 ---- *************** *** 796,800 **** local cache_key = cache_key_flags ! -- convert key, value table to indexed table local count = 0 for n = 1, 9 do --- 793,797 ---- local cache_key = cache_key_flags ! -- convert key, value table to indexed table and a key for the cache local count = 0 for n = 1, 9 do *************** *** 4939,4968 **** local values = { ! 0,0,0, 0,0,8, 9,0,0, ! 0,0,0, 5,7,0, 6,1,0, ! 0,0,0, 0,0,1, 7,3,2, ! 0,6,0, 0,4,0, 0,0,1, ! 0,0,0, 7,0,3, 0,0,0, ! 4,0,0, 0,2,0, 0,8,0, ! 9,7,5, 3,0,0, 0,0,0, ! 0,2,4, 0,5,7, 0,0,0, ! 0,0,3, 2,0,0, 0,0,0 } local solution = { ! 7,1,2, 6,3,8, 9,4,5, ! 3,4,9, 5,7,2, 6,1,8, ! 8,5,6, 4,9,1, 7,3,2, ! 2,6,8, 9,4,5, 3,7,1, ! 5,9,1, 7,8,3, 2,6,4, ! 4,3,7, 1,2,6, 5,8,9, ! 9,7,5, 3,1,4, 8,2,6, ! 6,2,4, 8,5,7, 1,9,3, ! 1,8,3, 2,6,9, 4,5,7 } --- 4936,4965 ---- local values = { ! 5,0,0, 8,0,3, 0,6,0, ! 1,0,6, 0,9,2, 0,8,5, ! 0,0,8, 5,0,7, 0,4,0, ! 0,0,1, 0,3,4, 0,7,0, ! 0,9,0, 0,0,8, 1,3,4, ! 3,0,0, 0,2,0, 5,9,0, ! 0,0,5, 1,0,0, 0,0,3, ! 0,0,0, 0,0,9, 0,0,0, ! 0,0,7, 3,0,0, 4,0,9 } local solution = { ! 5,4,9, 8,1,3, 2,6,7, ! 1,7,6, 4,9,2, 3,8,5, ! 2,3,8, 5,6,7, 9,4,1, ! 8,5,1, 9,3,4, 6,7,2, ! 7,9,2, 6,5,8, 1,3,4, ! 3,6,4, 7,2,1, 5,9,8, ! 9,8,5, 1,4,6, 7,2,3, ! 4,1,3, 2,7,9, 8,5,6, ! 6,2,7, 3,8,5, 4,1,9 } *************** *** 5080,5081 **** --- 5077,5108 ---- ]] + + --[[ + a = {} + + for i = 1, 1000 do + local s = sudoku.GeneratePuzzle() + s = sudoku.GeneratePuzzleDifficulty(35, s, true) + s = sudoku.UpdateTable(s) + local n, h = sudoku.FindAllNakedHiddenGroups(true, s) + + --TableDump(n) + --TableDump(h) + local c = 0 + cnp = TableCount(n.pairs.cells) + cnt = TableCount(n.triplets.cells) + cnq = TableCount(n.quads.cells) + + chp = TableCount(h.pairs.cells) + cht = TableCount(h.triplets.cells) + chq = TableCount(h.quads.cells) + + + print(i, string.format("n %03d %03d %03d h %03d %03d %03d", cnp, cnt, cnq, chp, cht, chq)) + a[string.format("n %03d %03d %03d h %03d %03d %03d", cnp, cnt, cnq, chp, cht, chq)] = TableCopy(s.values) + + if (cnp > 0) and (cnt > 0) and (cnq > 0) and (chp > 0) and (cht > 0) and (chq > 0) then + break + end + end + ]] |