Нетранзитивные кости - это милые маленькие игрушки, которые бросают вызов нашей интуиции в теории вероятностей. Нам понадобится несколько определений для этой задачи:
Рассмотрим две кости A и B, которые выбрасываются одновременно. Мы говорим, что A побеждает B, если вероятность того, что A показывает большее число, чем B , строго больше, чем вероятность B показывает большее число , чем A .
Теперь рассмотрим набор из трех костей, с этикетками , B , C . Такой набор кубиков называется нетранзитивным, если
- либо A бьет B , B бьет C, а C бьет A
- или C бьет B , B бьет и бьется C .
В качестве одного из моих любимых примеров рассмотрим кости Грайма , у которых есть следующие стороны:
A: 3 3 3 3 3 6
B: 2 2 2 5 5 5
C: 1 4 4 4 4 4
Интересно, что среднее значение каждого кубика равно 3,5, как и у обычного кубика.
Можно показать, что:
- А бьет Б с вероятностью 7/12.
- B бьет C с вероятностью 7/12.
- С бьет А с вероятностью 25/36.
Теперь эти конкретные кости еще более странные. Если мы бросим каждый кубик дважды и суммируем результаты, порядок которых превосходит, который меняется на противоположный:
- B бьет A с вероятностью 85/144.
- С бьет В с вероятностью 85/144.
- А бьет С с вероятностью 671/1296.
Давайте назовем набор кубиков с этим свойством Grime-нетранзитивных .
С другой стороны, если кости сохраняют свой первоначальный цикл при использовании двух бросков, мы называем их строго нетранзитивными . (Если для двух бросков вообще нет цикла, мы просто называем их нетранзитивными .)
Соревнование
Принимая во внимание три шестигранного кубика, определяют , какие из указанных выше свойств этого набора имеет, и выход одного из следующих строк: none
, nontransitive
, Grime-nontransitive
, strongly nontransitive
.
Вы можете написать программу или функцию, получить ввод через STDIN, аргумент командной строки, приглашение или аргумент функции и записать результат в STDOUT или вернуть его в виде строки.
Вы можете предположить, что все стороны являются неотрицательными целыми числами. Вы не можете предполагать, что стороны или кости находятся в каком-то определенном порядке. Вы можете взять ввод в любом удобном формате списка или строки.
Это код гольф, поэтому самый короткий ответ (в байтах) выигрывает.
Тестовые случаи
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
Если вы хотите протестировать свой код еще более тщательно, Питер Тейлор был достаточно любезен и написал эталонную реализацию, которая классифицировала все ~ 5000 наборов кубиков со сторонами от 1 до 6 и средним значением 3,5. Вставить ссылку
1 2 2 4 6 6, 1 2 3 5 5 5, 2 3 4 4 4 4
Я получаю A <B 17/36, B> C 19/36, C <A 16/36.