1
0

Fixed switched row/col and wording.

This commit is contained in:
Markus Birth 2014-01-26 15:40:36 +01:00
parent ab4a6e96e2
commit e947dc9eed
2 changed files with 32 additions and 32 deletions

View File

@ -34,55 +34,55 @@ class @SudokuSolver
@getSquareColCells: (board, squareid, squarecol) -> @getSquareColCells: (board, squareid, squarecol) ->
result = [] result = []
rb = Math.floor(squareid / board.dim) * board.dim # base row for square rb = Math.floor(squareid / board.dim) * board.dim # base row for square
cx = squareid % board.dim * board.dim + squarecol # x for column c = squareid % board.dim * board.dim + squarecol # column
for i in [0...board.dim] by 1 for i in [0...board.dim] by 1
result.push(board.cellAt(cx, rb + i)) result.push(board.cellAt(rb + i, c))
return result return result
@getSquareNonColCells: (board, squareid, squarecol) -> @getSquareNonColCells: (board, squareid, squarecol) ->
result = [] result = []
rb = Math.floor(squareid / board.dim) * board.dim # base row for square rb = Math.floor(squareid / board.dim) * board.dim # base row for square
cx = squareid % board.dim * board.dim # base x for column c = squareid % board.dim * board.dim # base column
for i in [0...board.dim] by 1 for i in [0...board.dim] by 1
continue if i is squarecol continue if i is squarecol
for j in [0...board.dim] by 1 for j in [0...board.dim] by 1
result.push(board.cellAt(cx + i, rb + j)) result.push(board.cellAt(rb + j, c + i))
return result return result
@getNonSquareColCells: (board, squareid, squarecol) -> @getNonSquareColCells: (board, squareid, squarecol) ->
result = [] result = []
rb = Math.floor(squareid / board.dim) * board.dim # base row for square rb = Math.floor(squareid / board.dim) * board.dim # base row for square
cx = squareid % board.dim * board.dim + squarecol # x for column c = squareid % board.dim * board.dim + squarecol # column
for i in [0...board.dim2] by 1 for i in [0...board.dim2] by 1
continue if i in [rb...rb+board.dim] continue if i in [rb...rb+board.dim]
result.push(board.cellAt(cx, i)) result.push(board.cellAt(i, c))
return result return result
@getSquareRowCells: (board, squareid, squarerow) -> @getSquareRowCells: (board, squareid, squarerow) ->
result = [] result = []
r = Math.floor(squareid / board.dim) * board.dim + squarerow # row
cb = squareid % board.dim * board.dim # base col for square cb = squareid % board.dim * board.dim # base col for square
ry = Math.floor(squareid / board.dim) * board.dim + squarerow # y for row
for i in [0...board.dim] by 1 for i in [0...board.dim] by 1
result.push(board.cellAt(cb + i, ry)) result.push(board.cellAt(r, cb + i))
return result return result
@getSquareNonRowCells: (board, squareid, squarerow) -> @getSquareNonRowCells: (board, squareid, squarerow) ->
result = [] result = []
r = Math.floor(squareid / board.dim) * board.dim # base row
cb = squareid % board.dim * board.dim # base column for square cb = squareid % board.dim * board.dim # base column for square
ry = Math.floor(squareid / board.dim) * board.dim # base y for row
for i in [0...board.dim] by 1 for i in [0...board.dim] by 1
continue if i is squarerow continue if i is squarerow
for j in [0...board.dim] by 1 for j in [0...board.dim] by 1
result.push(board.cellAt(cb + j, ry + i)) result.push(board.cellAt(r + i, cb + j))
return result return result
@getNonSquareRowCells: (board, squareid, squarerow) -> @getNonSquareRowCells: (board, squareid, squarerow) ->
result = [] result = []
r = Math.floor(squareid / board.dim) * board.dim + squarerow # row
cb = squareid % board.dim * board.dim # base col for square cb = squareid % board.dim * board.dim # base col for square
ry = Math.floor(squareid / board.dim) * board.dim + squarerow # y for row
for i in [0...board.dim2] by 1 for i in [0...board.dim2] by 1
continue if i in [cb...cb+board.dim] continue if i in [cb...cb+board.dim]
result.push(board.cellAt(i, ry)) result.push(board.cellAt(r, i))
return result return result
@runAllRows: (board, func) -> @runAllRows: (board, func) ->
@ -162,8 +162,8 @@ class @SudokuSolver
'twoValPlacesColumn': 'Only two possible places for pair in column.' 'twoValPlacesColumn': 'Only two possible places for pair in column.'
'twoValPlacesDiag': 'Only two possible places for pair in diagonale.' 'twoValPlacesDiag': 'Only two possible places for pair in diagonale.'
'oneUnknownAll': 'Only one possible value left.' 'oneUnknownAll': 'Only one possible value left.'
'oneColumnForValue': 'Only one possible column for value.' 'oneColumnForValue': 'Only one possible column in block for value.'
'oneRowForValue': 'Only one possible row for value.' 'oneRowForValue': 'Only one possible row in block for value.'
i = 1 i = 1
while true while true

View File

