В настоящее время я пишу этот алгоритм проверки равенства бросков просто для удовольствия, главная цель - сделать это декларативно и в функциональном стиле. Почему-то мой алгоритм использует нелинейное пространство памяти. Фактически, он не может работать из-за RangeError: Превышен максимальный размер стека вызовов. Будем рады получить помощь от вас:
const roll = (a: number): ((b: number) => number[]) => (b: number): number[] => {
let a1 = a * Math.floor(Math.random() * 6 + 1);
let b1 = b * Math.floor(Math.random() * 6 + 1);
return [a1, b1]
};
const compare = () => {
let counter: number = 0;
let totalcounter: number = 10000;
const compareStep = (a: number[]) => {
(() => (a[0] === 1 || a[1] === 1) && counter++)();
totalcounter -= 1;
(totalcounter === 0) ? console.log(counter / 10000) : compareStep(roll(1)(1));
};
return compareStep(roll(1)(1))
}
let Compare = compare();
Compare