Aug 27, 2021 12:46
Решения потребовали интересных финтов, типа выбора элементов массива по маске или составления уравнения с логарифмом. Поэтому решил сохранить их на память.
/*
Вы спустились в темное подземелье, но там ничего не было видно. Единственное, что вы смогли сделать - посчитать количество ступенек вниз и вверх.
Ваша задача: узнать высоту самой глубокой точки в подземелье
Ввод: array_steps - строковой массив ступенек, которые вы прошли. "d" - означает ступеньку вниз, "u" - ступенька вверх. Изначальную высоту принято считать 0
Вывод: число (Integer) - глубина подземелья
Example:
array_steps = ["d", "d", "d", "u", "u", "d", "u"]
getResult(array_steps) = 3
*/
function getResult(arraySteps) {
let d = 0;
let maxD = 0;
for(let dir of arraySteps) {
d += dir=='d' ? 1 : -1;
if(maxD < d) maxD = d;
}
return maxD;
}
array_steps = ["d", "d", "d", "u", "u", "d", "u"]
console.log(getResult(array_steps));
/*
Собираясь по утрам на работу, Джо устал каждый раз находить носки без пары.
Он пронумеровал все свои носки и написал программу, которая выявляет номер носка, который не имеет пару.
Теперь у Джо всегда отличные носки и больше свободного времени
Ввод: socks - массив чисел, который всегда имеет одно беспарное число
Вывод: integer - номер числа без пары
Example:
socks = [2, 3, 5, 3, 1, 2, 1]
getResult(socks) -> 5
*/
function getResult(socks) {
return socks.reduce((res,v)=>res^v, 0);
}
socks = [2, 3, 5, 3, 1, 2, 1]
console.log(getResult(socks));
/*
У вас есть график высоты американской горки на каждом участке. По правилам, соседние участки не должны быть выше более чем в два раза. Добавьте в массив новые участки, чтобы горки стали более пологими. Выведите длину получившейся горки
Начало и конец горки всегда имеют высоту 1 и эта высота не входит в массив
На входе: heights - числовой массив высоты горки на каждом участке, где heights[i] - высота участка i
На выходе: Integer - минимальная длина массива, в котором значение соседних элементов не превышает более чем в два раза
Пример:
heights = [1, 2, 6, 3]
getResult(heights) = 6
В массив было добавлено 2 участка, один из вариантов решения [1, 2, *3*, 6, 3, *2*]
*/
function getResult(heights) {
let result = 0;
if(heights[0]!=1) {
heights.unshift(1);
result--;
}
if(heights[heights.length-1]!=1) heights.push(1);
for(let i=1;ib-a).filter(a=>(a<=tgt && a!=0));
let max = Math.pow(actualFences.length, 2)-1;
for(let mask=1; mask(mask & (1 << i))).reduce((sum,a)=>sum+a) == tgt) return 1;
return 0;
}
fences = [0, 2, 4, 1, 6, 2];
console.log(getResult(fences));