Dadu nontransitif adalah mainan kecil yang bagus yang menentang intuisi kita dalam teori probabilitas. Kami membutuhkan beberapa definisi untuk tantangan ini:
Pertimbangkan dua dadu A dan B yang dilemparkan sekaligus. Kami mengatakan bahwa A mengalahkan B jika probabilitas A menunjukkan jumlah yang lebih besar daripada B benar-benar lebih besar dari probabilitas B yang menunjukkan jumlah yang lebih besar daripada A .
Sekarang mempertimbangkan satu set dari tiga dadu, dengan label A , B , C . Seperangkat dadu semacam itu disebut nontransitif jika
- baik A mengalahkan B , B mengalahkan C dan C mengalahkan A
- atau C mengalahkan B , B mengalahkan A dan A mengalahkan C .
Sebagai salah satu contoh favorit saya, pertimbangkan dadu Grime , yang memiliki sisi berikut:
A: 3 3 3 3 3 6
B: 2 2 2 5 5 5
C: 1 4 4 4 4 4
Menariknya, rata-rata setiap dadu adalah 3,5, sama seperti dadu biasa.
Seseorang dapat menunjukkan bahwa:
- A mengalahkan B dengan probabilitas 7/12.
- B mengalahkan C dengan probabilitas 7/12.
- C mengalahkan A dengan probabilitas 25/36.
Sekarang dadu khusus ini bahkan lebih aneh. Jika kita menggulung masing-masing dadu dua kali dan menjumlahkan hasilnya, urutan ketukan yang dibalik:
- B mengalahkan A dengan probabilitas 85/144.
- C ketukan B dengan probabilitas 85/144.
- Sebuah mengalahkan C dengan probabilitas 671/1296.
Mari kita memanggil satu set dadu dengan properti ini Grime-nontransitive .
Di sisi lain, jika dadu mempertahankan siklus aslinya saat menggunakan dua lemparan, kami menyebutnya sangat tidak transitif . (Jika tidak ada siklus sama sekali untuk dua lemparan, kami cukup menyebutnya tidak transitif .)
Tantangan
Mengingat tiga dadu bersisi enam, menentukan sifat-sifat di atas set ini memiliki, dan output salah satu string berikut: none
, nontransitive
, Grime-nontransitive
, strongly nontransitive
.
Anda dapat menulis program atau fungsi, mengambil input melalui STDIN, argumen baris perintah, prompt atau argumen fungsi, dan menulis hasilnya ke STDOUT atau mengembalikannya sebagai string.
Anda dapat mengasumsikan bahwa semua pihak adalah bilangan bulat non-negatif. Anda tidak dapat mengasumsikan bahwa sisi atau dadu berada dalam urutan tertentu. Anda dapat mengambil input dalam format string atau daftar yang mudah digunakan.
Ini adalah kode golf, jadi jawaban tersingkat (dalam byte) menang.
Uji Kasus
none
1 2 3 4 5 6, 6 5 4 3 2 1, 1 3 5 2 4 6
1 1 1 6 6 6, 4 4 4 5 5 5, 5 5 5 5 5 5
1 1 2 5 6 6, 2 2 3 4 4 6, 2 3 3 4 4 5
0 1 2 3 4 5, 1 1 2 3 3 5, 1 2 2 2 3 5
3 13 5 7 13 7, 5 7 11 5 7 13, 5 9 13 5 7 9
nontransitive
1 2 2 4 6 6, 1 2 3 5 5 5, 2 3 4 4 4 4
1 4 4 4 4 4, 2 2 2 4 5 6, 2 3 3 3 5 5
1 2 1 6 5 6, 3 1 3 6 2 6, 2 4 2 4 4 5
3 4 6 6 7 7, 4 4 4 7 7 7, 5 5 5 5 6 7
2 5 11 11 14 14, 5 5 5 14 14 14, 8 8 8 8 8 17
Grime-nontransitive
3 3 3 3 3 6, 2 2 2 5 5 5, 1 4 4 4 4 4
1 1 4 5 5 5, 2 2 2 3 6 6, 3 3 3 4 4 4
2 1 4 6 4 4, 2 4 5 2 3 5, 3 3 6 3 3 3
11 11 13 15 15 16, 12 12 12 13 16 16, 13 13 13 14 14 14
4 4 7 16 19 19, 4 7 13 13 13 19, 4 10 10 10 16 19
strongly nontransitive
2 2 2 5 5 5, 2 3 3 3 5 5, 1 1 4 5 5 5
2 2 2 3 6 6, 2 2 2 5 5 5, 2 2 4 4 4 5
1 5 1 3 6 5, 6 6 4 2 2 1, 5 3 4 3 4 2
0 0 2 4 4 5, 0 1 1 3 5 5, 1 1 2 3 4 4
1 1 9 17 17 21, 1 5 5 13 21 21, 5 5 13 13 13 17
Jika Anda ingin menguji kode Anda bahkan lebih teliti, Peter Taylor cukup baik untuk menulis implementasi referensi, yang mengklasifikasikan semua ~ 5000 set dadu dengan sisi 1 hingga 6 dan rata-rata 3,5. Tautan pastebin
1 2 2 4 6 6, 1 2 3 5 5 5, 2 3 4 4 4 4
Saya mendapatkan A <B 17/36, B> C 19/36, C <A 16/36.