matching-sub-array-in-array-scheme-in-scheme
Attempted answer to the above question in StackOverflow
by BuddhiP
HTML
<script src="http://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.4.2/underscore-min.js"></script>
<div id="target">
<h2 id="result">Results Pending</h2>
</div>
JavaScript
$(function() {
function getBinaryString(flatboard, player) {
return _.map(flatboard, function(b) {
// Return 1 for squares marked by the 'player' and 0 for everything else.
return b == player ? 1 : 0;
}).join(""); // Join without a seperator so it will form a binary number.
}
function getIntegerFromBinary(binaryString) {
return parseInt(binaryString, 2);
}
var winningPatterns = [
'111000000',
'000111000',
'000000111',
'100100100',
'010010010',
'001001001',
'100010001',
'001010100'
];
var winningNumbers = _.map(winningPatterns, function(pattern) {
return getIntegerFromBinary(pattern)
});
console.log(winningNumbers);
var a = 'a',
b = 'b';
var board = [
[b, 0, a],
[0, b, a],
[b, a, b]
];
var flatboard = _.flatten(board);
console.log(flatboard);
var board_a = getBinaryString(flatboard, a);
console.log(board_a);
var aValue = getIntegerFromBinary(board_a);
console.log(aValue);
console.log(_.indexOf(winningNumbers, aValue));
if ((_.indexOf(winningNumbers, aValue)) >= 0) {
$('#result').text('Winner is A!!! :)');
} else {
var board_b = getBinaryString(flatboard, b);
console.log(board_b);
var bValue = getIntegerFromBinary(board_b);
if ((_.indexOf(winningNumbers, bValue)) >= 0) {
$('#result').text('Winner is B!!! :)');
} else {
$('#result').text('No one wins!! :(');
}
}
});