Tugas: ubah halaman HTML menjadi gunung!
Ketika halaman HTML diindentasi, mereka dapat terlihat seperti:
<div>
<div>
<div>
</div>
<div>
<div>
</div>
</div>
</div>
</div>
Tapi jujur saja, gunung lebih mewakili struktur ini.
Jadi kita dapat menulis ulang sebagai:
/\
/\/ \
/ \
/ \
Garis miring terluar di kiri dan kanan sesuai dengan div luar - setiap pasang tag HTML harus diwakili /
untuk tag awal dan \
untuk tag akhir - di dalam semua tag "lebih tinggi", dengan struktur yang sama.
Memasukkan:
- Tidak akan ada
<!DOCTYPE>
- Tidak akan ada tag yang menutup sendiri misalnya
<img />
atau<br />
- Mungkin ada atribut atau konten di dalam tag
- Mungkin ada spasi atau tab - program Anda harus mengabaikannya
- Tidak akan ada spasi antara
<
atau</
dan nama tag - Semua input akan menjadi HTML yang valid
Output - gunung yang mewakili tag seperti di atas.
Lebih banyak testcases:
Memasukkan:
<div id="123"> HI </div><a><span></span></a>
Keluaran:
/\
/\/ \
Memasukkan:
<body id="<"></body>
Keluaran:
/\
</ div>
? atau dapat kita asumsikan bahwa tebasan selalu bersebelahan dengandiv
<
atau</
(sampai nama tag) - namun mungkin masih ada ruang untuk atribut misalnya<div id="aDiv">
>
semacamnya<a >b</a >
.)Jawaban:
HTML + CSS + JavaScript, 39 + 141 + 20 = 200 byte
Output secara visual ke halaman web. Untuk memungkinkan ini bekerja dengan elemen-elemen khusus seperti
<body>
, semua huruf dalam input diganti.HTML + CSS + JavaScript, 10 + 103 + 20 = 133 byte
Solusi yang berfungsi jika tidak ada konten di dalam tag.
sumber
Javascript + JQuery,
275246 byteDisimpan 29 byte berkat Rick Hitchcock
Solusi yang cukup naif untuk masalah ini. Parsing HTML dengan JQuery's
$(string)
, lalu secara rekursif membangun gunung miring dengan format:Kemudian memutar string yang dihasilkan berlawanan arah jarum jam, dan memperingatkan hasilnya.
Tampilkan cuplikan kode
sumber
j=(a,b,c,i)=>{s=(c=' '.repeat(b))+'/\n';for(i
...for(c=0;c<s.length;c++)
kefor(c=0;s[c];c++)
for(i=0;i<a.children.length;i++)
kefor(i=0;a.children[i];i++)
HTML + JavaScript (ES6), 8 + 192 = 200 byte
JS
HTML
Tampilkan cuplikan kode
Kurang golf
sumber
id=E
elemen HTML karena Anda mengandalkannya agar kode berfungsi?05AB1E ,
382623 byteCobalah online!
Saya masih bermain golf ini. Diasumsikan bahwa dalam HTML Anda akan selalu menggunakan 4 spasi untuk lekukan, dan tidak bekerja pada HTML "tidak cantik". Tidak yakin bagaimana menangani bagian "konten", jika ini tidak valid, harap edit pertanyaan untuk menunjukkan contoh dengan simpul yang memiliki konten.
sumber
Arang , 28 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
The
h
variabel digunakan untuk melacak apakah kita berada di dalam tanda kutip.Ulangi string dengan urutan terbalik.
Aktifkan karakter currenc.
Jika itu
"
kemudian matikan tanda kutip.Jika a
<
dan kami tidak berada di dalam tanda kutip, maka ...Jika karakter berikutnya (sebelumnya dalam loop karena kita mengulang secara terbalik) adalah
/
, maka ...Bergerak ke atas dan menggambar
\
ke kiri, kalau tidak ...Gambar a
/
dan bergerak ke bawah dan ke kiri.Ingat karakter untuk iterasi loop berikutnya.
sumber