Anda menjadi tuan rumah Olimpiade, dan perlu membangun kolam yang fantastis untuk kesempatan ini, tetapi para penyelia sering berubah pikiran tentang dimensi, dan perlu cara cepat untuk membangunnya kembali dengan ukuran yang diminta!
Diberi dua bilangan bulat, L
dan x
, tugas Anda adalah membangun kolam renang panjang L
dan x
jalur.
Bagaimana kolam dibangun?
Ini berisi kuadrat dalam, yang dinding horizontal terbuat dari
L
tanda hubung berturut - turut (-
), dan dinding vertikal yang terbuat dari3x - 1
bar (|
). Selain itu, 4+
tanda terletak di setiap sudut. Mari kita ambil contoh (L = 10, x = 2
):+ ---------- + | | | | | | | | | | + ---------- +
Setiap jalur memiliki lebar 2 unit vertikal. Alun-alun bagian dalam diisi dengan
x-1
pemisah jalur, terdiri dari simbolL
-:
simbol yang berurutan secara horizontal . Setelah meletakkan pemisah jalur, kolam kami akan terlihat seperti ini:+ ---------- + | | | | | :::::::::: | | | | | + ---------- +
Kolam juga berisi padding (kotak luar), yang dinding horizontal (L + 4)
-
dan dinding vertikal (3x +1)|
, yang mengelilingi kotak bagian dalam:+ -------------- + | + ---------- + | | | | | | | | | | | :::::::::: | | | | | | | | | | | + ---------- + | + -------------- +
Dan itulah kolam renang ** berukuran olimpiade kami!
Spesifikasi:
Untuk tujuan desain dan fungsionalitas, Anda dijamin akan
100 ≥ L ≥ 10
dan15 ≥ x ≥ 2
.Outputnya harus persis seperti yang ditunjukkan. Outputing "pool yang dibangun secara vertikal" * tidak diizinkan.
Ruang tertinggal dan terdepan diizinkan.
Anda dapat mengambil input dan memberikan output melalui metode standar apa pun .
Berlaku celah default .
Contoh / Uji kasus:
L = 20, x = 3 + ------------------------ + | + -------------------- + | | | | | | | | | | | :::::::::::::::::::: | | | | | | | | | | | | :::::::::::::::::::: | | | | | | | | | | | + -------------------- + | + ------------------------ + L = 50, x = 5: + ------------------------------------------------- ----- + | + ------------------------------------------------- - + | | | | | | | | | | | :::::::::::::::::::::::::::::::::::::::::::::::: : | | | | | | | | | | | | :::::::::::::::::::::::::::::::::::::::::::::::: : | | | | | | | | | | | | :::::::::::::::::::::::::::::::::::::::::::::::: : | | | | | | | | | | | | :::::::::::::::::::::::::::::::::::::::::::::::: : | | | | | | | | | | | + ------------------------------------------------- - + | + ------------------------------------------------- ----- + L = 10, x = 15 + -------------- + | + ---------- + | | | | | | | | | | | :::::::::: | | | | | | | | | | | | :::::::::: | | | | | | | | | | | | :::::::::: | | | | | | | | | | | | :::::::::: | | | | | | | | | | | | :::::::::: | | | | | | | | | | | | :::::::::: | | | | | | | | | | | | :::::::::: | | | | | | | | | | | | :::::::::: | | | | | | | | | | | | :::::::::: | | | | | | | | | | | | :::::::::: | | | | | | | | | | | | :::::::::: | | | | | | | | | | | | :::::::::: | | | | | | | | | | | | :::::::::: | | | | | | | | | | | | :::::::::: | | | | | | | | | | | + ---------- + | + -------------- +
Ini adalah kode-golf , jadi kode terpendek dalam byte menang!
* Air bisa mengalir keluar jika dibangun secara vertikal: P
** Ya, saya sadar bahwa semakin banyak jalur dan semakin pendek kolam, semakin sedikit gambar yang tampak seperti kolam!
x>=L
??L=10
dan di manax=15
? Tidak akan ada lebih banyak jalur daripada yang bisa ditempatkan di kolam? Saya bisa salah paham maksudnyaJawaban:
Arang , 32 byte
Cobalah online!
-4 Terima kasih kepada Neil .
AST:
sumber
-a
argumen baris perintah.-a
memunculkan kesalahan> _ <Arang ,
403937 byteCobalah online!
Saya tahu Neil sudah memiliki jawaban Arang sekitar panjang yang sama, tetapi saya mengambil sedikit pendekatan yang berbeda jadi saya pikir saya mungkin juga posting saya.
Penjelasan
sumber
B
adalah opsional? Bagus, itu menyelamatkan saya dua byte!Arang,
40383631 byteCobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
Primitif gambar Charcoal menggunakan jumlah karakter keseluruhan termasuk
+
s, namun inputnya hanya jumlah-
s, jadi kita perlu menambahkan 2 untuk mendapatkan lebar dinding bagian dalam.Hitung ketinggian dinding bagian dalam, sekali lagi, termasuk baris bawah, jadi tiga per jalur ditambah satu.
Gambar jalur. Ini hanyalah sebuah persegi panjang yang diisi dengan
:
s yang dipisahkan secara vertikal oleh dua garis kosong (pilcrow mewakili karakter baris baru).The
Rectangle
perintah persis apa yang kita butuhkan untuk menarik dinding bagian dalam. Sunting:Box
memungkinkan Anda menghilangkan parameter ketiga, menghemat saya 2 byte.Dan lagi untuk menggambar dinding luar, kecuali sedikit lebih lebar dan lebih tinggi, dan berpusat di dinding bagian dalam.
sumber
T-SQL,
284281 byteInput diambil dari kolom INT L dan x dalam tabel yang sudah ada t , sesuai metode input yang diizinkan .
Pada dasarnya saya membuat string panjang dengan huruf yang mewakili karakter yang diulang (d = tanda hubung, s = spasi, c = titik dua, b = garis istirahat), lalu GANTI semuanya pada akhirnya dengan pengisi yang sesuai.
Diformat:
Di dalam loop saya menambahkan 2 baris kosong dan 1 baris titik dua, kemudian pada akhirnya saya memotong baris pembagi itu dan menambahkan batas pool sebelum melakukan penggantian.
EDIT : Disimpan 3 byte dengan beralih
@
ke variabel yang paling sering digunakan, dan bertukar urutan inisialisasi.sumber
JavaScript (ES6),
137124 byteGolf itu turun sedikit di ponsel saya, lebih banyak untuk mengikuti.
Cobalah
sumber
Python 2 ,
124120117 byte-2 byte berkat Hyper Neutrino
Cobalah online!
sumber
t
tidak perlu)SOGL V0.12 ,
5251 byteCoba Di Sini!
Tidak buruk mengingat bahwa 20 byte ini adalah fungsi persegi panjang, yang memiliki built-in untuk arang.
Penjelasan:
sumber
C # (.NET Core) , 202 byte
Cobalah online!
sumber
Python 2 ,
128126 byteCobalah online!
-2 byte terima kasih kepada @ Mr.Xcoder
sumber
PHP , 153 byte
Cobalah online!
sumber
Python 2 , 97 byte
Cobalah online!
Python 2 , 98 byte
Cobalah online!
sumber
Arang , 36 byte
Cobalah online!
Ini adalah algoritma yang lebih Charcoal-y daripada jawaban saya yang lain.
sumber
C (gcc) , 195 byte
Cobalah online!
sumber
Perl 5 , 124 + 1 (-a) = 125 byte
Cobalah online!
sumber