Ambil dua daftar bilangan bulat non-negatif, dan hasilkan kotak ASCII seperti yang didefinisikan di bawah ini.
- Sudut dan persimpangan adalah nilai tambah:
+
(ASCII-code 43) - Garis vertikal adalah batang
|
(ASCII-code 124) - Garis horizontal adalah minus
-
(kode ASCII 45)
Daftar input pertama menentukan jumlah minus di antara setiap tanda plus, dalam arah horizontal.
Daftar input kedua menentukan jumlah bar antara setiap tanda plus, dalam arah vertikal.
Lebih mudah dijelaskan dengan beberapa contoh:
0 // No minuses between each + sign
0 // No bars between + signs
++
++
------------------
1 2 // First a single minus, then two minuses
1 2 // First one bar, then two bars
+-+--+
| | |
+-+--+
| | |
| | |
+-+--+
------------------
1 0 3 0 2 0
2 1 0 0
+-++---++--++
| || || ||
| || || ||
+-++---++--++
| || || ||
+-++---++--++
+-++---++--++
+-++---++--++
Klarifikasi:
- Urutan dan format input adalah opsional
- Hanya kotak yang harus dicetak / ditampilkan, tetapi ruang tambahan atau baris baru diterima.
- Anda dapat menambahkan 1 untuk semua nilai input jika itu lebih nyaman. Contoh kedua maka akan menjadi:
2 3; 2 3
.
Ini adalah kode golf, jadi kode terpendek dalam byte menang.
Jawaban:
MATL ,
252221 byteMenggunakan input dengan
1
tambahan (diizinkan oleh tantangan).Cobalah online!
Penjelasan
Kode awalnya membangun array yang berisi
1
indeks kolom karakter non-spasi di hasil akhir, dan0
sebaliknya. Jadi jika input pertama adalah[2 1 4 1 3 1]
(akan[1 0 3 0 2 0]
dalam format berbasis 0) array ini akan menjadiPerhatikan bagaimana panjang rentang nol terkait dengan input. Secara khusus, array ini dibuat sebagai berikut:
1
.1
. Dalam contoh ini memberi[3 4 8 9 12 13]
.1
entri dengan indeks (berbasis 1) yang diberikan oleh langkah 2. Entri perantara secara otomatis diatur ke0
.Array serupa dibuat untuk baris. Input kedua
[3 2 1 1]
(atau[2 1 0 0 ]
) memberiSekarang array kedua dikalikan dengan
2
, ditransposisikan dan ditambahkan dengan broadcast ke yang pertama. Ini memberikan array 2DPengindeksan ke dalam string
'|-+ '
memberikan hasil akhir sebagai array char 2D. Karena pengindeksan adalah modular dan berbasis 1, indeks0
terkait dengan elemen terakhir (spasi).sumber
Python 2, 117 Bytes
Cobalah di ideone.
Tidak berharap terlalu banyak dari ini. Sangat sederhana, hanya menggunakan gabungan python dan string perkalian untuk menyatukan semuanya.
sumber
JavaScript (ES6), 83 byte
Output mencakup dua baris baru.
sumber
CJam, 50 Bytes
Cobalah online!
sumber
Pyth, 45 byte
Program yang mengambil input dari dua daftar yang dipisah koma pada STDIN dan mencetak hasilnya.
Mungkin masih ada beberapa golf yang harus dilakukan di sini.
Cobalah online
Penjelasan datang nanti
sumber
Haskell, 55 byte
Menentukan fungsi
g
yang mengambil dua daftar input dan mengembalikan daftar yang berisi garis-garis outputsumber
PowerShell v2 +, 89 byte
Sial, jangan pikir saya bisa menangkap JavaScript.
Mengambil input
$a
dan$b
sebagai array eksplisit. Menyetel variabel$x
menjadi baris atas kotak berdasarkan perulangan$a
dan beberapa rangkaian string. Itu dirangkum dalam parens sehingga ditempatkan pada pipa. Kemudian, kita lewati$b
, setiap iterasi menempatkan dua string pada pipeline - string gaya yang sama tetapi dengan spasi dan|
bukannya tanda hubung dan+
, dan$x
. Semua string tersebut dikumpulkan dari pipeline dengan implisitWrite-Output
pada penyelesaian program, dengan baris baru default di antara mereka.Contohnya
sumber
Ruby, 66 byte
sumber
Jelly ,
3026 byteUji di TryItOnline
Bagaimana?
Input yang diambil adalah daftar dari dua daftar,,
[vertical, horizontal]
dan menggunakan opsi yang bertambah- jadi contoh 3 ambil
[[3,2,1,1], [2,1,4,1,3,1]]
Masing-masing kemudian dikonversi ke array boolean yang mengindikasikan masing-masing rowType atau rowCharacterType, mis
[[1,0,0,1,0,1,1,1], [1,0,1,1,0,0,0,1,1,0,0,1,1]]
. Kotak-kotak tersebut kemudian dibangun dengan membuat baris dari karakter yang diidentifikasi oleh kombinasi rowType dan rowCharacterType - yaitu rowType mengidentifikasi salah satu
"+-"
dan"| "
dan rowCharacterType mengidentifikasi salah satu dari dua karakter tersebut.sumber