Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как выбрать из массива рядомстоящие одинаковые числа и посчитать их? (https://javascript.ru/forum/misc/65370-kak-vybrat-iz-massiva-ryadomstoyashhie-odinakovye-chisla-i-poschitat-ikh.html)

drey84 14.10.2016 23:35

Как выбрать из массива рядомстоящие одинаковые числа и посчитать их?
 
//смысл - игра - 20 раундов, выпасть может одно из 3 значений (случайно), в итоге мне надо узнать сколько раз //выпала комбинация из максимального количества нулей, т.е. в случайном наборе например //выпадает 1,2,2,1,1,1,1,1,0,0,0,0,2,1,1,2,0,0,2,1 - результат должен быть соответственно - 4 т.к. это //максимальное количество выпавших подряд нулей, подскажите куда копать, как сделать, советовали чтото с // do...while - но тут я вообще темный)
var stavka = []; //Может быть 0, 1, 2 как ниже в переменных
var red = 0;
var black = 1;
var zero = 2;
alert(stavka);
var raunds = 20; //количество бросков 
var i = 0; // счетчик

for(i=0; i<raunds; i++) {
    stavka.push(Math.round(Math.random()*2)); //происходит случайный выбор числа (0, 1, 2) в 20 бросков 
}
var rezultat=(stavka); //Записываю массив в переменную

for (i=0; i<rezultat.length; i++) { //Получаю кол-во сколько раз выпало Красное (var red = 0;)
    if (rezultat[i] == 0 ) {
        red++;
    }
}

for(find in rezultat){ //Получаю индексы всех значений выпавших Красное (var red = 0;)
  if(rezultat[find]=="0") {
    var index=(rezultat);
    alert(find)
  }
 } 
alert("Количество выпадения red" + red);

//Как связать поиск нулей, их индексов и получить результат в виде количества нулей в максимальной последовательности?

</script>

рони 14.10.2016 23:57

drey84,
var arr = [1,2,2,1,1,1,1,1,0,0,0,0,2,1,1,2,0,0,2,1];
function foo(b, c) {
    return b.reduce(function(a, b) {
        a.temp = b == c ? ++a.temp : 0;
        a.temp > a.max && (a.max = a.temp);
        return a
    }, {
        temp: 0,
        max: 0
    }).max
};
alert(foo(arr,0))

drey84 15.10.2016 00:23

Спасибо а всетаки не так сжато это можно осуществить через циклы?
 
спасибо с вашим массивом работает, а вот куда мне это вставлять :lol: буду разбираться:)

а можно это как то не так слишком компактно - я только начал язык изучаю - в такой записи понимаю только первую и последнюю строку:(

рони 15.10.2016 00:54

drey84,
var arr = [1,2,2,1,1,1,1,1,0,0,0,0,2,1,1,2,0,0,2,1], temp = 0, max = 0, num = 0;
for (var i=0; i<arr.length; i++)  {
if(arr[i] == num) temp++;
else temp = 0;
if(temp > max) max = temp;
}
alert(max)


Часовой пояс GMT +3, время: 10:49.