Escriba un programa que, dado un pequeño número entero positivo a partir de la entrada estándar, calcule la probabilidad de que lanzar tantas monedas resulte en la mitad de caras.
Por ejemplo, con 2 monedas, los posibles resultados son:
HH HT TH TT
donde H y T son caras y colas. Hay 2 resultados ( HT
y TH
) que son la mitad de caras que el número de monedas. Hay un total de 4 resultados, por lo que la probabilidad es 2/4 = 0.5.
Esto es más simple de lo que parece.
Casos de prueba:
2 -> 0.5
4 -> 0.375
6 -> 0.3125
8 -> 0.2734375
code-golf
math
probability-theory
david4dev
fuente
fuente
Respuestas:
J, 22
19(enfoque asesino)Llegué a esto mientras jugaba mi respuesta de Haskell.
(la misma E / S que mi otra respuesta J )
fuente
0 1|domain error: script | %/ >:i.&.(".@stdin)_
Pari / GP -
323034 caracteresfuente
print(binomial(n=input,n\2)/2^n)
.Python 53 Personajes
fuente
Excel, 25
Aunque no según las especificaciones :)
Nombre una celda
n
y luego escriba lo siguiente en otra celda:fuente
Haskell, 39
4346Demostración:
fuente
Undefined variable "readln"
readLn
es mayúscula.main=do x<-readLn;print$foldr1(/)[1..x]
hace lo mismo y ahorra 3 bytes?J, 25 (enfoque natural)
Uso de la muestra:
Todo se explica por sí mismo, pero para una división aproximada de responsabilidades:
!~ -:
podría considerarse como binomial (x, x / 2)% 2&^
está "dividido por 2 ^ x "&. (". @ stdin) _
para E / Sfuente
GNU Octave - 36 caracteres
fuente
Ruby, 39 caracteres
fuente
Golfscript - 30 caracteres
Limitación: solo funciona para entradas de menos de 63
Casos de prueba
Análisis
'0.'
GS no hace coma flotante, así que lo falsificaremos escribiendo un número entero después de esto\~
Tire de la entrada a la parte superior de la pila y convierta a un número entero..
Haga 2 copias de la entrada),1>
Cree una lista de 1..n\2//
Divida el lista en 1..n / 2 yn / 2 + 1..n ¡{{*}*}%
Multiplica los elementos de las dos sublistas dando (n / 2)! y n! / (n / 2)!~
Extrae esos dos números en la pila\
Cambia los dos números alrededor/
Divide5@?*
Multiplica por 5 ** n. Esta es la causa de la limitación dada anteriormentefuente
0.
es la parte decimal de la respuesta, pero ese método omite el 0 requerido cuando la probabilidad crece menos del 10%.TI-BASIC, 10
Esto tomará más de diez bytes de memoria de la calculadora porque hay un encabezado de programa, pero solo hay diez bytes de código.
Esto toma entrada en el formulario
[number]:[program name]
; Agregar un comando de entrada utiliza tres bytes más.~
es el toario menos unario.fuente
Ruby -
505754 caracteresfuente
J, 20
ejemplos:
fuente
APL
2115 caracteresPorque donde no se hace bien
Donde todo en {} son símbolos específicos de APL como aquí .
fuente
�[token]: � undefined
Windows PowerShell, 45
Meh
fuente
MATLAB, 29
fuente
PostScript, 77
fuente
Mathematica, 19
fuente
Javascript, 86 bytes
fuente
Pitón 3, 99
Este es un enfoque ingenuo, supongo, y la solución de fR0DDY es mucho más genial, pero al menos soy capaz de resolverlo.
Pruébalo aquí
Pitón 2, 103
fuente
C objetivo:
152148 bytes solo para la función.Los métodos de clase, los encabezados y la interfaz de usuario no están incluidos en el código.
Entrada: un
int
valor que determina el número de monedas.Salida: un
float
valor que determina la probabilidad.Sin golf:
Esto se basa en la respuesta de Microsoft Excel . En C y Objective-C, el desafío está en codificar los algoritmos.
fuente