Pertimbangkan sebuah jembatan dengan panjang B yang dibentuk oleh ubin berlabel digit bilangan bulat positif. Misalnya, jika B berusia 41, maka akan terlihat seperti ini:
----------------------------------------- 12345678910111213141516171819202122232425
Sekarang bayangkan sebuah kereta dengan panjang T melintasi jembatan. Titik paling kiri dari kereta dimulai pada posisi X (1-diindeks). Untuk mendapatkan pemahaman yang lebih baik tentang masalah ini, mari buat skema acara, dengan B = 41, T = 10, X = 10 . Kereta ditarik menggunakan tanda sama ( =
) dan garis:
__________ | ======== | | ======== | ----------------------------------------- 12345678910111213141516171819202122232425
Kereta bisa bergerak maju, di setiap langkah, dengan jumlah ubin unik yang letaknya. Misalnya, ubin tempat kereta berdiri di atas adalah [1, 0, 1, 1, 1, 2, 1, 3, 1, 4]
:, ubin unik (diduplikasi) adalah:, [1, 0, 2, 3, 4]
dan jumlahnya adalah 10
. Oleh karena itu, kereta dapat naik dengan 10
ubin. Kita harus menggambarnya lagi dan ulangi prosesnya sampai titik paling kiri kereta telah melewati ubin terakhir:
__________ | ======== | | ======== | ----------------------------------------- 12345678910111213141516171819202122232425 Jumlah ubin unik: 1 + 5 + 6 + 7 + 8 + 9 = 36. Kereta melaju dengan 36 ubin ... __________ | ======== | | ======== | ----------------------------------------- 12345678910111213141516171819202122232425 Kereta jelas melintasi jembatan sepenuhnya, jadi kita harus berhenti sekarang.
Karena orang-orang di dalam merasa bosan, mereka menghitung ubin kereta yang telah maju setiap kali. Dalam kasus khusus ini, 10
dan 36
. Merangkum semuanya, kereta telah bergerak 46
sebelum melewati jembatan.
Tugas
Diberikan tiga bilangan bulat positif, B (panjang jembatan), T (panjang kereta) dan X (posisi awal, 1-diindeks ), tugas Anda adalah menentukan berapa banyak ubin kereta yang telah dipindahkan sampai melintasi jembatan mengikuti aturan atas.
- Anda dapat mengasumsikan bahwa:
- B lebih tinggi dari T .
- X lebih rendah dari B .
- T setidaknya 2 .
- Kereta akhirnya melintasi jembatan.
- Semua aturan standar kami berlaku.
- Ini adalah kode-golf , jadi kode terpendek dalam byte menang!
Uji kasus
Input ([B, T, X]) -> Output [41, 10, 10] -> 46 [40, 10, 10] -> 46 [30, 4, 16] -> 24 [50, 6, 11] -> 50
Contoh lain yang berfungsi untuk kasus uji terakhir:
Jembatan itu panjangnya 50, kereta 6, dan posisi awal adalah 11. _______ Albania | ==== | | ==== | -------------------------------------------------- 12345678910111213141516171819202122232425262728293 Ubin unik: [0, 1, 2]. Jumlah: 3. _______ Albania | ==== | | ==== | -------------------------------------------------- 12345678910111213141516171819202122232425262728293 Ubin unik: [1, 2, 3, 4]. Jumlah: 10. _______ Albania | ==== | | ==== | -------------------------------------------------- 12345678910111213141516171819202122232425262728293 Ubin unik: [1, 7, 8, 9]. Jumlah: 25. _______ Albania | ==== | | ==== | -------------------------------------------------- 12345678910111213141516171819202122232425262728293 Ubin unik: [9, 3]. Jumlah: 12. _______ Albania | ==== | | ==== | -------------------------------------------------- 12345678910111213141516171819202122232425262728293 Kereta ada jembatan. Jumlah total: 3 + 10 + 25 + 12 = 50.
(200, 2, 169)
, kereta macet di00
dalam…9899100101102…
.Jawaban:
Sekam , 20 byte
Cobalah online!
Membawa tiga argumen dalam rangka T , B , X .
Penjelasan
sumber
Python 2 ,
1101051041031009796 byte[~-x:x+~-t]
untuk[~-x:][:t]
....range(1,-~b)))[:b]
untuk...range(b)))[1:-~b]
.[1:-~b][~-x:]
untuk[:-~b][x:]
.[:-~b][x:]
untuk[x:-~b]
.while
loop keexec
pernyataan.Cobalah online!
sumber
[~-x:x+~-t]
dapat digantikan oleh[x-1:][:t]
exec"x+=sum(set(map(int,''.join(map(str,range(b)))[x:-~b][:t])));"*b
bekerja untuk 96. (Kereta tidak akan pernah mengambil lebih darib
langkah untuk meninggalkan jembatan, dan seluruh operasi akan berjumlahx+=0
berulang setelah itu pergi.)Haskell,
106102 byteCobalah online!
sumber
R , 123 byte
Hanya mengimplementasikan algoritma yang dijelaskan.
R cukup buruk pada string.
Cobalah online!
sumber
Jelly ,
2221 byteProgram lengkap yang mengambil tiga argumen - urutannya adalah B , X , T - yang mencetak hasilnya.
Cobalah online!
Bagaimana?
sumber
JavaScript (ES6), 117 byte
Sepasang fungsi rekursif:
f()
jumlah gerakan kereta.g()
menciptakan string angka.Kurang golf:
Tampilkan cuplikan kode
sumber
PHP> = 7.1, 153 byte
Cobalah online!
Untuk membuatnya kompatibel dengan versi PHP yang lebih rendah, ubah
[,$p,$q,$r]=
kelist(,$p,$q,$r)=
(+4 byte).sumber