Untuk keperluan tantangan saat ini untuk "menguraikan" sebuah kata berarti mengelilinginya secara berurutan dengan hurufnya sendiri, dimulai dengan yang terakhir, dan akhirnya untuk mengganti kata asli di tengah dengan spasi:
oooooo
onnnno
on -> on no
onnnno
oooooo
Tugas:
Diberikan daftar kata-kata, yang hanya terdiri dari huruf Inggris kecil dan / atau besar, garis besar setiap kata dan tampilkan semua blok yang dihasilkan bersebelahan secara horizontal, dipisahkan oleh kolom ruang tunggal, selaras secara vertikal di tengah-tengah blok.
Anda dapat menulis program lengkap, atau suatu fungsi.
Memasukkan:
Daftar kata-kata, atau jika Anda lebih suka - string spasi atau simbol-dibatasi lainnya
Keluaran:
Representasi ASCII dari blok untuk kata-kata yang diuraikan. Ruang putih terkemuka / trailing diizinkan.
Kasus uji:
Input 1: ["code", "golf"] (or "code golf")
Output 1:
cccccccccccc gggggggggggg
cooooooooooc goooooooooog
coddddddddoc gollllllllog
codeeeeeedoc golfffffflog
code edoc golf flog
codeeeeeedoc golfffffflog
coddddddddoc gollllllllog
cooooooooooc goooooooooog
cccccccccccc gggggggggggg
Input 2: ["I", "am", "just", "a", "man"] (or "I am just a man")
Output 2:
jjjjjjjjjjjj
juuuuuuuuuuj mmmmmmmmm
aaaaaa jussssssssuj maaaaaaam
III ammmma justtttttsuj aaa mannnnnam
I I am ma just tsuj a a man nam
III ammmma justtttttsuj aaa mannnnnam
aaaaaa jussssssssuj maaaaaaam
juuuuuuuuuuj mmmmmmmmm
jjjjjjjjjjjj
Kriteria pemenang:
Kode terpendek dalam byte di setiap bahasa menang. Saya akan sangat menghargai jika Anda mengomentari / menjelaskan kode dan pendekatan Anda.
Jawaban:
Kanvas ,
2220 byteCoba di sini!
Penjelasan:
sumber
Arang , 35 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
Ulangi daftar input.
Dapatkan panjang kata yang sekarang.
Pindah ke sudut kiri atas garis yang dihasilkan.
Ulangi satu kali untuk setiap karakter.
Gambarlah kotak dengan tinggi, lebar, dan karakter yang sesuai.
Pindah ke sudut kiri atas kotak berikutnya.
Pindah ke garis selanjutnya.
sumber
Haskell ,
188183174171167 byte-9-13 byte, terima kasih kepada Laikoni .Cobalah online!
sumber
\a->and[p a>=p x|x<-f<$>w]
bisa\a->all((p a>=).p)$f<$>w
dank c=(++[c]).(c:)
bisak c s=c:s++[c]
.Pyth,
3433 byteCobalah online.
Buang banyak ruang putih ekstra, tapi itu diizinkan oleh tantangan.
Penjelasan
m
...Q
apakah yang berikut ini untuk setiap katad
dalam inputQ
:m\ d
memetakan kata denganx => " "
, pada dasarnya membuat daftar[" ", ..., " "]
dengan item sebanyak kata memiliki huruf..idd
interleaves kata itu dengan dirinya sendiri, mengulangi kata-kata kata itu dua kali._
membalikkan string ini.word
menjadiddrrooww
.u
dimulai denganG
= array spasi, dan menerapkan yang berikut dengan setiap huruf dalam string yang disisipkan diH
:*2H
mengulangi karakter tersebut dua kali.jR
...G
menempatkan setiap string diG
antara pasangan karakter.C
menukar baris dan kolom. Ketika tiga langkah ini dilakukan dua kali dengan karakter yang samaH
, ini menguraikan garisG
dengan karakter itu.d
.+;
menambahkan kolom spasi.s
meratakan array kolom untuk setiap kata, danJ
menyimpannya dalam variabelJ
.m
...J
apakah yang berikut ini untuk setiap kolom output:.[lJd;
mengisi kedua sisi kolom dengan spasi sehingga panjang kolom sama dengan jumlah kolom. Ini selalu padding yang cukup untuk membuat kolom sejajar secara vertikal.C
mengubah kolom menjadi baris danj
bergabung dengan baris dengan baris baru.Solusi alternatif, 33 byte
Cobalah online.
Perhatikan bahwa ada spasi tambahan. Sebagian besar algoritma yang sama, kecuali hanya bantalan kolom di atas dan kemudian transpos dengan spasi.
sumber
R , 189 byte
Cobalah online!
Kolaborasi antara digEmAll dan saya di chat .
sumber
APL (Dyalog Classic) ,
575150 byteCobalah online!
sumber
Stax ,
2625 byteJalankan dan debug itu
sumber
05AB1E , 46 byte
Tidak terlalu senang tentang itu, tapi aku senang itu berhasil.
Cobalah secara online atau verifikasi semua kasus uji .
Penjelasan:
sumber