The New York Times memiliki game online harian yang disebut Letter Boxed (tautannya ada di belakang paywall; game ini juga dijelaskan di sini ), disajikan di kotak sebagai berikut:
Anda diberi 4 grup yang terdiri dari 3 huruf (masing-masing grup sesuai dengan satu sisi pada gambar); tidak ada huruf yang muncul dua kali. Tujuan permainan ini adalah untuk menemukan kata-kata yang terbuat dari 12 huruf (dan hanya huruf-huruf itu) sehingga:
- Setiap kata setidaknya 3 huruf;
- Surat berturut-turut tidak boleh dari sisi yang sama;
- Huruf terakhir dari sebuah kata menjadi huruf pertama dari kata berikutnya;
- Semua huruf digunakan setidaknya satu kali (huruf dapat digunakan kembali).
Dalam tantangan ini, Anda diberikan surat dan daftar kata. Tujuannya adalah untuk memeriksa apakah daftar kata-kata merupakan solusi Kotak Surat yang valid.
Memasukkan
Input terdiri dari (1) 4 grup yang terdiri dari 3 huruf dan (2) daftar kata. Itu bisa dalam format yang sesuai.
Keluaran
Nilai kebenaran jika daftar kata-kata adalah solusi yang valid untuk tantangan Letter Boxed untuk 4 × 3 huruf tersebut, dan nilai falsey sebaliknya.
Uji kasus
Sekelompok huruf ={{I,C,O}, {M,R,E}, {G,N,S}, {A,P,L}}
.
Nilai-nilai yang sebenarnya
- PILGRIMAGE, ENCLOSE
- TANAMAN, SAIL, LEAN, NOPE, ENIGMA
Nilai-nilai Falsey
- PILGRIMAGE, EKONOMI (tidak dapat memiliki CO karena berada di sisi yang sama)
- TANAMAN, SAIL, LEAN, NOPE (G dan M belum pernah digunakan)
- PILGRIMAGE, ENCLOSURE (U bukan salah satu dari 12 huruf)
- ENCLOSE, PILGRIMAGE (huruf terakhir dari kata pertama bukan huruf pertama dari kata kedua)
- SCAM, SO, ORGANIZE, ELOPE (semua kata harus terdiri dari minimal 3 huruf).
Perhatikan bahwa dalam tantangan ini, kami tidak peduli apakah kata-kata itu valid (bagian dari kamus).
Mencetak:
Golf kode ini , skor terendah dalam byte menang!
sumber
no letter appears twice
[]
dan0
adalah falsey. Bisakah kita output, atau haruskah output kita konsisten?Jawaban:
JavaScript (ES6),
130126 byteMengambil input sebagai0 atau 1 .
(letters)(words)
. MengembalikanCobalah online!
Langkah 1
Kami pertama iterate lebihL. untuk membangun pipa-string dipisahkan s terdiri dari semua pasangan tidak sah surat. Saat melakukannya, kami juga memastikan bahwa setiap huruf muncul setidaknya satu kali dalam beberapa kata.
Langkah 2
Kami sekarang beralih keW untuk menguji setiap kata.
sumber
Jelly ,
3029 byteCobalah online!
Tautan diad yang menggunakan daftar kata sebagai argumen kiri dan daftar huruf rata dalam kotak sebagai argumen yang benar. Ia mengembalikan
1
true dan0
salah.Penjelasan
sumber
05AB1E ,
37353332312928 byte-2 byte dengan mengambil inspirasi dari
ê
pendekatan @Emigna yang digunakan dalam jawaban 05AB1E-nya .-3 byte terima kasih kepada @Grimy .
Mengambil daftar daftar karakter untuk kata-kata sebagai input pertama, dan daftar rata dua belas huruf sebagai input kedua.
Cobalah secara online atau verifikasi semua kasus uji .
Penjelasan:
sumber
¹€g3@
->DO2@
setelah cek pertama ( TIO )05AB1E , 42 byte
Cobalah online!
sumber
P
setelah peta, dan menggunakannya)˜P
di akhir. 41 byte Pendekatan yang bagus denganê
namun! Disimpan 2 byte dalam jawaban 05AB1E saya.Python 2 , 171 byte
Cobalah online!
sumber
Jelly , 34 byte
Tautan diadik yang menerima kata-kata di sebelah kiri dan grup surat di sebelah kanan yang menghasilkan
1
jika valid dan0
jika tidak.Cobalah online! Atau lihat test-suite .
sumber
Haskell , 231 byte
Cobalah online!
Bukan skor terbaik. Beberapa guru Haskell mungkin bisa mendapatkan ini di bawah 100 byte.
Pemakaian
Penjelasan
sumber
Haskell , 231 byte
Variasi Haskell berbeda, ukurannya persis sama dengan @Paul Mutser's :)
Cobalah online!
Tidak disatukan
sumber
Ruby , 126 byte
Cobalah online!
sumber
grep
.puts f[l,['PILGRIMAGE','ENCLOSE','EG']]
mengembalikantrue
bukanfalse
.Java (JDK) , 188 byte
Cobalah online!
Penjelasan
Kredit
sumber
Arang , 63 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
Gabungkan ekspresi dan output di bawah ini
0
jika ada di antaranya yang termasuk0
sebaliknya1
.Untuk setiap kata dalam solusi, hasilkan apakah panjangnya setidaknya 3.
Untuk setiap huruf dalam solusi, hasilkan apakah itu muncul dalam puzzle.
Untuk setiap huruf dalam output puzzle apakah itu muncul dalam solusi.
Untuk setiap huruf dalam solusi, periksa apakah huruf sebelumnya tidak berada dalam kelompok yang sama, kecuali jika itu adalah huruf pertama dari sebuah kata, dalam hal ini periksa apakah itu sama dengan huruf terakhir dari kata sebelumnya, kecuali itu adalah yang pertama surat solusinya, dalam hal ini abaikan saja.
sumber
Python 2 ,
168156 byteCobalah online!
Kembali
1
untuk kebenaran,0
untuk kebohongan.sumber