У вас стопка блинов на тарелке с сиропом сверху, настолько толстым, что он не может стечь по бокам. Вы не будете счастливы есть, пока оба лица каждого блина, по крайней мере, не коснутся сиропа, но сейчас только одно лицо верхнего блина имеет.
Вы знаете, что сироп никогда не пропитается даже одним блинчиком, но его можно бесконечно переносить при непосредственном контакте между двумя блинами. После того, как лицо блина коснулось сиропа, оно считается покрытым сиропом навсегда, и любое лицо, не покрытое сиропом, будет также покрыто сиропом. Также возможно перенести сироп на верхнюю сторону тарелки.
Вы продолжаете покрывать каждое лицо блина сиропом, вставляя лопаточку ниже одного или более блинов и переворачивая их повсюду, точно так же, как это делается при сортировке блинов . (К сожалению, эта лопаточка устойчива к сиропу и не помогает распределять сироп, касаясь лица блина.) К сожалению, вы теряете след того, какие лица блина коснулись сиропа, но вы помните, что вы сделали сальто.
Учитывая ваши прошлые сальто, можете ли вы определить, все ли ваши блины покрыты сиропом?
Вызов
Напишите программу, которая принимает положительное целое число N для количества блинов и список положительных целых чисел (все <= N) для сальто, которое вы сделали до сих пор. Каждый номер в списке представляет количество блинов, которые были перевернуты. Выведите истинное значение, если блины уже покрыты оболочкой, и ложное значение, если нет. ( правдивое / ложное определение )
Входные данные должны поступать из stdin или из командной строки, а выходные данные - из stdout (или ближайших альтернатив). Хорошо, если ваш ввод требует небольшого дополнительного форматирования: например, [1, 1, 2, 2]
вместо 1 1 2 2
списка.
Примеры
Предположим, что N = 2, поэтому у нас на тарелке два блина, начиная с сиропа сверху.
Если список есть 1 1 2 2
, это означает, что мы ...
- перевернуть верхний блин - покрытие верхней грани нижнего блина
- переверните верх снова - покрытие оригинальной нижней поверхности верхнего блина
- перевернуть оба - покрытие пластины
- переверните оба снова - покрытие оригинальной нижней поверхности нижнего блина
Поскольку все четыре грани имеют покрытие, на выходе будет что-то вроде True
или 1
.
Если список есть 1 2 2 1
, это означает, что мы ...
- перевернуть верхний блин - покрытие верхней грани нижнего блина
- перевернуть оба - покрытие ничего
- переверните оба снова - ничего не покрывая
- переверните верх снова - покрытие оригинальной нижней поверхности верхнего блина
Поскольку лицо, касающееся пластины, по-прежнему не содержит сиропа, результат будет примерно таким False
или 0
.
Заметки
- Флип-лист может быть сколь угодно большим и может быть пустым, и в этом случае результат будет ложным.
- Пластина действует как носитель сиропа, но это не имеет значения, покрыто ли это или нет. (В действительности любой флип - решение будет покрывать пластины , потому что блин лицо это касается должно быть нанесено покрытие, но независимо.)
- Тарелка не может быть перевернута.
- Вы можете предположить, что эти блины представляют собой единичные диски без сторон, о которых можно говорить, только две противоположные стороны.
счет
Это код-гольф. Самое короткое решение в байтах побеждает.
Put syrup on the pancakes!