Anda memiliki setumpuk panekuk di piring dengan segumpal sirup di atasnya begitu tebal sehingga tidak bisa mengecil. Anda tidak akan senang makan sampai kedua wajah masing-masing pancake setidaknya menyentuh sirup, tetapi saat ini hanya satu wajah dari pancake atas.
Anda tahu bahwa sirup tidak akan pernah meresap melalui satu pancake, tetapi dapat ditransfer tanpa batas waktu melalui kontak langsung antara dua pancake. Setelah sebuah wajah dari pancake menyentuh sirup, itu dianggap dilapisi dengan sirup selamanya, dan akan membuat wajah tanpa sirup apa pun yang menyentuh sirup itu dilapisi juga. Dimungkinkan untuk mentransfer sirup ke dan dari sisi atas piring juga.
Anda melanjutkan untuk melapisi setiap wajah pancake dengan sirup dengan memasukkan spatula di bawah satu atau lebih pancake dan membalik semuanya, persis seperti yang dilakukan dalam penyortiran pancake . (Sayangnya spatula ini tahan terhadap sirup, dan tidak membantu mendistribusikan sirup dengan menyentuh wajah panekuk.) Sayangnya Anda kehilangan jejak wajah panekuk yang menyentuh sirup tetapi Anda ingat flip yang Anda buat.
Mengingat flips masa lalu Anda, dapatkah Anda menentukan apakah pancake Anda sudah dilapisi dengan sirup?
Tantangan
Tulis program yang menggunakan bilangan bulat positif N untuk jumlah pancake, dan daftar bilangan bulat positif (semua <= N) untuk flip yang Anda buat sejauh ini. Setiap nomor dalam daftar mewakili jumlah pancake yang dibalik. Keluarkan nilai kebenaran jika pancake selesai dilapisi dan nilai palsu jika tidak. ( definisi benar / salah )
Input harus berasal dari stdin atau baris perintah dan output harus pergi ke stdout (atau alternatif terdekat). Tidak apa-apa jika input Anda memerlukan sedikit format tambahan: mis. [1, 1, 2, 2]
Alih-alih 1 1 2 2
untuk daftar.
Contohnya
Asumsikan N = 2, jadi kami memiliki setumpuk dua pancake di piring, dimulai dengan sirup di atasnya.
Jika daftar ini 1 1 2 2
, ini berarti kita ...
- flip pancake atas - melapisi wajah atas pancake bawah
- balik bagian atas lagi - melapisi wajah bawah asli pancake atas
- balik keduanya - melapisi piring
- balikkan keduanya lagi - melapisi wajah bagian bawah asli pancake bawah
Karena keempat wajah dilapisi, hasilnya akan seperti True
atau 1
.
Jika daftar ini 1 2 2 1
, ini berarti kita ...
- flip pancake atas - melapisi wajah atas pancake bawah
- flip keduanya - tidak ada lapisan
- balikkan keduanya lagi - tidak melapisi apa pun
- balik bagian atas lagi - melapisi wajah bawah asli pancake atas
Karena wajah yang menyentuh pelat masih bebas sirup, hasilnya akan seperti False
atau 0
.
Catatan
- Daftar flip mungkin besar sewenang-wenang dan dapat kosong, dalam hal ini hasilnya palsu.
- Piring bertindak sebagai pembawa-sirup tetapi tidak masalah jika dilapisi atau tidak. (Sebenarnya setiap solusi balik akan melapisi pelat karena wajah panekuk yang disentuhnya harus dilapisi, tetapi apa pun itu.)
- Piring tidak bisa dibalik.
- Anda dapat mengasumsikan pancake ini adalah disk unit tanpa sisi untuk dibicarakan, hanya dua wajah yang berlawanan.
Mencetak gol
Ini adalah kode-golf. Solusi terpendek dalam byte menang.
Put syrup on the pancakes!