Skip to content

Instantly share code, notes, and snippets.

@solova
Created September 20, 2017 12:39
Show Gist options
  • Save solova/e637654460546a5d61fac18eafa2ca68 to your computer and use it in GitHub Desktop.
Save solova/e637654460546a5d61fac18eafa2ca68 to your computer and use it in GitHub Desktop.
var A = [
["1", "0", "0"],
["1", "0", "1"],
["1", "1", "0"],
["0", "0", "0"],
["0", "0", "1"],
["0", "1", "0"],
["0", "1", "1"]
];
var i = 0;
var chainSize = A[0].length;
//работам пока не закончится цепочка или пока не найдём решение
while(i<chainSize && !haveSameNumberOfZerosAndOnes(A, i)){
var mode = mostElement(A, i); //нашли самые популярный
A = A.filter(function(element){
return element[i]===mode; //оставили в массиве только элементы с ним
});
i++;
}
if (haveSameNumberOfZerosAndOnes(A, i)){
console.log("Found", A);
}else{
console.log("Chain is over")
}
//функция проверяет одинаковое ли число 1 и 0 на позиции idx в цепочках массива
function haveSameNumberOfZerosAndOnes(arr, idx){
var zeros = 0;
var ones = 0;
for (var j=0; j<arr.length; j++){
if (arr[j][idx]==="1") ones++;
if (arr[j][idx]==="0") zeros++;
}
return zeros === ones;
}
//функция ищет наиболее популярное число на позиции idx в цепочках массива
function mostElement(arr, idx){
var zeros = 0;
var ones = 0;
for (var j=0; j<arr.length; j++){
if (arr[j][idx]==="1") ones++;
if (arr[j][idx]==="0") zeros++;
}
if (ones>zeros){
return "1";
} else {
return "0";
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment