Kości nieprzechodnie są ładnymi, małymi zabawkami, które przeczą naszej intuicji w teorii prawdopodobieństwa. Potrzebujemy kilku definicji tego wyzwania:
Rozważ dwie kości A i B, które są rzucane jednocześnie. Mówimy, że bije B jeśli prawdopodobieństwo A wykazujący większą liczbę niż B jest większe niż prawdopodobieństwo B wykazujące większą liczbę niż A .
Rozważmy teraz zestaw trzech kości, z etykietami , B , C . Taki zestaw kości nazywany jest nieprzechodnim, jeśli
- albo A bije B , B bije C i C bije A
- lub C uderzeń B , B bije i uderzeń C .
Jako jeden z moich ulubionych przykładów, rozważ kości Grime , które mają następujące strony:
A: 3 3 3 3 3 6
B: 2 2 2 5 5 5
C: 1 4 4 4 4 4
Co ciekawe, średnia każdej kości wynosi 3,5, podobnie jak zwykła kostka.
Można pokazać, że:
- A bije B z prawdopodobieństwem 7/12.
- B pokonuje C z prawdopodobieństwem 7/12.
- C bije A z prawdopodobieństwem 25/36.
Teraz te konkretne kości są jeszcze dziwniejsze. Jeśli rzucimy każdą kością dwa razy i zsumujemy wyniki, kolejność bitów zostanie odwrócona:
- B pokonuje A z prawdopodobieństwem 85/144.
- C bije B z prawdopodobieństwem 85/144.
- A bije C z prawdopodobieństwem 671/1296.
Nazwijmy zestaw kości z tą właściwością Nieprzechodnie nieprzepuszczalne .
Z drugiej strony, jeśli kości zachowają swój pierwotny cykl przy użyciu dwóch rzutów, nazywamy je silnie nieprzechodnie . (Jeśli nie ma cyklu dla dwóch rzutów, po prostu nazywamy je nieprzechodnimi ).
Wyzwanie
Biorąc pod uwagę trzy sześciościenne określić, które z powyższych właściwości ten zestaw posiada i jedno wyjście z następujących ciągów: none
, nontransitive
, Grime-nontransitive
, strongly nontransitive
.
Możesz napisać program lub funkcję, wziąć dane wejściowe przez STDIN, argument wiersza poleceń, monit lub argument funkcji i zapisać wynik w STDOUT lub zwrócić go jako ciąg.
Możesz założyć, że wszystkie strony są liczbami całkowitymi nieujemnymi. Nie możesz zakładać, że boki lub kości są w określonej kolejności. Możesz wprowadzać dane w dowolnym dogodnym formacie listy lub ciągu.
To jest kod golfowy, więc wygrywa najkrótsza odpowiedź (w bajtach).
Przypadki testowe
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
Jeśli chcesz jeszcze dokładniej przetestować swój kod, Peter Taylor był na tyle uprzejmy, że napisał implementację referencyjną, która sklasyfikowała wszystkie ~ 5000 zestawów kości o bokach od 1 do 6 i średnio 3,5. Link do wklejania
1 2 2 4 6 6, 1 2 3 5 5 5, 2 3 4 4 4 4
Dostaję A <B 17/36, B> C 19/36, C <A 16/36.