Napisz program, który przy niewielkiej dodatniej parzystej liczbie całkowitej ze standardowego wejścia oblicza prawdopodobieństwo, że przerzucenie tylu monet spowoduje połowę liczby głów.
Na przykład, biorąc pod uwagę 2 monety, możliwe wyniki to:
HH HT TH TT
gdzie H i T są głowami i ogonami. Istnieją 2 wyniki ( HT
i TH
), które są o połowę mniejsze niż liczba monet. Istnieją w sumie 4 wyniki, więc prawdopodobieństwo wynosi 2/4 = 0,5.
To jest prostsze niż się wydaje.
Przypadki testowe:
2 -> 0.5
4 -> 0.375
6 -> 0.3125
8 -> 0.2734375
code-golf
math
probability-theory
david4dev
źródło
źródło
Odpowiedzi:
J, 22
19(podejście zabójcy)Dotarłem do tego, grając w golfa na moją odpowiedź Haskella.
(taki sam I / O jak moja inna odpowiedź J )
źródło
0 1|domain error: script | %/ >:i.&.(".@stdin)_
Pari / GP -
323034 znakówźródło
print(binomial(n=input,n\2)/2^n)
.Python 53 znaków
źródło
Excel, 25
Jednak niezupełnie według specyfikacji :)
Nazwij komórkę,
n
a następnie wpisz następujące polecenie w innej komórce:źródło
Haskell, 39
4346Demonstracja:
źródło
Undefined variable "readln"
readLn
jest kapitałem.main=do x<-readLn;print$foldr1(/)[1..x]
robi to samo i oszczędza 3 bajty?J, 25 (podejście naturalne)
Przykładowe użycie:
Wszystko to jest oczywiste, ale z grubsza podzielonym obowiązkiem:
!~ -:
może być uważany za dwumianowy (x, x / 2)% 2&^
to „podzielone przez 2 ^ x ”&. (". @ stdin) _
dla I / Oźródło
GNU Octave - 36 znaków
źródło
Ruby, 39 znaków
źródło
Golfscript - 30 znaków
Ograniczenie - działa tylko dla danych wejściowych mniejszych niż 63
przypadki testowe
Analiza
'0.'
GS nie robi liczb zmiennoprzecinkowych, więc sfałszujemy to, pisząc liczbę całkowitą.\~
Następnie przeciągnij dane wejściowe na górę stosu i przekonwertuj na liczbę całkowitą...
Zrób 2 kopie danych wejściowych.),1>
Utwórz listę z 1\2//
. wypisz na 1..n / 2 i n / 2 + 1..n{{*}*}%
Pomnóż elementy dwóch podlist podając (n / 2)! i n! / (n / 2)!~
Wyodrębnij te dwie liczby na stos\
Zamień dwie liczby wokół/
Podziel5@?*
Mnożenie przez 5 ** n. Jest to przyczyną powyższego ograniczeniaźródło
0.
jest dziesiętną częścią odpowiedzi, ale ta metoda pomija wymagane 0, gdy szansa rośnie mniej niż 10%.TI-BASIC, 10
Zajmie to więcej niż dziesięć bajtów pamięci kalkulatora, ponieważ istnieje nagłówek programu, ale jest tylko dziesięć bajtów kodu.
To wymaga danych wejściowych w postaci
[number]:[program name]
; dodanie polecenia Input wykorzystuje jeszcze trzy bajty.~
jest jednostkowym tokenem minus.źródło
Rubin -
505754 znakówźródło
J, 20
przykłady:
źródło
APL
2115 znakówBo tam, gdzie nie renderuje się dobrze
Gdzie wszystko w {} to symbole specyficzne dla APL, jak tutaj .
źródło
�[token]: � undefined
Windows PowerShell, 45
Meh
źródło
MATLAB, 29
źródło
PostScript, 77
źródło
Mathematica, 19
źródło
JavaScript, 86 bajtów
źródło
Python 3, 99
To naiwne podejście, jak sądzę, a rozwiązanie fR0DDY jest znacznie fajniejsze, ale przynajmniej jestem w stanie je rozwiązać.
Wypróbuj tutaj
Python 2, 103
źródło
Cel C:
152148 bajtów dla samej funkcji.Metody klasy, nagłówki i interfejs użytkownika nie są zawarte w kodzie.
Dane wejściowe:
int
wartość określająca liczbę monet.Wyjście:
float
wartość określająca prawdopodobieństwo.Nie golfowany:
Jest to oparte na odpowiedzi Microsoft Excel . W C i Objective-C wyzwanie polega na sztywnym kodowaniu algorytmów.
źródło