Re:Sudoku solver in 1-line of CoffeeScript (with explanation)
by power on Wednesday October 10, 2012 @07:21AM
(#4635850)
Thanks for clarifying. If you've the time, could you tell me how I should read:
non_conflicting = (g) -> ![0...9].some (i) -> g in [s[x][i], s[i][y], box i]
[ Parent
| on HN ]
Re:Sudoku solver in 1-line of CoffeeScript (with explanation)
by pathikrit on Wednesday October 10, 2012 @05:13PM
(#4638226)
[0...9].some (i) -> g in [s[x][i], s[i][y], box i]
returns true iff it finds some i in [0,9) such that given a guess g, g equals either s[x][i] or s[i][y] or box i or in other words it finds a conflict in either a row or column or box for g assuming it g is at s[x][y]
The ! at the start negates it - so the whole method non_conflicting returns true iff g does not conflict with any i.
If Arrays in JavaScript had an "all" reducer it could be written like this:
non_conflicting = (g) -> [0...9].all (i) -> g not in [s[x][i], s[i][y], box i]