Tujuan dari tantangan ini adalah untuk menentukan apakah koleksi potongan satu-dimensonal dapat dibentuk untuk membentuk potongan kontinu yang terbatas.
Sebuah karya adalah, urutan yang terbatas tidak kosong dari nol dan satu yang dimulai dan berakhir dengan satu a. Beberapa potongan yang mungkin adalah 1
, 101
, 1111
, 1100101
.
Ubin berarti mengatur potongan sehingga satu blok yang berdekatan terbentuk. Satu dari satu bagian dapat menempati tempat nol, tetapi bukan bagian satu, dari bagian lain.
Sama halnya, jika kita melihat satu sebagai "bahan padat" dan nol sebagai "lubang", potongan harus pas sehingga membentuk satu regangan, tanpa meninggalkan lubang.
Untuk membentuk ubin, potongan hanya dapat digeser sepanjang ruang satu dimensi mereka. (Mereka tidak dapat dibagi, atau tercermin). Setiap bagian digunakan tepat sekali.
Contohnya
Tiga buah 101
, 11
, 101
dapat ubin seperti yang ditunjukkan pada berikut, di mana masing-masing bagian diwakili dengan pergeseran yang diperlukan:
101
11
101
jadi ubin yang didapat adalah
111111
Sebagai contoh kedua, potongan 11011
dan 1001101
tidak bisa ubin. Secara khusus, pergeseran
11011
1001101
tidak valid karena ada dua yang bertabrakan; dan
11011
1001101
tidak valid karena hasilnya akan mengandung nol.
Aturan tambahan
The masukan adalah kumpulan dari satu atau lebih potongan. Format wajar apa pun diizinkan; sebagai contoh:
- Daftar string, di mana setiap string dapat berisi dua karakter yang berbeda dan konsisten;
- Beberapa array, di mana setiap array berisi posisi yang untuk sepotong;
- Daftar bilangan bulat (ganjil) seperti representasi biner dari setiap angka mendefinisikan suatu bagian.
The keluaran harus menjadi nilai truthy jika ubin adalah mungkin, dan nilai falsy sebaliknya. Nilai output tidak perlu konsisten; yaitu, mereka dapat berbeda untuk input yang berbeda.
Program atau fungsi diizinkan, dalam bahasa pemrograman apa pun . Celah standar dilarang.
Kode terpendek dalam byte menang.
Uji kasus
Setiap input berada pada jalur yang berbeda
Sejujurnya
1
111
1, 1
11, 111, 1111
101, 11, 1
101, 11, 101
10001, 11001, 10001
100001, 1001, 1011
10010001, 1001, 1001, 101
10110101, 11001, 100001, 1
110111, 100001, 11, 101
1001101, 110111, 1, 11, 1
Palsu
101
101, 11
1, 1001
1011, 1011
11011, 1001101
1001, 11011, 1000001
1001, 11011, 1000001, 10101
sumber
101101
akan menjadi kebenaran, meskipun tidak ada jumlah terbatas dari mereka menghasilkan blok yang berdekatan.Jawaban:
Jelly , 15 byte
Mengambil daftar indeks dan mengembalikan bilangan bulat positif (kebenaran) atau 0 (salah).
Cobalah online! atau verifikasi sebagian besar kasus uji .
sumber
JavaScript (ES6),
747370 byteMengambil input sebagai array bilangan bulat 32-bit. Mengembalikan boolean.
Atau 66 byte dengan nilai kebenaran / kepalsuan terbalik:
Uji kasus
Tampilkan cuplikan kode
Bagaimana?
sumber
Sekam , 16 byte
Mengambil daftar daftar indeks berbasis 1. Cobalah online!
Penjelasan
sumber
Jelly , 16 byte
Tautan monadik yang mengambil daftar daftar satu dan nol yang mengembalikan keduanya
1
(kebenaran) atau0
(falsey).Cobalah online!atau lihat test-suite (disingkat - 6 kesalahan pertama diikuti oleh delapan kebenaran pertama karena panjang empat yang terlalu lama untuk dimasukkan karena penggunaan produk Cartesian).
Bagaimana?
sumber
Python 2 , 159 byte
Cobalah online!
sumber
Jelly , 16 byte
Cobalah online!
-1 byte terima kasih kepada Tn. Xcoder
Saya mengembangkan ini sepenuhnya independen dari Jonathan Allan tetapi sekarang melihat miliknya persis sama:
sumber
J , 74 byte
Saya mungkin mencoba membuatnya diam-diam nanti, tetapi untuk sekarang ini adalah kata kerja eksplisit. Saya akan menjelaskan versi yang tidak diserang. Dibutuhkan daftar bilangan bulat kotak dan mengembalikan
1
(benar) atau0
(salah).Cobalah online!
sumber