@ -53,37 +53,37 @@
}; };
SudokuSolver.getSquareColCells = function(board, squareid, squarecol) { SudokuSolver.getSquareColCells = function(board, squareid, squarecol) {
var cx, i, rb, result, _i, _ref; var c, i, rb, result, _i, _ref;
result = []; result = [];
rb = Math.floor(squareid / board.dim) * board.dim; rb = Math.floor(squareid / board.dim) * board.dim;
cx = squareid % board.dim * board.dim + squarecol; c = squareid % board.dim * board.dim + squarecol;
for (i = _i = 0, _ref = board.dim; _i < _ref; i = _i += 1) { for (i = _i = 0, _ref = board.dim; _i < _ref; i = _i += 1) {
result.push(board.cellAt(cx, rb + i)); result.push(board.cellAt(rb + i, c));
} }
return result; return result;
}; };
SudokuSolver.getSquareNonColCells = function(board, squareid, squarecol) { SudokuSolver.getSquareNonColCells = function(board, squareid, squarecol) {
var cx, i, j, rb, result, _i, _j, _ref, _ref1; var c, i, j, rb, result, _i, _j, _ref, _ref1;
result = []; result = [];
rb = Math.floor(squareid / board.dim) * board.dim; rb = Math.floor(squareid / board.dim) * board.dim;
cx = squareid % board.dim * board.dim; c = squareid % board.dim * board.dim;
for (i = _i = 0, _ref = board.dim; _i < _ref; i = _i += 1) { for (i = _i = 0, _ref = board.dim; _i < _ref; i = _i += 1) {
if (i === squarecol) { if (i === squarecol) {
continue; continue;
} }
for (j = _j = 0, _ref1 = board.dim; _j < _ref1; j = _j += 1) { for (j = _j = 0, _ref1 = board.dim; _j < _ref1; j = _j += 1) {
result.push(board.cellAt(cx + i, rb + j)); result.push(board.cellAt(rb + j, c + i));
} }
} }
return result; return result;
}; };
SudokuSolver.getNonSquareColCells = function(board, squareid, squarecol) { SudokuSolver.getNonSquareColCells = function(board, squareid, squarecol) {
var cx, i, rb, result, _i, _j, _ref, _ref1, _results; var c, i, rb, result, _i, _j, _ref, _ref1, _results;
result = []; result = [];
rb = Math.floor(squareid / board.dim) * board.dim; rb = Math.floor(squareid / board.dim) * board.dim;
cx = squareid % board.dim * board.dim + squarecol; c = squareid % board.dim * board.dim + squarecol;
for (i = _i = 0, _ref = board.dim2; _i < _ref; i = _i += 1) { for (i = _i = 0, _ref = board.dim2; _i < _ref; i = _i += 1) {
if (__indexOf.call((function() { if (__indexOf.call((function() {
_results = []; _results = [];
@ -92,43 +92,43 @@
}).apply(this), i) >= 0) { }).apply(this), i) >= 0) {
continue; continue;
} }
result.push(board.cellAt(cx, i)); result.push(board.cellAt(i, c));
} }
return result; return result;
}; };
SudokuSolver.getSquareRowCells = function(board, squareid, squarerow) { SudokuSolver.getSquareRowCells = function(board, squareid, squarerow) {
var cb, i, result, ry, _i, _ref; var cb, i, r, result, _i, _ref;
result = []; result = [];
r = Math.floor(squareid / board.dim) * board.dim + squarerow;
cb = squareid % board.dim * board.dim; cb = squareid % board.dim * board.dim;
ry = Math.floor(squareid / board.dim) * board.dim + squarerow;
for (i = _i = 0, _ref = board.dim; _i < _ref; i = _i += 1) { for (i = _i = 0, _ref = board.dim; _i < _ref; i = _i += 1) {
result.push(board.cellAt(cb + i, ry)); result.push(board.cellAt(r, cb + i));
} }
return result; return result;
}; };
SudokuSolver.getSquareNonRowCells = function(board, squareid, squarerow) { SudokuSolver.getSquareNonRowCells = function(board, squareid, squarerow) {
var cb, i, j, result, ry, _i, _j, _ref, _ref1; var cb, i, j, r, result, _i, _j, _ref, _ref1;
result = []; result = [];
r = Math.floor(squareid / board.dim) * board.dim;
cb = squareid % board.dim * board.dim; cb = squareid % board.dim * board.dim;
ry = Math.floor(squareid / board.dim) * board.dim;
for (i = _i = 0, _ref = board.dim; _i < _ref; i = _i += 1) { for (i = _i = 0, _ref = board.dim; _i < _ref; i = _i += 1) {
if (i === squarerow) { if (i === squarerow) {
continue; continue;
} }
for (j = _j = 0, _ref1 = board.dim; _j < _ref1; j = _j += 1) { for (j = _j = 0, _ref1 = board.dim; _j < _ref1; j = _j += 1) {
result.push(board.cellAt(cb + j, ry + i)); result.push(board.cellAt(r + i, cb + j));
} }
} }
return result; return result;
}; };
SudokuSolver.getNonSquareRowCells = function(board, squareid, squarerow) { SudokuSolver.getNonSquareRowCells = function(board, squareid, squarerow) {
var cb, i, result, ry, _i, _j, _ref, _ref1, _results; var cb, i, r, result, _i, _j, _ref, _ref1, _results;
result = []; result = [];
r = Math.floor(squareid / board.dim) * board.dim + squarerow;
cb = squareid % board.dim * board.dim; cb = squareid % board.dim * board.dim;
ry = Math.floor(squareid / board.dim) * board.dim + squarerow;
for (i = _i = 0, _ref = board.dim2; _i < _ref; i = _i += 1) { for (i = _i = 0, _ref = board.dim2; _i < _ref; i = _i += 1) {
if (__indexOf.call((function() { if (__indexOf.call((function() {
_results = []; _results = [];
@ -137,7 +137,7 @@
}).apply(this), i) >= 0) { }).apply(this), i) >= 0) {
continue; continue;
} }
result.push(board.cellAt(i, ry)); result.push(board.cellAt(r, i));
} }
return result; return result;
}; };