Tantangan
Program atau fungsi Anda akan menerima input string tunggal dari STDIN atau parameter fungsi. Anda dapat berasumsi bahwa input hanya akan berisi karakter alfabet (a-zA-Z), spasi, dan pemberhentian penuh. Input tidak peka huruf besar kecil, jadi Anda harus memperlakukan 'a' persis sama dengan Anda memperlakukan 'A'.
Untuk setiap karakter dalam string, Anda akan menampilkan representasi bangunan sesuai spesifikasi berikut.
Setiap bangunan harus memiliki atap, yang ditandai dengan garis bawah pada baris atas, kemudian garis miring, spasi, garis miring terbalik pada baris kedua.
_
/ \
Anda kemudian akan memiliki sejumlah lantai, cocok dengan nomor huruf (a = 1, b = 2, c = 3 dll) yang diwakili oleh dinding (|) di setiap sisi dan ruang di tengah. Lantai bawah (dan hanya lantai bawah) harus memiliki fondasi, yang merupakan garis bawah antara dinding. Seperti ini...
|_|
Jadi misalnya, 'b' akan terlihat seperti ini
_
/ \
| |
|_|
Sekarang, kita tahu bahwa bangunan yang sangat tinggi, sempit tidak dapat berdiri dan harus melebar di pangkalan, sehingga tidak ada bangunan yang dapat berdiri lebih dari tiga lantai tanpa dukungan tambahan. Jadi setiap tiga level (tidak kurang) Anda harus menambahkan 'pelebaran layer'. Lapisan pelebaran terdiri dari garis miring dan garis miring terbalik tepat di atas dinding bagian di bawahnya, dan bagian di bawah ini harus dua ruang lebih luas dari bagian di atas. Lapisan tambahan tidak dihitung terhadap ketinggian bangunan.
Bangunan tidak boleh tumpang tindih tetapi tidak boleh memiliki ruang yang tidak perlu di antara mereka, dan tanah selalu datar sehingga semua bangunan harus memiliki dasar pada tingkat yang sama.
Misalnya, 'abcdefga' akan terlihat seperti ini.
_
/ \
_ | |
_ / \ | |
_ / \ | | | |
/ \ | | | | / \
_ | | | | | | | |
_ / \ | | | | / \ | |
_ / \| | | | / \| | | | _
/ \| || |/ \| || |/ \/ \
|_||_||_||___||___||___||_____||_|
Spasi dalam input string harus diwakili oleh spasi ganda.
Pemberhentian penuh pada input string harus diwakili oleh puing-puing seperti ini.
/\/\
Contoh lebih lanjut
Input = Hello world.
Output =
_
/ \
| |
| |
| |
/ \
| |
| | _
| | / \
/ \ | |
| | | |
_ | | _ | |
/ \ | | / \ / \
| | / \ | | | |
| | | | | | | |
_ _ | | | | | | | | _
/ \ / \ / \ | | / \ / \ / \
| | | | | | / \ | | | | | |
| | | | | | | | | | | | | |
| | | | | | | | | | | | | |
_ / \ / \ / \ | | / \ / \ / \
/ \ | | | | | | / \ | | | | | |
| | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | |
| | _ / \ / \ / \ | | / \ / \ / \
/ \ / \ | | | | | | / \ | | | | | | _
| | | | | | | | | | | | | | | | | | / \
| | | | | | | | | | | | | | | | | | | |
| | | | / \/ \/ \ | | / \/ \/ \ | |
/ \/ \| || || | / \| || || | | |
| || || || || | | || || || |/ \
|_____||___||_______||_______||_________| |_______________||_________||___________||_______||___|/\/\
Input = lorem ipsum
_
/ \
_ | |
/ \ | |
_ | | | |
/ \ | | / \
| | _ | | | |
| | / \ / \ | |
_ | | | | | | | |
/ \ / \ | | | | / \
| | | | _ | | | | | | _
| | | | / \ / \ / \ | | / \
_ | | | | | | | | | | | | | |
/ \ / \ / \ | | | | | | / \ | |
| | | | | | | | | | | | | | | |
| | | | | | / \ / \ / \ | | / \
| | | | | | | | _ | | | | | | | |
/ \ / \ / \ | | / \ | | | | / \ | |
| | | | | | | | | | | | | | | | | |
| | | | | | / \ | | / \ / \ | | / \
| | | | | | | | | | | | | | | | | |
/ \ / \ / \ _ | | / \ | | | | / \ | |
| | | | | | / \ | | | | | | | | | | | |
| | | | | | | | / \ | | / \ / \ | | / \
| | | | | | | | | | | | | | | | | | | |
/ \/ \/ \ | | | | / \ | | | | / \ | |
| || || |/ \ | | | | | | | | | | | |
| || || || |/ \ | |/ \/ \| |/ \
|_______||_________||___________||___||_________| |_____||___________||_____________||_____________||_________|
Input = a.a.a.x.x.x.a.a.a
_ _ _
/ \ / \ / \
| | | | | |
| | | | | |
| | | | | |
/ \ / \ / \
| | | | | |
| | | | | |
| | | | | |
/ \ / \ / \
| | | | | |
| | | | | |
| | | | | |
/ \ / \ / \
| | | | | |
| | | | | |
| | | | | |
/ \ / \ / \
| | | | | |
| | | | | |
| | | | | |
/ \ / \ / \
| | | | | |
| | | | | |
| | | | | |
/ \ / \ / \
| | | | | |
| | | | | |
| | | | | |
/ \ / \ / \
_ _ _ | | | | | | _ _ _
/ \ / \ / \ | | | | | | / \ / \ / \
|_|/\/\|_|/\/\|_|/\/\|_______________|/\/\|_______________|/\/\|_______________|/\/\|_|/\/\|_|/\/\|_|
Aturan
- Tentu saja ini golf kode, skor terendah dalam byte menang
- Aturan celah standar berlaku
- Sejumlah baris kosong tambahan sebelum atau setelah output diizinkan
- Anda dapat memilih untuk output seluruh hasil dalam satu string atau menawarkan output sebagai array di mana setiap elemen mewakili satu baris output, atau kirim ke STDOUT
Catatan
Ini adalah posting pertama saya ke PPCG, jadi silakan saja. Sudah melalui kotak pasir. Setiap poin negatif atau perbaikan yang mungkin, silakan posting sebagai komentar dan saya akan melakukan apa yang saya bisa
[a,z]
, [1.26]
bagian yang disebutkan Mego. Pilihan opsional sering kali merupakan yang terbaik (kecuali jika itu adalah bagian penting dari tantangan (tidak ada di sini)
[a,z]
dan[A,Z]
untuk[1,26]
sepertinya persyaratan sia-sia. Akan jauh lebih baik menggunakan daftar integer sebagai input (setelah0
menjadi input untuk puing-puing). Juga, memposting tantangan Anda setelah berada di Sandbox hanya selama 21 jam , tanpa menunggu untuk mendapatkan suara atau umpan balik dari lebih dari satu pengguna, tidak dihitung karena telah "melalui kotak pasir". Disarankan untuk meninggalkan tantangan di Sandbox setidaknya selama 48-72 jam, untuk memberi orang banyak waktu untuk meninjaunya.