Écrivez un programme qui, étant donné un petit entier pair positif à partir de l'entrée standard, calcule la probabilité que retourner autant de pièces se traduira par deux fois plus de têtes.
Par exemple, pour 2 pièces, les résultats possibles sont:
HH HT TH TT
où H et T sont têtes et queues. Il y a 2 résultats ( HT
et TH
) deux fois moins de têtes que le nombre de pièces. Il y a un total de 4 résultats, donc la probabilité est de 2/4 = 0,5.
C'est plus simple qu'il n'y paraît.
Cas de test:
2 -> 0.5
4 -> 0.375
6 -> 0.3125
8 -> 0.2734375
code-golf
math
probability-theory
david4dev
la source
la source
Réponses:
J, 22
19(approche du tueur)J'y suis allé en jouant à ma réponse Haskell.
(même E / S que mon autre réponse J )
la source
0 1|domain error: script | %/ >:i.&.(".@stdin)_
Pari / GP -
323034 caractèresla source
print(binomial(n=input,n\2)/2^n)
.Python 53 caractères
la source
Excel, 25
Pas tout à fait selon les spécifications, cependant :)
Nommez une cellule
n
, puis tapez ce qui suit dans une autre cellule:la source
Haskell, 39
4346Manifestation:
la source
Undefined variable "readln"
readLn
est un majuscule.main=do x<-readLn;print$foldr1(/)[1..x]
fait la même chose et enregistre 3 octets?J, 25 (approche naturelle)
Exemple d'utilisation:
Tout va de soi, mais pour une répartition approximative des responsabilités:
!~ -:
pourrait être considéré comme binomial (x, x / 2)% 2&^
est "divisé par 2 ^ x "&. (". @ stdin) _
pour les E / Sla source
GNU Octave - 36 caractères
la source
Ruby, 39 caractères
la source
Golfscript - 30 caractères
Limitation - ne fonctionne que pour les entrées inférieures à 63
cas de test
Une analyse
'0.'
GS ne fait pas de virgule flottante, nous allons donc le simuler en écrivant un entier après cela\~
Tirez l'entrée vers le haut de la pile et convertissez-la en un entier..
Faites 2 copies de l'entrée),1>
Créez une liste de 1..n\2//
Fractionnez le liste en 1..n / 2 et n / 2 + 1..n{{*}*}%
Multipliez les éléments des deux sous-listes donnant (n / 2)! et n! / (n / 2)!~
Extraire ces deux nombres sur la pile\
Échangez les deux nombres autour de/
Diviser5@?*
Multiplier par 5 ** n. C'est la cause de la limitation donnée ci-dessusla source
0.
est la partie décimale de la réponse, mais cette méthode laisse de côté le 0 requis lorsque la chance augmente moins de 10%.TI-BASIC, 10
Cela prendra plus de dix octets de mémoire de la calculatrice car il y a un en-tête de programme, mais il n'y a que dix octets de code.
Cela prend une entrée dans le formulaire
[number]:[program name]
; l'ajout d'une commande d'entrée utilise trois octets supplémentaires.~
est le jeton unaire moins.la source
Rubis -
505754 caractèresla source
J, 20
exemples:
la source
APL
2115 caractèresPour où ça ne rend pas bien
Où tout dans {} sont des symboles spécifiques APL comme ici .
la source
�[token]: � undefined
Windows PowerShell, 45
Meh.
la source
MATLAB, 29
la source
PostScript, 77
la source
Mathematica, 19
la source
Javascript, 86 octets
la source
Python 3, 99
C'est une approche naïve, je suppose, et la solution de fR0DDY est beaucoup plus cool, mais au moins je suis capable de la résoudre.
Essayez-le ici
Python 2, 103
la source
Objectif c:
152148 octets uniquement pour la fonction.Les méthodes de classe, les en-têtes et l'interface utilisateur ne sont pas inclus dans le code.
Entrée: une
int
valeur déterminant le nombre de pièces.Sortie: une
float
valeur déterminant la probabilité.Non golfé:
Ceci est basé sur la réponse Microsoft Excel . En C et Objective-C, le défi consiste à coder en dur les algorithmes.
la source