const movingAverage = (data, windowSize) => {
let sum = data.slice(0, windowSize).reduce((acc, cur) => acc + cur, 0);
const result = [sum / windowSize];
for (let i = windowSize; i < data.length; i += 1) {
sum = sum - data[i - windowSize] + data[i];
result.push(sum / windowSize);
}
return result;
};
console.log(movingAverage([9, 3, 2, 0, 1, 5, 1, 0, 0], 3));
// Array(7) [ 4.666666666666667, 1.6666666666666667, 1, 2, 2.3333333333333335, 2, 0.3333333333333333 ]
const StringChallenge = (str) =>
str.replaceAll(/(?<=[13579])(?=[13579])/g, '-')
.replaceAll(/(?<=[2468])(?=[2468])/g, '*');
const StringChallenge = (str) =>
str.split('').reduce(
(acc, dig) => {
const sign = +dig ? (dig % 2 ? '-' : '*') : '';
return {
str: acc.str + (acc.sign === sign ? sign : '') + dig,
sign,
};
},
{ str: '', sign: '' },
).str;
const combinations = (arr, num) => {
const result = [];
const comb = (arr, n, idx, cur) => {
for (let i = idx; i <= arr.length - n; i += 1) {
cur.push(arr[i]);
if (n === 1) {
result.push([...cur]);
} else {
comb(arr, n - 1, i + 1, cur);
}
cur.pop();
}
};
comb(arr, num, 0, []);
return result;
}
console.log(combinations([1, 2, 3, 4], 3));
// Array(4) [ (3) […], (3) […], (3) […], (3) […] ]
// 0: Array(3) [ 1, 2, 3 ]
// 1: Array(3) [ 1, 2, 4 ]
// 2: Array(3) [ 1, 3, 4 ]
// 3: Array(3) [ 2, 3, 4 ]
// length: 4
x OR y OR z AND q
будет выполняться как x OR y OR (z AND q)
, так как приоритет у AND выше, чем у OR.SELECT `time`, `ticker`, `price`, `volume`,
`icon`, `tf`, `figure`, `figure_text`
FROM `figure`
WHERE `figure` IN ('vklin', 'nklin', 'doublev', 'doubled', 'mflag', 'bflag', 'flag')
AND `tf` IN ('1h', '4h', '1d')
UNION SELECT `time`, `ticker`, `price`, `volume`,
`icon`, `tf`, `situation`, `situation_text`
FROM `levels`
WHERE `situation` = 'resistance'
AND `tf` IN ('1h', '4h', '1d')