14.10.2016, 23:35
|
Новичок на форуме
|
|
Регистрация: 14.10.2016
Сообщений: 2
|
|
Как выбрать из массива рядомстоящие одинаковые числа и посчитать их?
//смысл - игра - 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
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,105
|
|
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))
|
|
15.10.2016, 00:23
|
Новичок на форуме
|
|
Регистрация: 14.10.2016
Сообщений: 2
|
|
Спасибо а всетаки не так сжато это можно осуществить через циклы?
спасибо с вашим массивом работает, а вот куда мне это вставлять буду разбираться
а можно это как то не так слишком компактно - я только начал язык изучаю - в такой записи понимаю только первую и последнюю строку
|
|
15.10.2016, 00:54
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,105
|
|
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)
|
|
|
|