Jika Anda memiliki anak kecil di rumah Anda, Anda mungkin menemukan surat mandi busa. Ini dapat dibasahi dan menempel pada permukaan datar seperti ubin dan sisi bak mandi untuk membuat kata-kata dan pesan.
Kisaran kata-kata dan pesan agak terbatas jika Anda hanya memiliki satu set meskipun, karena Anda hanya mendapatkan 36 karakter: huruf besar AZ, dan angka 0-9: ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
. Namun, Anda bisa licik dan menyalahgunakan beberapa huruf dan angka untuk membentuk salinan tambahan dari surat lain:
3: E
1: I
7: L (when rotated)
M: W (when rotated)
0: O
2: S (when flipped)
5: S
W: M (when rotated)
2: Z
5: Z (when flipped)
O: 0
6: 9 (when rotated)
L: 7 (when rotated)
9: 6 (when rotated)
Perhatikan bahwa ini tidak semuanya dua arah, karena cenderung lebih mudah untuk membaca digit sebagai bagian dari kata daripada huruf sebagai bagian dari angka.
Setiap set juga tersedia dalam berbagai warna, di mana setiap huruf diwarnai secara berurutan. Misalnya, jika set Anda memiliki 3 warna, Merah, Kuning dan Biru, set Anda akan seperti:
- Merah:
ADGJMPSVY147
- Kuning:
BEHKNQTWZ258
- Biru:
CFILORUX0369
Tugas Anda, oleh karena itu, adalah mengambil tiga parameter (dengan cara apa pun yang sesuai) yang menunjukkan kata atau frasa, jumlah warna yang akan digunakan, dan jumlah set yang Anda miliki, kemudian untuk menghasilkan representasi kata atau frasa, dalam satu set warna yang cocok, gunakan pengganti jika diperlukan. Jika tidak memungkinkan untuk membuat kata atau frasa yang diberikan jumlah set, sebaliknya output "Tidak", dalam warna yang sesuai.
Contohnya
Dalam semua ini, parameter pertama adalah kata atau frasa, yang kedua adalah jumlah warna, dan yang ketiga adalah jumlah set yang tersedia.
["bath", 3, 1]
["programming", 3, 2]
["puzzles", 3, 1]
["code golf", 5, 1]
["willow tree", 1, 1]
["impossible phrase", 8, 1]
- hanya ada 1 P dalam satu set, dan tidak ada pengganti yang valid
Catatan
- Anda dapat menetapkan secara default ke 1 set jika ini membantu (misalnya nilai parameter default 1), tetapi Anda harus mendukung beberapa set jika diminta. Jumlah set yang Anda miliki akan selalu menjadi bilangan bulat non-nol positif.
- Jika Anda memiliki beberapa set, semuanya berwarna dengan cara yang sama: jika A berwarna merah di set pertama, itu juga akan menjadi merah di set kedua juga. Warna-warna diterapkan per set, tidak untuk semua set dalam doa yang diberikan
- Anda harus mendukung 1 hingga 36 warna - 1 berarti semua karakter memiliki warna yang sama, 36 berarti semuanya berbeda. Hanya akan ada jumlah warna integer.
- Anda dapat menggunakan warna apa saja, selama mereka berbeda secara visual - jika Anda keluaran ke terminal, Anda dapat menggunakan kombinasi foreground dan background sebagai "color", meskipun Anda tidak harus menggunakan warna yang sama untuk foreground dan background
- Output Anda harus menggunakan karakter yang sebenarnya Anda gunakan, bukan karakter dari input. Misalnya, jika Anda memiliki input ["willow", 1, 1], Anda dapat menghasilkan
WIL7OM
dengan 7 dan M diputar 180 derajat - Anda harus menggunakan huruf yang benar terlebih dahulu, kemudian ganti:
MI7LOW
tidak benar untuk ["willow", 1, 1] - Anda dapat menggunakan subtitusi apa saja untuk karakter yang diberikan:
SO5
danSO2
dengan membalik 2 keduanya berlaku untuk "SOS" - Banyak pemanggilan kode Anda untuk input yang sama tidak harus menghasilkan output yang identik
- Output harus dalam huruf besar, tetapi input bisa dalam campuran huruf besar dan kecil
- Itu harus jelas, tetapi ruang tidak memiliki warna
Aturan
- Ini adalah kode golf, tetapi dengan output semi-grafis (saya tidak yakin apakah Anda dapat melakukan membalik teks di terminal, tetapi saya tertarik untuk melihat apakah Pyth memiliki built-in untuk itu)
- Celah standar berlaku
- Tidak ada bonus untuk fungsi, tetapi silakan pilih jawaban yang menarik
- Sertakan beberapa tangkapan layar dari hasil Anda dalam jawaban Anda
Tantangan Terkait
- My Daughter's Alphabet - kebalikan sebagian dari tantangan ini, melihat menemukan set huruf minimal untuk menulis berbagai kalimat
- Apakah surat itu pas dengan yang lain? - Tentang jenis huruf busa yang berbeda, tetapi dengan alternatif yang mirip dengan tema huruf
NOPE
?Jawaban:
HTML / JavaScript (dengan jQuery) / CSS - non-bersaing / non-golf
Hanya untuk menggulirkan bola, dan menunjukkan bahwa itu tidak mustahil, berikut ini adalah implementasi non-golf, non-bersaing yang mengambil pendekatan naif terhadap tugas tersebut.
Pertama-tama menciptakan string dari semua karakter yang mungkin (
tempalph
), dengan menggabungkan salinan alfabet sebanyak ada set. Kemudian iterates melalui frase, menempatkan setiap huruf dari frase ke dalam variabel output, dan mengosongkan contoh pertama dari surat itu daritempalph
. Jika tidak bisa (surat itu tidak ada), ia memeriksa apakah surat itu dapat diganti dengan sesuatu yang tersisa di string. Jika itu juga gagal, itu akan menghasilkan output "NOPE" yang telah ditentukan sebelumnya. Dengan asumsi itu tidak mengenai case "NOPE", ia mengembalikan string output dan memasukkannya ke dalam DIV pada halaman.Kemudian loop melalui string alfabet dasar, dan jika huruf telah digunakan, berikan kelas CSS yang sesuai, masing-masing memiliki seperangkat warna yang telah ditentukan.
Ini menggunakan input HTML untuk input, dan pembaruan pada keyup di dalamnya.
Cobalah di JSFiddle
Contoh untuk
["BATH", 3, 1]
:JS:
HTML:
CSS:
sumber