+ - + + - + | | + - + + - + | | | | | | | | + - + + - + + - + + - +
Orang-orang ASCIIville membangun kembali kota mereka dan membuat sketsa cetak biru baru. Tugas Anda adalah menggambar kota baru mereka berdasarkan berapa banyak bangunan yang mereka inginkan.
Masukan akan berapa banyak bangunan yang ada. Setiap bangunan adalah setengah tinggi input (dibulatkan jika aneh), tidak termasuk bagian atas dan bawah bangunan.
Mari kita menggambar contoh dasar 4
+ - + + - + + - + + - + | | | | | | | | | | | | | | | | + - + + - + + - + + - +
Seperti yang Anda lihat di sini, ada dua |
s di setiap bangunan karena inputnya empat. Tapi ada tangkapan! (artinya contoh di atas tidak benar, dan contoh di bagian atas posting ini adalah hasil nyata untuk 4)
Untuk setiap bangunan yang bukan bilangan prima, tingginya turun satu. Jika angkanya dibagi 3 , 5 , atau 10 , itu turun satu lagi. Jika itu dapat dibagi dengan dua atau lebih dari angka-angka itu, jumlah yang dikurangkan bertambah ( 10 dibagi dengan 10 dan 5, dan itu bukan bilangan prima, sehingga dikurangi oleh 3 ).
Mari kita lihat contoh dengan input 5
.
+ - + + - + | | + - + + - + + - + | | | | | | | | | | | | | | | | | | | | + - + + - + + - + + - + + - +
Berikut ini contoh 7
+ - + + - + + - + | | + - + + - + + - + | | | | | | | | | | | | + - + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + - + + - + + - + + - + + - + + - + + - +
Dan contoh dari 10
+ - + + - + + - + | | + - + + - + + - + | | + - + | | | | | | | | | | + - + | | | | + - + | | | | | | | | | | | | | | | | | | + - + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + - + + - + + - + + - + + - + + - + + - + + - + - - +
Dan kembali ke 6
+ - + + - + | | + - + + - + + - + | | | | | | | | | | + - + | | | | | | | | | | | | + - + + - + + - + + - + + - + + - +
Aturan:
- Jika suatu angka dikurangkan sedemikian rupa sehingga tingginya kurang dari atau sama dengan nol, itu tidak diperlihatkan tetapi ada ruang tersisa untuk itu (saya tidak percaya ini mungkin,
6
adalah yang terdekat yang saya temukan dengan mencapai nol) . - Ruang tambahan diperbolehkan.
- Lebar setiap bangunan harus 2.
- Masukan Anda dapat dari stdin atau disandikan ke dalam program.
- Program Anda harus berupa program lengkap , tidak ada fungsi.
- Program Anda harus mampu membangun 4-15. 0-3 dan angka negatif tidak diperlukan dan tidak ditentukan untuk melakukan apa pun, artinya mereka dapat melempar kesalahan, mencetak sampah, atau tidak melakukan apa-apa.
Jawaban:
CJam,
68 66 5855 byteIni terlalu lama untuk saat ini. Tapi awal.
UPDATE: Sekarang hardcoding untuk input sampai 15 bukannya menghitung offset. Saran oleh Sp3000
Cobalah online di sini
sumber
Python 2,
247 245 237229 bytesumber
C #,
223205 byteIni mengambil keuntungan dari kebutuhan hanya pergi ke 15 bangunan.
260 byte
Dan jawaban yang lebih umum yang akan bekerja untuk sejumlah gedung.
sumber
Python 2, 163 byte
Bagian pemeriksaan keutamaan meminjam algoritma @ xnor dari sini .
Jika kita meng-hardcode 15 offset pertama, kita bisa mendapatkan 137 byte :
Saya mengasumsikan spasi tambahan pada akhir setiap baris tidak apa-apa, tetapi jika pertanyaannya berarti spasi tambahan setelah seluruh output maka +9 byte untuk
.rstrip()
.sumber
Groovy,
234,225,223219 byteMenyalahgunakan batas 15 bangunan
sumber
Swift,
375, 350 byteIni kode indentasi
B
berisi jumlah bangunan.p
mengembalikan 1 ketika suatu angka tidak prima.Saya perlu mengimpor Foundation untuk menggunakan
ceil
fungsi ini.Saya tidak berhasil mengoptimalkan kode hanya untuk lima belas kasus, tetapi saya akhirnya akan membuatnya nanti.
sunting: Mengambil saran @Kametrixom dan mengoptimalkan
mod
bagian (saya lupa mengurangi panjang nama var).sumber
Foundation
denganDarwin
untuk menyimpan beberapa byteimport UIKit
alih - alihimport Darwin
.