Обсуждение:Город Тумана — различия между версиями
Demetrius (обсуждение | вклад) (Новая страница: «== Алгоритм, которым я подсчитал вероятности == Оставляю тут — чтобы было легче проверить…») |
Demetrius (обсуждение | вклад) м (табуляции) |
||
Строка 8: | Строка 8: | ||
const условияКолонок = [ | const условияКолонок = [ | ||
− | + | сумма => сумма <= 6, | |
− | + | сумма => (сумма >= 7) && (сумма <= 9), | |
− | + | сумма => сумма >= 10, | |
− | + | сумма => сумма >= 12 | |
] | ] | ||
Строка 19: | Строка 19: | ||
function значенияКолонок(прибавка) { | function значенияКолонок(прибавка) { | ||
− | + | return условияКолонок.map( | |
− | + | условие => { | |
− | + | const подходящих = суммы.map(бросок => бросок + прибавка).filter(условие).length | |
const всего = суммы.length | const всего = суммы.length | ||
return подходящих / всего | return подходящих / всего | ||
Строка 29: | Строка 29: | ||
function вероятностьКакПроценты(вероятность) { | function вероятностьКакПроценты(вероятность) { | ||
− | + | return (Math.round(вероятность * 10000) / 100) + '%' | |
} | } | ||
function отформатироватьСтрокуТаблицы(прибавка) { | function отформатироватьСтрокуТаблицы(прибавка) { | ||
− | + | const ячейкиТаблицы = [ | |
− | + | (прибавка >= 0 ? '+' : '') + прибавка, | |
...значенияКолонок(прибавка).map(вероятностьКакПроценты) | ...значенияКолонок(прибавка).map(вероятностьКакПроценты) | ||
− | + | ] | |
− | + | return `| ` + ячейкиТаблицы.join(' || ') | |
} | } | ||
function отформатироватьТаблицу() { | function отформатироватьТаблицу() { | ||
− | + | return [ | |
` | ` | ||
{| class="wikitable" style="margin:auto" | {| class="wikitable" style="margin:auto" | ||
! Прибавка !! Неудача<br>(<6) !! Частичный успех<br>(7—9) !! Полный успех<br>(>10) !! «Динамит» (>12)`, | ! Прибавка !! Неудача<br>(<6) !! Частичный успех<br>(7—9) !! Полный успех<br>(>10) !! «Динамит» (>12)`, | ||
− | + | ...прибавки.map(отформатироватьСтрокуТаблицы) | |
].join("\n|-\n") + '\n|}' | ].join("\n|-\n") + '\n|}' | ||
} | } |
Версия 21:42, 5 февраля 2024
Алгоритм, которым я подсчитал вероятности
Оставляю тут — чтобы было легче проверить, что я не совершил ошибок, и адаптировать для построения подобных табличек в других статьях. Demetrius (обсуждение) 21:41, 5 февраля 2024 (MSK)
const броскиОднойКости = [1, 2, 3, 4, 5, 6] const суммы = броскиОднойКости.map(первая => броскиОднойКости.map(вторая => первая + вторая)).flat() const условияКолонок = [ сумма => сумма <= 6, сумма => (сумма >= 7) && (сумма <= 9), сумма => сумма >= 10, сумма => сумма >= 12 ] const прибавки = [] for (i = -5; i <= 7; i++) прибавки.push(i) function значенияКолонок(прибавка) { return условияКолонок.map( условие => { const подходящих = суммы.map(бросок => бросок + прибавка).filter(условие).length const всего = суммы.length return подходящих / всего } ) } function вероятностьКакПроценты(вероятность) { return (Math.round(вероятность * 10000) / 100) + '%' } function отформатироватьСтрокуТаблицы(прибавка) { const ячейкиТаблицы = [ (прибавка >= 0 ? '+' : '') + прибавка, ...значенияКолонок(прибавка).map(вероятностьКакПроценты) ] return `| ` + ячейкиТаблицы.join(' || ') } function отформатироватьТаблицу() { return [ ` {| class="wikitable" style="margin:auto" ! Прибавка !! Неудача<br>(<6) !! Частичный успех<br>(7—9) !! Полный успех<br>(>10) !! «Динамит» (>12)`, ...прибавки.map(отформатироватьСтрокуТаблицы) ].join("\n|-\n") + '\n|}' } console.log(отформатироватьТаблицу())