Напишите программу, которая, учитывая маленькое положительное четное целое число из стандартного ввода, вычисляет вероятность того, что подбрасывание такого количества монет приведет к получению вдвое меньше голов.
Например, при 2 монетах возможны следующие результаты:
HH HT TH TT
где H и T - головы и хвосты. Есть 2 результата ( HT
и TH
), которые вдвое меньше голов, чем количество монет. Всего 4 результата, поэтому вероятность составляет 2/4 = 0,5.
Это проще, чем кажется.
Тестовые случаи:
2 -> 0.5
4 -> 0.375
6 -> 0.3125
8 -> 0.2734375
code-golf
math
probability-theory
david4dev
источник
источник
Ответы:
J, 22
19(убийственный подход)Я взялся за это, играя в гольф мой ответ на Haskell.
(тот же I / O, что и мой другой ответ J )
источник
0 1|domain error: script | %/ >:i.&.(".@stdin)_
Пари / ГП -
323034 символаисточник
print(binomial(n=input,n\2)/2^n)
.Python 53 персонажа
источник
Excel, 25
Не совсем по спецификации, хотя :)
Назовите ячейку,
n
а затем введите следующую ячейку:источник
Хаскелл, 39
4346Демонстрация:
источник
Undefined variable "readln"
readLn
заглавной.main=do x<-readLn;print$foldr1(/)[1..x]
делает то же самое и сохраняет 3 байта?J, 25 (естественный подход)
Образец использования:
Это все говорит само за себя, но для грубого разделения обязанностей:
!~ -:
можно рассматривать как биномиальный (х, х / 2)% 2&^
«делится на 2 ^ х »&. (". @ stdin) _
для ввода / выводаисточник
GNU Octave - 36 персонажей
источник
Рубин, 39 знаков
источник
Golfscript - 30 символов
Ограничение - работает только для входов менее 63
контрольные примеры
Анализ
'0.'
GS не делает с плавающей запятой, поэтому мы подделаем ее, написав целое число после этого.\~
Потяните ввод в верхнюю часть стека и преобразуйте в целое число...
Сделайте 2 копии ввода.),1>
Создайте список из 1..n\2//
Разделите список в 1..n / 2 и n / 2 + 1..n{{*}*}%
Умножьте элементы двух подсписков, получая (n / 2)! и n! / (n / 2)!~
Извлеките эти два числа в стек.\
Поменяйте местами два числа вокруг/
деления,5@?*
умножьте на 5 ** n. Это является причиной ограничения, указанного вышеисточник
0.
является десятичной частью ответа, но этот метод пропускает требуемый 0, когда вероятность возрастает менее чем на 10%.TI-BASIC, 10
Это займет более десяти байтов памяти калькулятора, потому что есть заголовок программы, но есть только десять байтов кода.
Это принимает входные данные в форме
[number]:[program name]
; добавление команды ввода использует еще три байта.~
это одинарный минус токен.источник
Рубин -
505754 символаисточник
J, 20
Примеры:
источник
APL
2115 символовТам, где это не правильно
Где все в {} являются специфическими символами APL, как здесь .
источник
�[token]: � undefined
Windows PowerShell, 45
Мех.
источник
МАТЛАБ, 29
источник
PostScript, 77
источник
Математика, 19
источник
Javascript, 86 байт
источник
Python 3, 99
Я полагаю, что это наивный подход, и решение fR0DDY намного круче, но, по крайней мере, я могу его решить.
Попробуй здесь
Питон 2, 103
источник
Objective-C:
152148 байт только для функции.Методы класса, заголовки и пользовательский интерфейс не включены в код.
Вход:
int
значение, определяющее количество монет.Выход:
float
значение, определяющее вероятность.Ungolfed:
Это основано на ответе Microsoft Excel . В C и Objective-C проблема заключается в жестком кодировании алгоритмов.
источник