Diberikan input dari daftar blok untuk jatuh pada titik-titik tertentu, output ketinggian "menara."
Cara terbaik untuk menjelaskan tantangan ini adalah dengan contoh. Input akan berupa daftar bilangan bulat 2n yang mewakili n blok. Bilangan bulat pertama adalah posisi x blok, diindeks 0, dan yang kedua adalah seberapa lebar blok tersebut. Misalnya, input 2 4
mewakili blok (dengan x koordinat berlabel di bawah):
####
0123456789
Sekarang, katakanlah inputnya 2 4 4 6
. Yaitu, satu blok di x = 2 dengan lebar 4, dan satu di x = 4 dengan lebar 6:
######
####
Perhatikan bahwa a.) Blok selalu "jatuh" dari bagian paling atas menara dan b.) Blok tidak akan pernah "jatuh" (yaitu mereka akan selalu seimbang). Jadi, input
2 4 4 6 12 1
mewakili:
######
#### #
Perhatikan bahwa blok terakhir telah jatuh sampai ke "tanah".
Hasil akhir Anda harus menjadi ketinggian maksimum menara pada setiap nilai x hingga yang terbesar. Oleh karena itu, input 2 4 4 6 12 1
harus menghasilkan output
0011222222001
:
######
#### #
0011222222001
Input dapat diberikan sebagai string whitespace- / dipisahkan koma, array bilangan bulat, atau argumen fungsi / perintah baris. Posisi blok (nilai x) akan selalu berupa bilangan bulat 0 atau lebih besar, lebarnya akan selalu bilangan bulat 1 atau lebih besar, dan akan selalu ada setidaknya satu blok.
Output dapat diberikan sebagai string tunggal yang dipisahkan oleh karakter non-numerik (mis. "0, 0, 1, ..."
), String tunggal yang mencantumkan semua digit (mis.
"001..."
— Ketinggian maksimum dijamin 9 atau kurang), atau array bilangan bulat.
Karena ini adalah kode-golf , kode terpendek dalam byte akan menang.
Kasus uji:
In Out
---------------------------------------------------------
2 4 4 6 12 1 0011222222001
0 5 9 1 6 4 2 5 1133333222
0 5 9 1 2 5 6 4 1122223333
0 5 2 5 6 4 9 1 1122223334
20 1 20 1 20 1 00000000000000000003
5 5 000011111
0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 4 123456789999
Jawaban:
CJam,
3430 byteInput sebagai array gaya CJam, output sebagai serangkaian digit.
Jalankan semua test case.
Berikut adalah dua varian dari ide lain, tetapi saat ini lebih panjang 2 byte:
sumber
Python 3, 89
Cobalah online .
Fungsi mengambil dan mengembalikan daftar bilangan bulat.
sumber
Rubi,
8887 byteCobalah online.
Terinspirasi oleh jawaban grc, tetapi dalam bahasa yang berbeda dan hanya sedikit lebih pendek.
Penjelasan:
sumber
APL, 79 byte
Input sebagai APL Array, output sebagai array digit APL.
sumber
{⊃{o←⍵↑⍨z←(≢⍵)⌈a←+/⍺⋄e←z↑(-a)↑⍺[1]⍴1⋄o+0⌈o-⍨e×e⌈.+e×o}/⌽(⊂⍬),↓⍵⍴⍨⌽2,.5×≢⍵}
(Ya Tuhan, belajarlah untuk menggunakan yang⍨
benar)⊃
dan1↑
dan karena ini Anda memberikan saran yang menyebabkan program yang diperbarui untuk memberikan hasil yang salah tetapi saya tidak menggurui Anda.0.5
Jawa 1.8,
351329 byteTidak senang dengan upaya pertama ini - saya yakin perulangan ganda, dan semua Integer.valueOf ini dapat di-golf lagi.
Tidak disatukan
sumber