Род модерирует карточную игру между двумя игроками: Джорджем и Тимом. В настоящее время Тим тасует карты. Род подозревает, что Тим пытается обмануть, поэтому он нуждается в вашей помощи, чтобы проверить, что случайный выбор справедлив.
Тим делает перетасованный перетасовкой: он вырезает стопку карт из нижней части колоды, затем разрезает различные части от верхней части стопки до верхней части колоды и повторяет процесс несколько раз.
Род с орлиными глазами и может точно видеть, сколько карт каждый раз вырубает Тим, однако он не может рассчитывать и отслеживать карты так быстро, как тасует Тим. Вот где вы приходите: Род хочет, чтобы вы написали программу или функцию, которая получает подробную информацию о перетасовании и определяет, является ли перестановка честной, слабой или хитрой.
- Если после перетасовки менее 25 пар смежных карт остаются смежными (в том же порядке), тогда перетасовка является справедливой, и игра может продолжаться.
- Если по крайней мере 25 (но не все) пары смежных карт остаются смежными, то перетасовка слабая, и Род ударит Тима по голове и попросит его еще раз перемешать.
- Если в конце все карты остаются в одном и том же положении, то Тим явно обманывает, и Род ударит его большой форелью.
Это код гольф, поэтому выигрывает самый короткий код.
Входные данные:
Вы получите ряд чисел от 0 до 52 (оба исключительных), разделенных пробелами по нескольким строкам, где каждая строка представляет раунд перетасовки, который начинается и заканчивается всеми сложенными вместе картами.
В каждой строке первое число - это количество карт, которые Тим вырезает из нижней части колоды, а каждое последующее число - это количество карт, которые он сбрасывает из своей руки на верх колоды. Если какие-либо карты остаются после последнего номера в строке, вы должны предположить, что Тим кладет их на верх колоды.
Вклад гарантированно будет действительным. Существует как минимум одна строка чисел, и каждая строка содержит как минимум 2 числа. Первое число в каждой строке не меньше, чем сумма всех других чисел в той же строке. Завершающий перевод строки не обязателен, вы можете предположить, что вход имеет один или что он не имеет.
Выход:
Ваша программа должна печатать / возвращать «честно», если случайное перемешивание справедливо, «слабое», если случайное перемешивание слабое, и «обманывать», если Тим держит все карты в одном порядке. Завершающий перевод строки не является обязательным.
Пример:
Предполагается, что в колоде 52 карты, но для демонстрации я буду использовать меньшую колоду из 10 карт.
Входные данные:
5 3 1
4 2 2
Начальная колода, если смотреть сверху: 0 1 2 3 4 5 6 7 8 9
5
➜ 0 1 2 3 4
( 5 6 7 8 9
в руке)
3
➜ 5 6 7 0 1 2 3 4
( 8 9
в руке)
1
➜ 8 5 6 7 0 1 2 3 4
( 9
в руке)
конец строки ➜ 9 8 5 6 7 0 1 2 3 4
4
➜ 9 8 5 6 7 0
( 1 2 3 4
в руке)
2
➜ 1 2 9 8 5 6 7 0
( 3 4
в руке)
2
➜ 3 4 1 2 9 8 5 6 7 0
4 пары остаются смежными:(3 4) (1 2) (5 6) (6 7)
Тестовые случаи:
43 5 5 5 5 5 5 5 5
43 5 5 5 5 5 5 5 5
43 5 5 5 5 5 5 5 5
Выход: fair
43 5 5 5 5 5 5 5 5
43 5 5 5 5 5 5 5 5
43 5 5 5 5 5 5 5
Выход: weak
29 24
19 18
38 2 1 8 13 6 4
47 15 16 5 2 1 7
34 22 9 3
44 9 10 11 3 1 7
33 18 4 2 3 3
Выход: fair
24 6 12 4
25 3 19
36 4 25 2
19 11 1 3
15 9 3
37 5 27
Выход: weak
26 13
26 13
26 13
26 13
Выход: trick
50 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
Выход: weak
50 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
50 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
Выход: trick
50 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
49 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
Выход: fair
Требования:
- Если вы пишете функцию, она может либо читать из стандартного ввода, либо получать ввод в виде единственного строкового параметра. Кроме того, функция может распечатать вывод или вернуть его.
- Программа должна быть запущена в Linux с использованием свободно доступного программного обеспечения.
- Исходный код должен использовать только символы ASCII.
- Нет стандартных лазеек.