Diberikan input dari gambar seni ASCII, output seni ASCII dicetak miring.
Untuk memiringkan seni ASCII:
Masukkan nol spasi sebelum baris terakhir, satu spasi sebelum baris kedua terakhir, dua spasi sebelum baris ketiga terakhir, dll.
Hapus spasi kosong tambahan apa pun yang mungkin telah dibuat. Yaitu, jika setiap baris memiliki setidaknya
n
spasi sebelumnya, hapusn
spasi dari awal setiap baris.Ganti semua
\
dengan|
, semua|
dengan/
, dan semua/
dengan_
. Tetap ada_
sama saja.Input dijamin hanya berisi karakter
\|/_
dan ruang.
Misalnya input
/\/\/\ /\/\/\ /\/\/\ /\/\/\
/\ /\ /\ /\ /\ /\
/\/\/\ /\/\/\ /\ /\ /\/\
/\ /\ /\ /\ /\
/\ /\ /\/\/\ /\/\/\
harus keluar
_|_|_| _|_|_| _|_|_| _|_|_|
_| _| _| _| _| _|
_|_|_| _|_|_| _| _| _|_|
_| _| _| _| _|
_| _| _|_|_| _|_|_|
yang pada gilirannya, disediakan sebagai input, keluaran
_/_/_/ _/_/_/ _/_/_/ _/_/_/
_/ _/ _/ _/ _/ _/
_/_/_/ _/_/_/ _/ _/ _/_/
_/ _/ _/ _/ _/
_/ _/ _/_/_/ _/_/_/
yang akan menghasilkan
______ ______ ______ ______
__ __ __ __ __ __
______ ______ __ __ ____
__ __ __ __ __
__ __ ______ ______
Input dan output dapat berupa string tunggal (dengan baris tambahan opsional) atau array baris.
Karena ini adalah kode-golf , kode terpendek dalam byte akan menang.
Kasus uji ekstra:
|||||
/////
\\\\\
_____
/////
_____
|||||
_____
________
________
(yaitu, input dari string kosong menghasilkan output dari string kosong)
Jawaban:
CJam,
4338 byteMembutuhkan input untuk diisi ke persegi panjang.
Cobalah online!
Penjelasan
sumber
G
maka transformasi akan runtuh ke atas.Pyth, 32
Coba di sini atau jalankan Test Suite
Setiap baris memiliki beberapa spasi tambahan. Ini berfungsi dengan menerapkan
.r
rotasi bawaan ke setiap baris string. Rotasi mengambil setiap karakter dalam string yang cocok dengan satu di argumen lainnya"\|/__"
dan menggantikannya dengan karakter berikutnya. Garis bawah ganda dengan baik mencegah garis bawah menjadi garis miring terbalik. String juga empuk berdasarkan indeks mereka.Setelah selesai, garis-garis di-zip jadi satu, lalu kami menyaring setiap kolom yang hanya berisi spasi, sampai salah satunya tidak. Lalu kami unzip dan bergabung di baris baru.
sumber
MATL ,
383329 byteGaris keluaran memiliki spasi tambahan untuk mencocokkan garis terpanjang (ini diizinkan oleh tantangan).
Input adalah array sel (daftar) string. Array menggunakan kurung kurawal, dan string menggunakan tanda kutip tunggal, sebagai berikut (klik setiap tautan untuk Coba online! ).
Contoh pertama :
Contoh kedua :
Contoh ketiga :
Penjelasan
Array awalnya dibalik. Setiap string diproses dalam satu lingkaran dan string yang dimodifikasi didorong ke tumpukan. Pemrosesan terdiri dalam mengganti karakter dan menambahkan sejumlah spasi. Jumlah spasi sama dengan jumlah elemen saat ini di tumpukan (berkat fakta bahwa array telah dibalik).
Setelah loop, string dikumpulkan dalam array, yang dibalik, dikonversi ke array char 2D, dan dibuang spasi yang tidak diinginkan: ruang terdepan yang hadir di semua baris array char 2D.
sumber
JavaScript (ES6),
171149148 byteMenerima dan mengembalikan garis sebagai array string.
Sunting: Disimpan 22 byte berkat @ user81655. Disimpan 1 byte dengan menyadari bahwa input terbatas pada 5 karakter
\|/_
dan ruang.sumber
replace
s dapat digabungkan menjadi.replace(/[\\|/]/g,m=>"|/_"["\\|/".indexOf(m)])
,match(/ */)
bisa jadimatch` *`
, duamap
s pertama dapat digabungkan menjadia.map(s=>(t=' '.repeat(--i)+s,(l=t.match` *`[0].length)<n?n=l:l,t),...
, kurung luar ((a=...)
) sekarang dapat dihapus. 149 byte:a=>a.map(s=>(t=' '.repeat(--i)+s,(l=t.match` *`[0].length)<n?n=l:l,t),n=i=a.length).map(s=>s.slice(n).replace(/[\\|/]/g,m=>"|/_"["\\|/".indexOf(m)]))
replace
.)Dyalog APL (versi yang lebih lama),
2348 byteMenyesuaikan spasi putih mahal:
Ini memerlukan
⎕ML←0
, yang standar hingga saat ini .sumber