Обсуждение:Город Тумана — различия между версиями

Материал из Ролевая энциклопедии
Перейти к: навигация, поиск
(Новая страница: «== Алгоритм, которым я подсчитал вероятности == Оставляю тут — чтобы было легче проверить…»)
 
м (табуляции)
Строка 8: Строка 8:
  
 
const условияКолонок = [
 
const условияКолонок = [
сумма => сумма <= 6,
+
  сумма => сумма <= 6,
сумма => (сумма >= 7) && (сумма <= 9),
+
  сумма => (сумма >= 7) && (сумма <= 9),
сумма => сумма >= 10,
+
  сумма => сумма >= 10,
сумма => сумма >= 12
+
  сумма => сумма >= 12
 
]
 
]
  
Строка 19: Строка 19:
  
 
function значенияКолонок(прибавка) {
 
function значенияКолонок(прибавка) {
return условияКолонок.map(
+
  return условияКолонок.map(
  условие => {
+
    условие => {
    const подходящих = суммы.map(бросок => бросок + прибавка).filter(условие).length
+
      const подходящих = суммы.map(бросок => бросок + прибавка).filter(условие).length
 
       const всего = суммы.length
 
       const всего = суммы.length
 
       return подходящих / всего
 
       return подходящих / всего
Строка 29: Строка 29:
  
 
function вероятностьКакПроценты(вероятность) {
 
function вероятностьКакПроценты(вероятность) {
return (Math.round(вероятность * 10000) / 100) + '%'
+
  return (Math.round(вероятность * 10000) / 100) + '%'
 
}
 
}
  
 
function отформатироватьСтрокуТаблицы(прибавка) {
 
function отформатироватьСтрокуТаблицы(прибавка) {
const ячейкиТаблицы = [
+
  const ячейкиТаблицы = [
(прибавка >= 0 ? '+' : '') + прибавка,
+
    (прибавка >= 0 ? '+' : '') + прибавка,
 
     ...значенияКолонок(прибавка).map(вероятностьКакПроценты)
 
     ...значенияКолонок(прибавка).map(вероятностьКакПроценты)
]
+
  ]
return `| ` + ячейкиТаблицы.join(' || ')
+
  return `| ` + ячейкиТаблицы.join(' || ')
 
}
 
}
  
 
function отформатироватьТаблицу() {
 
function отформатироватьТаблицу() {
return [
+
  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(отформатироватьСтрокуТаблицы)
+
    ...прибавки.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(отформатироватьТаблицу())