Dalam tantangan ini, kami membuat antarmuka pengguna Ascii.
+----------------------+
|+-----------++-------+|
||<- Previous||Next ->||
|+-----------++-------+|
|== The title == |
| |
|Lorem ipsum dolor |
|sit amet... |
|+--------------+ |
||Post a comment| |
|+--------------+ |
|+-----------------+ |
||User X commented:| |
|| | |
||This is amazing! | |
|+-----------------+ |
|+-----------------+ |
||User Y commented:| |
|| | |
||lol | |
|+-----------------+ |
+----------------------+
Setiap gambar seperti ini terbuat dari satu elemen , yang dapat berisi sub bagian. Elemen yang mungkin tercantum di bawah ini:
- Elemen teks. Berisi satu atau lebih baris teks.
- Elemen kotak. Berisi satu subelemen yang dikelilingi dengan perbatasan. Perbatasan memiliki
+s di sudut dan-s dan|di tepi. - Daftar horisontal. Berisi satu atau lebih elemen yang disejajarkan secara horizontal.
- Daftar vertikal. Berisi satu atau lebih elemen yang disejajarkan satu sama lain secara vertikal dan ke kiri secara horizontal.
Setiap elemen adalah persegi panjang.
Setiap elemen, selain kontennya, memiliki properti yang disebut garis dasar . Baseline digunakan untuk menyelaraskan elemen secara vertikal: setiap elemen dari daftar horizontal disejajarkan sedemikian rupa sehingga garis dasarnya berada pada garis yang sama. Dalam contoh di bawah ini, garis dasar berisi karakter aeg. Garis dasar dari tiga elemen kotak adalah (0-diindeks) 1, 3dan 2.
+-+
|c|+-+
+-+|d||f|
|a||e||g|
|b|+-+|h|
+-+ +-+
Baseline ditentukan dengan aturan berikut:
- Untuk elemen teks, baris teks pertama adalah garis dasar, yaitu.
0. - Untuk elemen kotak, garis dasar adalah 1 + garis dasar subelemen.
- Untuk daftar horizontal, garis dasar adalah garis dasar maksimum dalam daftar (
3dalam contoh di atas). - Untuk daftar vertikal, garis dasar adalah garis dasar elemen, yang harus ditentukan dalam input.
Memasukkan
Input adalah spesifikasi antarmuka dalam beberapa format (mis. Daftar, json). Input contoh memiliki format berikut:
- Elemen string adalah string:
"..." - Elemen kotak adalah daftar, elemen pertama adalah
"b":["b", subelement] - Daftar horizontal adalah daftar yang elemen pertamanya adalah
"h":["h", items...] - Daftar vertikal adalah daftar yang merupakan elemen pertama
"v"dan elemen kedua adalah (0-diindeks) jumlah elemen yang digunakan baseline:["v", n, items...]
Keluaran
Output harus mengandung elemen yang diluruskan menggunakan aturan yang saya sebutkan di atas. Outputnya bisa stdout, daftar string atau apa pun yang bermakna.
Mencetak gol
Ini kode-golf , aturan yang biasa berlaku.
Uji kasus
1
["b", ["v", 0, ["h", ["b", "<- Previous"], ["b", "Next ->"]], "== The title ==\n\nLorem ipsum dolor\nsit amet...", ["b", "Post a comment"], ["b", "User X commented:\n\nThis is amazing!"], ["b", "User Y commented:\n\nlol"]]]
+----------------------+
|+-----------++-------+|
||<- Previous||Next ->||
|+-----------++-------+|
|== The title == |
| |
|Lorem ipsum dolor |
|sit amet... |
|+--------------+ |
||Post a comment| |
|+--------------+ |
|+-----------------+ |
||User X commented:| |
|| | |
||This is amazing! | |
|+-----------------+ |
|+-----------------+ |
||User Y commented:| |
|| | |
||lol | |
|+-----------------+ |
+----------------------+
2
["h", ["b", ["v", 0, "a", "b"]], ["b", ["v", 2, "c", "d", "e"]], ["b", ["v", 1, "f", "g", "h"]]]
+-+
|c|+-+
+-+|d||f|
|a||e||g|
|b|+-+|h|
+-+ +-+
3
["h", ["b", ["v", 0, ["b", ["h", "a\nb", "c"]], "d", "e", ["h", ["h", "f"], ["b", ["h", "g"]], "h"]]], ["b", "ijk\nl\nmn\no"], ["v", 2, ["b", "pqrst"], ["b", "uv\nw"], ["b", "x"]], ["b", ["b", ["b", "yz"]]]]
+-----+
|pqrst|
+-----+
+--+
|uv|
|w | +------+
+-----+ +--+ |+----+|
|+--+ |+---++-+ ||+--+||
||ac| ||ijk||x| |||yz|||
||b | ||l |+-+ ||+--+||
|+--+ ||mn | |+----+|
|d ||o | +------+
|e |+---+
| +-+ |
|f|g|h|
| +-+ |
+-----+
4
["h", "a * b = ", ["v", 0, "a + a + ... + a", "\\_____________/", " b times"]]
a * b = a + a + ... + a
\_____________/
b times
aberada di baris yang sama e, karena keduanya berada di garis dasar kotak mereka. Saya tidak sepenuhnya yakin apakah "garis dasar" adalah kata yang tepat untuk ini, saya hanya tahu itu digunakan dalam bidang tipografi untuk tujuan yang sama.