Diberikan dua parameter, pola lajur dan panjang jalan , cetak representasi ASCII dari marka jalan untuk Jalan dan Layanan Lalu Lintas untuk mengecat jalan.
Contoh input / output
Input:, BTHMLRPHU
21
Saya tidak peduli jika Anda mengambil dua parameter atau menyatukan angka ke akhir string, itu jelas.
Masukan dapat diambil dari STDIN, sebagai argumen fungsi, variabel lingkungan, apa pun yang masuk akal dalam bahasa Anda.
Keluaran:
! | x ## | | x x !
! B | /\ x HOV3 ## <- | -> | ^^ x HOV3 x !
! B | \/ x HOV3 ## | | | | ^^ x HOV3 x !
! | x ## | | x x !
! | x ## | | x x !
! | | ## | | | | !
! | | ## | | | | !
! | | ## | | | | !
! B | /\ | HOV3 ## <- | -> | ^^ | HOV3 | !
! B | \/ | HOV3 ## | | | | ^^ | HOV3 | !
! | x ## | | x x !
! B | /\ x HOV3 ## <- | -> | ^^ x HOV3 x !
! B | \/ x HOV3 ## | | | | ^^ x HOV3 x !
! | x ## | | x x !
! | x ## | | x x !
! | | ## | | | | !
! | | ## | | | | !
! | | ## | | | | !
! B | /\ | HOV3 ## <- | -> | ^^ | HOV3 | !
! B | \/ | HOV3 ## | | | | ^^ | HOV3 | !
! | x ## | | x x !
Setiap karakter menunjukkan lebar 0,5 meter dan panjang satu kilometer.
Spesifikasi
Tanda jalur
Untuk setiap bentangan 10 km, marka dicat pada kilometer 2, 3, 9, dan 10 (dari "atas" keluaran). Tanda dipusatkan di jalur. Kecuali jalur sepeda dan median, semua jalur memiliki lebar 3 meter (6 karakter).
Karakter berlian dan panah ASCII tidak diizinkan sebagai pengganti tanda-tanda seperti yang ditunjukkan dalam contoh output.
B
: Jalur sepeda.B
menandai. Lebar 1,5 meter (3 karakter).T
: Transit. Penandaan berlianH
: Jalur kendaraan dengan okupansi tinggi.HOV3
menandaiL
danR
: Turning lane. Tanda panahP
: Passing lane. Tanda caretU
: Jalur tidak terbatas. Tidak ada tanda
Pemisah (sesuai urutan)
- Median:
##
(dilambangkan olehM
dalam string input, menggantikan pemisah lainnya termasuk parit) - Parit (ekstrem kiri dan kanan ekstrem):
!
Tanda seru - Jalur HOV bergantian antara
x
dan|
setiap 5 km - Normal:
|
Kendala
Fungsi atau program Anda harus:
- Cetak ke STDOUT (ini artinya setara dengan
System.out.print
untuk Java,console.log
untuk JavaScript, dll.) - Dapat mencetak 1 - 9 jalur dengan 0 - 10 median
- Mampu mencetak hingga 50 km jalan (50 garis output)
- Tidak menggunakan celah standar apa pun
- Trailing white space tidak dapat diterima dengan pengecualian opsional
\n
di akhir output
Output terbesar yang mungkin: 3700 byte (74 karakter * 50 baris).
Output sekecil mungkin: 5 byte (dengan input B
, 1)
Asumsi
- Tidak ada median yang berdekatan (substring
MM
tidak akan terjadi) - Garis tanda kedua mungkin terpotong (misalnya jika panjangnya 9 atau 12 km)
- Jalur mungkin tidak masuk akal secara logis (urutan apa pun dimungkinkan, misalnya jalur belok kanan di kiri jalan)
Ini adalah kode-golf , jadi kode terpendek (dalam byte) menang!
Jawaban:
Ruby, 245
Cetak lajur yang dibagi jika relevan, kemudian cetak lajur.
Saya tidak berharap untuk menang.
Changelog
245 tersedak stderr dan membagi array secara efektif.
263 cara yang lebih baik untuk mengindeks array
268 cukup cetak setiap baris, jangan hitung versi kanonik.
330 komit awal
sumber
JavaScript (ES6), 316 byte
Demo
Ini harus berfungsi di Firefox dan Edge pada saat penulisan, Chrome / Opera memerlukan fitur eksperimental untuk diaktifkan.
sumber
05AB1E ,
175174175 bytePendekatan yang sangat buruk, tetapi berhasil dan menyenangkan untuk dibuat. Pasti bisa bermain golf lagi.
+1 byte sebagai perbaikan bug untuk dua
HH
jalur yang berdekatan .Cobalah online.
Penjelasan:
Langkah 1: Buat semua jalur yang mungkin dengan ukuran 10:
Langkah 2: Konversi string input ke indeks (yang akan kita gunakan untuk mengindeks ke daftar yang kita buat di langkah 1):
Langkah 3: kami menggunakan indeks tersebut untuk mengindeks ke dalam daftar jalur. Dan kemudian kita mengonversi daftar lajur tersebut ke output yang benar, termasuk memperluas / memperpendeknya ke ukuran input integer:
Lihat ini 05AB1E ujung tambang (bagian Cara string kompres bukan bagian dari kamus? Dan Cara kompres bilangan bulat besar? ) Untuk memahami mengapa
Ž5E
adalah1289
;.•o¤[‹‡•
adalah"tlrpbhmu"
;ŽDý
adalah10201
;•δ~¬]•
adalah1119188999
;Ž\nÿ
adalah19889
.sumber