Tienes una pila de panqueques en un plato con una gota de jarabe en la parte superior tan gruesa que no puede correr por los lados. No estará contento de comer hasta que las dos caras de cada panqueque hayan tocado al menos el jarabe, pero en este momento solo una cara del panqueque superior tiene.
Usted sabe que el jarabe nunca empapará ni siquiera un panqueque, pero puede transferirse indefinidamente a través del contacto cara a cara entre dos panqueques. Una vez que la cara de un panqueque ha tocado jarabe, se considera recubierto con jarabe para siempre, y hará que cualquier cara sin jarabe que lo toque también esté cubierta de jarabe. También es posible transferir el jarabe hacia y desde el lado superior de la placa.
Procedes a cubrir cada cara de panqueque con jarabe insertando una espátula debajo de uno o más panqueques y volteándolos por completo, exactamente como se hace en la clasificación de panqueques . (Desafortunadamente, esta espátula es resistente al jarabe y no ayuda a distribuir el jarabe al tocar las caras de los panqueques). Lamentablemente, pierde la noción de qué caras de panqueques han tocado el jarabe, pero recuerda las volteretas que hizo.
Teniendo en cuenta sus cambios anteriores, ¿puede determinar si sus panqueques ya están cubiertos con jarabe?
Reto
Escriba un programa que tome un entero positivo N para la cantidad de panqueques, y una lista de enteros positivos (todos <= N) para los saltos que ha realizado hasta ahora. Cada número en la lista representa el número de panqueques que se voltearon. Emite un valor verdadero si los panqueques se están recubriendo y un valor falso si no. ( definición de verdad / falsedad )
La entrada debe provenir de stdin o la línea de comando y la salida debe ir a stdout (o las alternativas más cercanas). Está bien si su entrada necesita un poco de formato adicional: por ejemplo, en [1, 1, 2, 2]
lugar de 1 1 2 2
para la lista.
Ejemplos
Suponga N = 2, entonces tenemos una pila de dos panqueques en un plato, comenzando con el jarabe en la parte superior.
Si la lista es 1 1 2 2
, esto significa que nosotros ...
- voltear el panqueque superior - cubriendo la cara superior del panqueque inferior
- voltee la parte superior nuevamente - cubriendo la cara inferior original del panqueque superior
- voltear ambos - cubriendo la placa
- voltee ambos de nuevo, cubriendo la cara inferior original del panqueque inferior
Dado que las cuatro caras están recubiertas, la salida sería algo así como True
o 1
.
Si la lista es 1 2 2 1
, esto significa que nosotros ...
- voltear el panqueque superior - cubriendo la cara superior del panqueque inferior
- voltear los dos, sin recubrir nada
- voltear ambos de nuevo, sin recubrir nada
- voltee la parte superior nuevamente - cubriendo la cara inferior original del panqueque superior
Dado que la cara que toca la placa aún no contiene jarabe, la salida sería algo así como False
o 0
.
Notas
- La lista desplegable puede ser arbitrariamente grande y puede estar vacía, en cuyo caso la salida es falsa.
- La placa actúa como un jarabe-portadora, pero no importa si se queda recubierta o no. (De hecho, cualquier solución flip voluntad recubrir la placa porque la cara pancake que toca debe recubrirse, pero independientemente.)
- La placa no puede ser volteado.
- Se puede asumir estos panqueques son disco unidad sin partes para hablar de, sólo dos caras opuestas.
Tanteo
Este es el código de golf. La solución más corta en bytes victorias.
Put syrup on the pancakes!