Tantangan ini terinspirasi oleh pertanyaan SO tentang melintasi matriks dengan menghitung semua strip diagonal.
Alih-alih sebuah matriks, pertimbangkan blok teks:
ABCD
EFGH
IJKL
Melintasi diagonal SW-NE blok ini dari kiri ke kanan, mulai dari sudut kiri atas dan berakhir di kanan bawah, menghasilkan output sebagai berikut:
A
EB
IFC
JGD
KH
L
Tantangan
Tulis program atau fungsi yang menjalankan kebalikan dari proses yang dijelaskan di atas. Artinya, diberi set strip diagonal SW-NE, output blok teks yang memproduksinya.
Masukan dan keluaran
Baik input dan output dapat direpresentasikan sebagai string dengan baris baru, atau array / daftar string.
Mengejar baris baru adalah opsional.
Input akan terdiri dari setidaknya satu karakter yang dapat dicetak dan dapat dianggap benar (tidak akan ada panjang baris yang tidak konsisten).
Blok output akan selalu memiliki jumlah kolom lebih besar dari atau sama dengan jumlah baris.
Uji Kasus
Memasukkan:
A
Keluaran:
A
Memasukkan:
.
LI
PO.
PV.
CE
G
Keluaran:
.I..
LOVE
PPCG
Memasukkan:
M
DA
AIT
LAR
SGI
/OX
/N
/
Keluaran:
MATRIX
DIAGON
ALS///
Jawaban:
CJam,
2320 byteCoba di sini .
sumber
{_z,,Nf*W%\.+zW%sN%}
Python 2, 84
Input dan output adalah daftar string.
Daftar baris
L
ke keluaran dibangun saat kita membaca input. Setiap karakter baru ditambahkan ke baris, mulai dari baris terakhiri=-1
dan maju ke depan.Setiap kali baris baru untuk add terlalu panjang untuk daftar, baris kosong baru ditambahkan:
L+=[''][:len(w)-len(L)]
. Saya berharap cara untuk mempersingkat bagian ini.sumber
Python 2,
165162169163 byteMembaca semua baris dari input, lalu mengubahnya menjadi daftar daftar. Loop sementara daftar itu memiliki elemen. Dalam setiap iterasi, ia mengeluarkan elemen terakhir dari jumlah daftar dalam yang sama dengan jumlah kolom dalam output. Daftar ini kemudian dibersihkan dan garis dicetak.
Contoh:
Terima kasih kepada w0lf untuk menghemat 6 byte.
PYG , 139 byte
sumber
s=''
dibutuhkan?Python,
332325 byteKarena Python.
sumber