Vous avez une pile de crêpes sur une assiette avec une boule de sirop sur le dessus tellement épaisse qu’elle ne peut pas couler sur les côtés. Vous ne serez pas heureux de manger jusqu'à ce que les deux faces de chaque crêpe aient au moins touché le sirop, mais à l'heure actuelle, une seule face de la crêpe supérieure l'a.
Vous savez que le sirop ne pénètrera jamais dans un seul pancake, mais il peut être transféré indéfiniment via un contact direct entre deux pancakes. Une fois qu'une face d'une crêpe a touché le sirop, elle est considérée comme étant recouverte de sirop pour toujours et fera en sorte que toute face non enrobée de sirop qui la touche touche également l'enrobage. Il est également possible de transférer du sirop vers le haut et vers le haut de la plaque.
Pour recouvrir chaque face de crêpes de sirop, insérez une spatule sous un ou plusieurs crêpes et renversez-les, exactement comme pour le tri des crêpes . (Malheureusement, cette spatule est résistante au sirop et ne permet pas de le distribuer en touchant les faces des pancakes.) Malheureusement, vous ne savez pas quelles faces des pancakes ont touché le sirop, mais vous vous souvenez des retournements que vous avez faits.
Compte tenu de votre passé, pouvez-vous déterminer si vos crêpes sont toutes encore enrobées de sirop?
Défi
Ecrivez un programme qui prend un entier positif N pour le nombre de crêpes et une liste d’entiers positifs (tous <= N) pour les retournements effectués jusqu’à présent. Chaque nombre dans la liste représente le nombre de crêpes retournées. Affiche une valeur de vérité si les crêpes sont cuites et une valeur de fausseté sinon. ( définition de la vérité ou de la fausseté )
L'entrée doit provenir de stdin ou de la ligne de commande et la sortie doit aller à stdout (ou aux alternatives les plus proches). C'est bien si votre entrée nécessite un formatage supplémentaire: par exemple, [1, 1, 2, 2]
au lieu de 1 1 2 2
pour la liste.
Exemples
Supposons que N = 2, nous avons donc une pile de deux crêpes sur une assiette, en commençant par le sirop.
Si la liste est 1 1 2 2
, cela signifie que nous ...
- retourner la crêpe supérieure - recouvrir la face supérieure de la crêpe inférieure
- retourner le haut à nouveau - enduire la face inférieure originale de la crêpe supérieure
- retourner les deux - recouvrir la plaque
- retournez les deux à nouveau - en recouvrant la face inférieure originale de la crêpe inférieure
Puisque les quatre faces sont revêtues, la sortie serait quelque chose comme True
ou 1
.
Si la liste est 1 2 2 1
, cela signifie que nous ...
- retourner la crêpe supérieure - recouvrir la face supérieure de la crêpe inférieure
- retourner les deux - rien ne recouvre
- retourner à nouveau les deux - rien ne recouvre
- retourner le haut à nouveau - enduire la face inférieure originale de la crêpe supérieure
Puisque le visage touchant la plaque est toujours exempt de sirop, le résultat serait quelque chose comme False
ou 0
.
Remarques
- La liste de retournement peut être arbitrairement longue et vide, auquel cas la sortie est faussée.
- La plaque sert de support à sirop mais peu importe qu’elle soit enrobée ou non. (En fait , toute solution chiquenaude sera manteau de la plaque parce que le visage de crêpe il touche doit être revêtue, mais peu importe.)
- La plaque ne peut pas être retournée.
- Vous pouvez supposer que ces crêpes sont des disques unitaires sans côtés à proprement parler, seulement deux faces opposées.
Notation
C'est du code-golf. La solution la plus courte en octets gagne.
Put syrup on the pancakes!