Sie haben einen Stapel Pfannkuchen auf einem Teller mit einer Sirupkugel, die so dick ist, dass sie nicht über die Seiten rinnt. Sie werden nicht glücklich sein zu essen, bis beide Gesichter jedes Pfannkuchens mindestens den Sirup berührt haben, aber im Moment hat nur ein Gesicht des oberen Pfannkuchens.
Sie wissen, dass der Sirup nicht einmal einen Pfannkuchen durchtränkt, sondern unbegrenzt durch direkten Kontakt zwischen zwei Pfannkuchen übertragen werden kann. Sobald ein Gesicht eines Pfannkuchens Sirup berührt hat, wird es als für immer mit Sirup überzogen betrachtet, und es wird jedes nicht mit Sirup überzogene Gesicht erzeugt, das auch mit Sirup überzogen ist. Es ist auch möglich, Sirup von und zur Oberseite des Tellers zu befördern.
Sie beschichten jedes Pfannkuchengesicht mit Sirup, indem Sie einen Spatel unter einen oder mehrere Pfannkuchen legen und umdrehen, genau wie beim Sortieren von Pfannkuchen . (Leider ist dieser Spatel sirupbeständig und hilft nicht, den Sirup durch Berühren der Pfannkuchenflächen zu verteilen.) Leider verlieren Sie den Überblick darüber, welche Pfannkuchenflächen Sirup berührt haben, aber Sie erinnern sich an die von Ihnen gemachten Spiegelungen.
Können Sie in Anbetracht Ihrer vergangenen Flips feststellen, ob Ihre Pfannkuchen noch alle mit Sirup überzogen sind?
Herausforderung
Schreiben Sie ein Programm, das eine positive ganze Zahl N für die Anzahl der Pfannkuchen und eine Liste positiver ganzer Zahlen (alle <= N) für die von Ihnen bisher gemachten Flips enthält. Jede Zahl in der Liste steht für die Anzahl der Pfannkuchen, die umgedreht wurden. Geben Sie einen Wahrheitswert aus, wenn die Pfannkuchen überzogen sind, und einen falschen Wert, wenn nicht. ( wahrheitsgemäße / falsche Definition )
Die Eingabe sollte von stdin oder der Befehlszeile kommen und die Ausgabe sollte zu stdout (oder den nächsten Alternativen) gehen. Es ist in Ordnung , wenn Sie Ihre Eingabe ein wenig mehr benötigt Formatierung: zB [1, 1, 2, 2]
statt 1 1 2 2
für die Liste.
Beispiele
Angenommen, N = 2, so haben wir einen Stapel von zwei Pfannkuchen auf einem Teller, beginnend mit dem Sirup oben.
Wenn die Liste ist 1 1 2 2
, bedeutet dies, dass wir ...
- Drehen Sie den oberen Pfannkuchen um und beschichten Sie die Oberseite des unteren Pfannkuchens
- Drehen Sie die Oberseite wieder um - beschichten Sie die ursprüngliche Unterseite des oberen Pfannkuchens
- beide umdrehen - die Platte beschichten
- Drehen Sie beide wieder um - beschichten Sie die ursprüngliche Unterseite des unteren Pfannkuchens
Da alle vier Flächen beschichtet sind, wäre die Ausgabe so ähnlich wie True
oder 1
.
Wenn die Liste ist 1 2 2 1
, bedeutet dies, dass wir ...
- Drehen Sie den oberen Pfannkuchen um und beschichten Sie die Oberseite des unteren Pfannkuchens
- beides umdrehen - nichts beschichten
- beide wieder umdrehen - nichts beschichten
- Drehen Sie die Oberseite wieder um - beschichten Sie die ursprüngliche Unterseite des oberen Pfannkuchens
Da das die Platte berührende Gesicht noch sirupfrei ist, wäre die Ausgabe so ähnlich wie False
oder 0
.
Anmerkungen
- Die Klappliste kann beliebig groß und leer sein. In diesem Fall ist die Ausgabe falsch.
- Die Platte wirkt als Sirupträger, aber es spielt keine Rolle, ob sie beschichtet wird oder nicht. (In der Tat jede Flip - Lösung Willen Beschichtung der Platte , weil die pancake Fläche berührt müssen beschichtet werden, sondern unabhängig.)
- Die Platte kann nicht gewendet werden.
- Sie können annehmen, dass diese Pfannkuchen Einheitsscheiben ohne nennenswerte Seiten sind , sondern nur zwei gegenüberliegende Flächen.
Wertung
Das ist Code-Golf. Die kürzeste Lösung in Bytes gewinnt.
Put syrup on the pancakes!