Membaca teks font millitext
Ada font di sini yang menyesuaikan setiap karakter menjadi satu blok, piksel 1x5. Ini melakukan ini (dengan asumsi Anda menggunakan layar LCD) dengan menggunakan saluran RGB dari setiap piksel untuk memperluas satu piksel menjadi tiga subkolom, satu untuk setiap saluran. Tugas Anda adalah mengambil string teks yang disandikan dalam font ini dan 'mendekodekannya'.
Abjad Millitext
CHARACTER: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
ENCODING: WYWBMRRMMMWYWYWWWMWBMRMYGYGYCWMMMMMW
MGBWMRRMMMMMRMRRRMGBMRWMMMMMRGMMMMMB
MGWWWWWBWWWYRMWWMWGBYRWMMYMYGGMMWGGG
MGRBBBMBMBMMRMRRMMGBMRMMMRWMBGMCWMGR
WWWWBWWBWWMYWYWRWMWWMWMMGRCMYGWBMMGW
Saya telah menyingkat setiap warna menjadi simbol satu karakter (R = merah, G = hijau, B = biru, C = cyan, Y = kuning, M = magenta, W = putih).
Masukkan format
Format input untuk ini cukup terbuka. Anda dapat meminta input berupa array yang berisi setiap kolom, array yang berisi setiap baris, a char[][]
, atau semacamnya. Anda juga dapat memilih untuk menggunakan kata-kata penuh "merah", "hijau", "biru", dengan huruf besar / huruf kecil pilihan Anda (tetapi harus konsisten untuk setiap kata! Anda tidak dapat menggunakan "RED" dan juga melakukan "hijau" atau "Biru").
Jika bahasa Anda mendukungnya, Anda juga dapat memiliki warna input (namun itu mungkin berhasil, saya tidak tahu apa-apa).
Anda dapat mengasumsikan bahwa input HANYA akan berisi karakter yang disandikan dalam alfabet di atas (khususnya, tidak akan ada spasi atau tanda baca pada output Anda).
Format output
Anda dapat menampilkan string atau semacam array karakter. Anda dapat memilih apakah huruf besar atau kecil, tetapi semuanya harus memiliki huruf yang sama.
Contoh
MWRRGMGYRY
MRRRMMMMRM
WWRRMWMYRM -> HELLOWORLD
MRRRMWMMRM
MWWWGMGMWY
Aturan
Ini kode-golf , jadi jawaban tersingkat menang!
Set tes
WMWGMWWMYYGMYWGMBMMYWYGMWYWMWRWWMYGW
GMRMMGRMMMMMMRMMBMWMRMMMRMGMRRMBMMMR
GWWMMGRYYYMWMWMGBMWYWMMMWYGWWRWGGMMM -> THEQUICKBROWNFOXJUMPEDOVERTHELAZYDOG
GMRWMGRMMMMWMRMMBMMRRMMCRMGMRRMRGMMM
GMWCWWWMYMGMMRGMWWMRWYGBWMGMWWMWGYGW
Jawaban:
JavaScript (ES6),
103 100 93 9290 byteDisimpan 9 byte berkat @ShieruAsakoto
Mengambil input sebagai array kolom. Mengembalikan array karakter.
Cobalah online!
sumber
-
hilang! : Da=>a.map(s=>"H-L-D--VGQ87MR6TZ-KJ9WC05BUXF1YI2EON3S-A-P4"[parseInt(s,35)%1161%219%152%43])
.a=>a.map(s=>"UIR-L68N--W-X7B-FH-D-EZ--902-S4M5GJCQT3PKV-A1-YO"[parseInt(s,35)%464%107%99%52])
Jelly , 50 byte
Cobalah online!
Tautan monadik yang menerima input sebagai daftar kolom dan menghasilkan string Jelly terjemahan. Penjelasan lengkap untuk diikuti, tetapi bergantung pada kenyataan bahwa setiap set 5 huruf mungkin unik ketika dikonversi ke titik kode, dikonversi kembali dari basis-256 ke desimal dan kemudian mod 211.
Alternatif menggunakan font tetap Arnauld (49 byte dan menggunakan prinsip yang sama.)
Penjelasan
sumber
dzaima / APL,
8079737271 byteCobalah online!
sumber
⊇
(mirip dengan{⍵[⍺]}
), selain itu, ini dua file berisi info tentang hal itu05AB1E ,
4544 byteCobalah online!
Mengambil input sebagai array kolom, dan menghasilkan array karakter.
Penjelasan:
sumber
R ,
143128 byteCobalah online!
Berfungsi mengambil vektor string (sesuai dengan kolom) sebagai input misalnya:
Penjelasan:
Melakukan operasi berikut untuk setiap string yang disandikan (mis. 'CRGBY' = 'S'):
kami mendapatkan string berikut di
'#</Eb=,n9J.M4Z+%*V N[Hd\B?1Oj>KgRYT2'
mana masing-masing karakter sesuai'0123456789ABCDEFGHIJKLMNOPQR'
.Jadi, kode melakukan operasi yang dijelaskan pada string input, kemudian mencari korespondensi mereka di dalam
'#</Eb=,n9J.M4Z+%*V N[Hd\B?1Oj>KgRYT2'
mendapatkan posisi dalam string'0123456789ABCDEFGHIJKLMNOPQR'
.sumber
Arang , 66 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Mengambil input sebagai daftar kolom yang diakhiri dengan baris kosong. Penjelasan:
Masukkan string sampai kosong.
Mengindeks secara siklis ke string
OV EX8HSCF5IA L TG 17 M P9RB 4 K ZY2 0JW 63Q ND U
yang (dengan spasi tambahan) sepanjang 56 karakter.Lakukan konversi basis-7 menggunakan alfabet
WMYCBGR
dan kemudian kurangi secara berturut-turut modulo 360, 113, 71, dan 56 secara implisit melalui pengindeksan siklik.Pendekatan basis 7 saya bernasib sangat buruk dengan font tetap @ Arnauld; setelah beberapa pencarian saya masih di 73 byte. Menggunakan pendekatan @ Grimy, potong ini menjadi 67 byte. Namun saya akhirnya melacak solusi 66 byte:
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
Masukkan string sampai kosong.
Mengindeks secara siklis ke string
ID HAM178 VS4F 3R EP6CQ Z UB O 0 X 9 G 5TNJKL2Y W
yang panjangnya 63 karakter.Lakukan konversi basis-47 menggunakan alfabet
0-9A-Za-k
dan kemudian secara berturut-turut kurangi modulo 237, 73, 67, dan 63 secara implisit melalui pengindeksan siklik.sumber
CJam (63 byte)
atau dalam format xxd
Ini adalah blok anonim (fungsi) yang mengharapkan input sebagai daftar kolom. Demo online .
Seperti banyak jawaban lain, ini melakukan konversi basis diikuti oleh rantai% untuk mendapatkan tabel pencarian pendek. Dalam hal ini saya menggunakan basis 16 dan rantai%
[245 225 214 197 159 123 97 40]
.sumber
Jelly , 48 byte
Tautan monadik yang menerima daftar daftar huruf besar (masing-masing berupa kolom) yang menghasilkan daftar karakter.
Cobalah online!
Bagaimana?
sumber
Ruby , 109 byte
Cobalah online!
sumber
Stax , 46 byte
Jalankan dan debug itu
Setiap kolom diterjemahkan sebagai basis-36. Modulus berturut-turut 8273, kemudian 95 diterapkan. Ini menghasilkan angka unik, tampak dalam string tetap.
Dibutuhkan input tepat dalam format yang ditentukan dalam contoh, dan harus mengubah mereka untuk mendapatkan kolom. Saya akan dapat menyimpan beberapa byte dengan menggunakan beberapa format input berbeda, yang mungkin saya lakukan di beberapa titik.
sumber