Sebagai bagian dari proyek perencanaan kota, Anda mendapat tugas membuat program atau fungsi yang akan menampilkan cakrawala kota, diberikan beberapa masukan dari arsitek. Proyek ini hanya dalam tahap startup, sehingga sketsa yang sangat kasar sudah cukup. Pendekatan termudah tentu saja dengan hanya menggambar cakrawala dalam ASCII-art.
Semua bangunan akan berada di tepi sungai, sehingga semuanya disejajarkan. Arsitek akan memberikan ketinggian setiap bangunan sebagai input, dan kode Anda harus menampilkan garis langit.
Input dari arsitek akan berupa bilangan bulat atau setengah bilangan bulat. Jika angka tersebut bilangan bulat, bangunan akan memiliki atap yang datar, sedangkan setengah bilangan bulat akan menghasilkan atap yang melengkung. Nol hanya akan menjadi tanah datar. Dinding bangunan terpisah 3 karakter, sedangkan nol akan menjadi lebar satu karakter. Bangunan-bangunan yang berdekatan berbagi tembok.
Untuk detail dan klarifikasi tentang output, silakan lihat contoh-contoh di bawah ini:
N = 3
___
| |
| |
|___|
N = 3.5
_
/ \
| |
| |
|___|
N = 6
___
| |
| |
| |
| |
| |
|___|
n = 0
_
Contoh input: 3 3.5 0 2
_
___ / \
| | | ___
| | | | |
|___|___|_|___|
Contoh input: 0 0 2.5 3 0 4 1
___
_ ___ | |
/ \| | | |
| | | | |___
__|___|___|_|___|___|
Louisville ,0 2 1 3.5 0 4 2 4 2 4 6 1 6 0 5 1
___ ___
| | | | ___
_ ___ ___ ___| | | | | |
/ \ | | | | | | | | | | |
___ | | | |___| |___| | | | | | |
| |___| | | | | | | | |___| | | |___
_|___|___|___|_|___|___|___|___|___|___|___|___|_|___|___|
Karakter ASCII yang digunakan adalah: baris baru, spasi, dan /\_|
(titik kode 10, 32, 47, 92, 95, 124).
Aturan:
- Ini opsional untuk membuat program yang hanya mengambil bilangan bulat sebagai input, dengan mengalikan semua angka dengan dua. Jadi, alih-alih mengambil
3 3.5 2
, program Anda mungkin mengambil6 7 4
. Jika format input kedua dipilih, input 6 harus menghasilkan bangunan 3 lantai, 7 harus berupa bangunan 3 lantai dengan atap bernada dll. - Outputnya harus persis seperti yang dijelaskan di atas, tetapi spasi tambahan dan baris baru OK.
- Format input yang tepat adalah opsional. Apapun yang terbaik dalam bahasa Anda.
- Hasilnya harus ditampilkan di layar, sehingga arsitek dapat melihatnya.
- Anda dapat mengasumsikan akan ada setidaknya satu bilangan bulat yang diberikan, dan hanya input yang valid yang akan diberikan.
Ini codegolf, jadi kode terpendek dalam byte menang.