Fixed switched row/col and wording.
This commit is contained in:
parent
ab4a6e96e2
commit
e947dc9eed
@ -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
|
||||||
|
@ -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;
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user