Dalam tantangan ini, Anda harus membawa seni ASCII (yang biasanya 2D) ke 3D!
Bagaimana?
seperti ini,
X X DD
X D D
X X DD
untuk...
X X DD
X X DD D
X X DDDD
X XDDD
X X DD
Kemudian Bagaimana kita melakukan itu ?
Mengingat seni ascii dan N
, ulangi N
kali ini .
- untuk setiap karakter (kami akan menyebutnya
A
): - biarlah
B
karakter yang tepat 1 benar dan 1 naik dariA
- jika
B
spasi atau tidak ditentukan: - diatur
B
keA
.
Spesifikasi
- Input pertama dapat berupa string dengan karakter baris baru atau daftar string yang mewakili seni ASCII 2D.
- Anda diperbolehkan menggunakan
%END%
untuk menandai akhir input, tetapi ini tidak diperlukan. - Input kedua adalah
N
. Ini akan menjadi bilangan bulat positif. - semua garis string akan memiliki panjang yang sama.
Contohnya
Memasukkan: ("###\n###",1)
Keluaran:
###
####
###
Aturan
Aturan main kode-golf berlaku.
juga, Jika Anda memiliki pertanyaan, pastikan untuk bertanya di komentar!
Jawaban:
Perl, 81 byte
75 byte kode + 6 untuk
-i -n0
.Perhatikan bahwa
\e
karakternya adalah ASCII\x1b
tetapi\e
digunakan untuk kemudahan pengujian.Harap dicatat bahwa solusi ini menggunakan urutan pelarian ANSI dan membutuhkan terminal yang kompatibel, serta menggunakan
-i
argumen commandline untuk memberikan jumlah 'dimensi' yang Anda inginkan.Pemakaian:
Di terminal yang kompatibel dengan Linux, jalankan
PS1=
dahulu untuk memastikan prompt Anda tidak menimpa gambar yang ditampilkan.sumber
CJam,
2524 byteBlok tanpa nama yang mengharapkan daftar string dan jumlah pengulangan pada stack dan meninggalkan daftar string yang baru sebagai gantinya.
Uji di sini. (Termasuk pembungkus uji yang membaca string dari STDIN untuk kenyamanan.)
Penjelasan
sumber
S
bekerja untuk ruang awal? Juga, apakah diizinkan menggunakan variabel (yang mungkin telah ditimpa) dalam suatu fungsi?S
tidak berfungsi, karena dengan begituf
akan memetakan string itu. Kembali fungsi, saya percaya begitu, dalam bahasa "normal", ada juga banyak fungsi pengiriman yang bergantung pada global yang tidak dirusak di antara doa.APL, 49 byte
Input: vektor vektor karakter. Contoh:
Bagaimana itu bekerja:
↑⍵
mengubah argumen menjadi matriks karakter⎕UCS
dari char ke integer(32∘≠×⊣)
gantilah spasi (32) dengan nol...⍣⍺⊣
berlaku ⍺ (argumen kiri) kali fungsi di sebelah kiris←0⍪⍵,0
berbatasan dengan nol di atas dan di sebelah kanan argumen1⊖¯1⌽
putar 1 ke atas dan 1 ke kanans+(s=0)×
jumlah ke versi asli bergeser tetapi hanya di atas nol dari aslinya32⌈
mengubah kembali nol menjadi 32-an⎕UCS
dari integer ke charsumber
MATL , 24 byte
Format input adalah
Jadi contoh lainnya adalah
Outputnya berisi spasi kosong tambahan, yang diizinkan oleh tantangan.
Cobalah online!
Jika array char 2D dapat diterima sebagai input (saya sudah meminta OP dua kali ...), yang pertama
c
dapat dihapus, jadi 23 byte :Format input dalam kasus ini adalah (semua string memiliki panjang yang sama, yang mungkin memerlukan bantalan-kanan dengan spasi):
Cobalah online!
Penjelasan
sumber
Cembung , 23 byte
Hitungan byte mengasumsikan pengkodean CP-1252.
Blok tanpa nama yang mengharapkan daftar string dan jumlah pengulangan pada stack dan meninggalkan daftar string yang baru sebagai gantinya.
Cobalah online!
Ini adalah port langsung jawaban CJam saya untuk Convex (yang sebagian besar didasarkan pada CJam). Satu-satunya perbedaan adalah Convex menggunakan
Ë
alih-aliher
untuk transliterasi, menghemat satu byte. Terima kasih kepada GamrCorps karena memberi tahu saya tentang hal itu.sumber
Pyth,
5433 byteSuite uji.
sumber
;
?;
tidak biasa;
dalam bahasa pemrograman.;
adalah variabel.;
dalam lambdas ...I
,.?
,V
,F
,;
, (pernyataan eksplisit) sangat kurang, dan mereka akan digantikan oleh?
,m
,u
,F
,M
,L
,R
,#
, ...JavaScript (ES6), 128 byte
Menerima dan mengembalikan array string, menambahkan baris tambahan untuk output, memastikan setiap baris mengandung setidaknya satu spasi, membaginya menjadi karakter, loop meskipun mencoba untuk menyalin karakter ke baris di atas dan kolom ke kanan, lalu secara rekursif memanggil dirinya sendiri untuk menyelesaikan loop.
sumber
Python 2, 116 byte
Saya akan golf ini lebih cepat.
sumber
lambda
tidak lebih pendek?e
di sana. Juga,exec
adalah pernyataan, jadi itu tidak bisa di lambda.Ruby, 95 byte
Masing
<Esc>
- masing adalah karakter ESC literal (0x1b
).Pemakaian
Tetapkan lambda ke variabel misalnya
func
.Tidak disatukan
The
forward
Urutan escape,\e[1C
, menggerakkan kursor maju (kanan) 1 ruang dan\e[<n>A
bergerak ke atasn
garis. Pada dasarnya yang dilakukan kode ini adalah mencetak "lapisan" kembali ke depan, mengganti spasi denganforward
urutan untuk menghindari menimpa layer lain dengan spasi.sumber
f=
sebelum->
di versi golf. Hapus untuk -2 byte.