Haskell memiliki fitur rapi ini (di mana) Anda dapat memberikannya tiga angka dan dapat menyimpulkan urutan aritmatika dari mereka. Misalnya, [1, 3..27]
setara dengan [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27]
.
Itu keren dan semua kecuali urutan aritmatika cukup terbatas. Selain itu, pfft . Perkalian ada di mana. Bukankah lebih keren jika melakukan urutan geometris seperti [1, 3..27]
kembali [1, 3, 9, 27]
?
Tantangan
Tulis sebuah program / fungsi yang mengambil tiga bilangan bulat positif a , b , dan c dan output di mana x adalah bilangan bulat terbesar ≤ c yang dapat direpresentasikan sebagai di mana n adalah bilangan bulat positif.[a, b, b × (b ÷ a), b × (b ÷ a)2, ..., x]
b × (b ÷ a)n
Artinya, output harus r , sedemikian rupa sehingga:
r0 = a
r1 = b
rn = b × (b ÷ a)n-1
rlast = greatest integer ≤ c that can be represented as b × (b ÷ a)n
where n is a positive integer
Spesifikasi
- Aturan I / O standar berlaku .
- Celah standar yang dilarang .
- b akan selalu habis dibagi oleh a .
- a < b ≤ c
- Tantangan ini bukan tentang menemukan pendekatan terpendek dalam semua bahasa, melainkan tentang menemukan pendekatan terpendek dalam setiap bahasa .
- Kode Anda akan dinilai dalam byte , biasanya dalam pengkodean UTF-8, kecuali ditentukan lain.
- Fungsi bawaan (Mathematica mungkin memiliki satu: P) yang menghitung urutan ini diizinkan tetapi termasuk solusi yang tidak bergantung pada bawaan dianjurkan.
- Penjelasan, bahkan untuk bahasa "praktis", dianjurkan .
Uji kasus
a b c r
1 2 11 [1, 2, 4, 8]
2 6 100 [2, 6, 18, 54]
3 12 57 [3, 12, 48]
4 20 253 [4, 20, 100]
5 25 625 [5, 25, 125, 625]
6 42 42 [6, 42]
Dalam beberapa format yang lebih baik:
1 2 11
2 6 100
3 12 57
4 20 253
5 25 625
6 42 42
1, 2, 11
2, 6, 100
3, 12, 57
4, 20, 253
5, 25, 625
6, 42, 42