Haskell , üç sayı verebileceğiniz ve onlardan bir aritmetik dizi çıkarabileceğiniz bu düzgün (-looking) özelliğe sahiptir. Örneğin [1, 3..27]
, eşdeğerdir [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27]
.
Bu harika ve aritmetik sekanslar hariç hepsi oldukça sınırlayıcı. Toplama, pfft . Çarpma olduğu yer. Geri [1, 3..27]
dönmek gibi geometrik diziler yapsaydı daha serin olmaz mıydı [1, 3, 9, 27]
?
Meydan okuma
Bir yaz programı / fonksiyonu üç pozitif tamsayılar alır , bir , b ve c ve çıkışları burada x en büyük tam sayı ≤ olduğu C olarak temsil edilebilir burada n pozitif bir tamsayıdır.[a, b, b × (b ÷ a), b × (b ÷ a)2, ..., x]
b × (b ÷ a)n
Yani, çıktı r olmalıdır , öyle ki:
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
Özellikler
- Standart I / O kuralları geçerlidir .
- Standart boşluklar vardır yasak .
- b daima bölünebilir olacak bir .
- a < b ≤ c
- Bu zorluk tüm dillerde en kısa yaklaşımı bulmak değil, her dilde en kısa yaklaşımı bulmakla ilgilidir .
- Kodunuz , aksi belirtilmedikçe, genellikle UTF-8 kodlamasında bayt cinsinden puanlanır .
- Bu diziyi hesaplayan yerleşik işlevlere (Mathematica'da bir tane olabilir: P) izin verilir, ancak yerleşik bir teknolojiye dayanmayan bir çözüm eklemek teşvik edilir.
- "Pratik" diller için bile açıklamalar teşvik edilmektedir .
Test senaryoları
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]
Birkaç iyi biçimde:
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