Tulis sebuah program yang, diberi bilangan bulat positif kecil dari input standar, menghitung probabilitas bahwa membalik koin sebanyak itu akan menghasilkan setengah kepala lebih banyak.
Sebagai contoh, diberikan 2 koin hasil yang mungkin adalah:
HH HT TH TT
di mana H dan T adalah kepala dan ekor. Ada 2 hasil ( HT
dan TH
) yang jumlahnya setengah dari jumlah koin. Ada total 4 hasil, jadi probabilitasnya adalah 2/4 = 0,5.
Ini lebih sederhana daripada yang terlihat.
Kasus uji:
2 -> 0.5
4 -> 0.375
6 -> 0.3125
8 -> 0.2734375
code-golf
math
probability-theory
david4dev
sumber
sumber
Jawaban:
J, 22
19(pendekatan pembunuh)Saya membahas hal ini sambil memainkan jawaban Haskell saya.
(I / O yang sama dengan jawaban J saya yang lain )
sumber
0 1|domain error: script | %/ >:i.&.(".@stdin)_
Pari / GP -
323034 karaktersumber
print(binomial(n=input,n\2)/2^n)
.Python 53 Karakter
sumber
Excel, 25
Namun tidak cukup sesuai dengan spesifikasi, :)
Beri nama sel
n
lalu ketikkan yang berikut ke sel lain:sumber
Haskell, 39
4346Demonstrasi:
sumber
Undefined variable "readln"
readLn
adalah modal.main=do x<-readLn;print$foldr1(/)[1..x]
melakukan hal yang sama dan menghemat 3 byte?J, 25 (pendekatan alami)
Penggunaan sampel:
Ini semua sudah jelas, tetapi untuk sebagian besar tanggung jawab:
!~ -:
dapat dianggap sebagai binomial (x, x / 2)% 2&^
adalah "dibagi dengan 2 ^ x "&. (". @ stdin) _
untuk I / Osumber
GNU Octave - 36 Karakter
sumber
Ruby, 39 karakter
sumber
Golfscript - 30 karakter
Batasan - hanya berfungsi untuk input yang kurang dari 63
kasus uji
Analisis
'0.'
GS tidak melakukan floating point, jadi kami akan memalsukannya dengan menulis integer setelah ini.\~
Tarik input ke atas tumpukan dan konversikan ke integer...
Buat 2 salinan input.),1>
Buat daftar dari 1..n\2//
Membagi daftar ke 1..n / 2 dan n / 2 + 1..n{{*}*}%
Kalikan elemen dari dua sublists yang memberi (n / 2)! dan n! / (n / 2)!~
Ekstrak dua angka itu ke tumpukan\
Tukar dua angka di sekitar/
Divide5@?*
Multiply hingga 5 ** n. Inilah penyebab keterbatasan yang diberikan di atassumber
0.
adalah bagian desimal dari jawaban, tetapi metode tersebut mengabaikan 0 yang diperlukan ketika peluang tumbuh kurang dari 10%.TI-BASIC, 10
Ini akan membutuhkan lebih dari sepuluh byte memori kalkulator karena ada tajuk program, tetapi hanya ada sepuluh byte kode.
Ini membutuhkan input dalam bentuk
[number]:[program name]
; menambahkan perintah Input menggunakan tiga byte lagi.~
adalah token minus unary.sumber
Ruby -
505754 karaktersumber
J, 20
contoh:
sumber
APL
2115 karakterUntuk tempat yang tidak tepat
Di mana segala sesuatu di {} adalah simbol khusus APL seperti di sini .
sumber
�[token]: � undefined
Windows PowerShell, 45
Ah.
sumber
MATLAB, 29
sumber
PostScript, 77
sumber
Mathematica, 19
sumber
Javascript, 86 byte
sumber
Python 3, 99
Ini adalah pendekatan yang naif, saya kira, dan solusi fR0DDY jauh lebih keren, tetapi setidaknya saya bisa menyelesaikannya.
Coba di sini
Python 2, 103
sumber
Tujuan-C:
152148 byte hanya untuk fungsi.Metode kelas, header, dan UI tidak termasuk dalam kode.
Input:
int
nilai yang menentukan jumlah koin.Output:
float
nilai yang menentukan probabilitas.Tidak Disatukan:
Ini didasarkan dari jawaban Microsoft Excel . Dalam C dan Objective-C, tantangannya adalah dalam mengkodekan algoritma.
sumber