Haskell ha questa caratteristica ordinata (dall'aspetto) in cui puoi assegnargli tre numeri e può inferire una sequenza aritmetica da essi. Ad esempio, [1, 3..27]equivale a [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27].
È fantastico e tutte le sequenze aritmetiche tranne che abbastanza sono limitanti. Inoltre, pfft . La moltiplicazione è dove si trova. Non sarebbe più bello se facesse sequenze geometriche come [1, 3..27]tornare [1, 3, 9, 27]?
Sfida
Scrivere un programma / funzione che accetta tre numeri interi positivi a , b e c e genera dove x è il numero intero più grande ≤ c che può essere rappresentato come dove n è un numero intero positivo.[a, b, b × (b ÷ a), b × (b ÷ a)2, ..., x]b × (b ÷ a)n
Cioè, l'output dovrebbe essere r , in modo che:
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
specificazioni
- Si applicano le regole I / O standard .
- Sono vietate le scappatoie standard .
- b sarà sempre divisibile per a .
- a < b ≤ c
- Questa sfida non riguarda la ricerca dell'approccio più breve in tutte le lingue, ma piuttosto la ricerca dell'approccio più breve in ciascuna lingua .
- Il tuo codice verrà assegnato un punteggio in byte , di solito nella codifica UTF-8, se non diversamente specificato.
- Le funzioni integrate (Mathematica potrebbe avere una: P) che calcolano questa sequenza sono consentite ma è incoraggiata l'inclusione di una soluzione che non si basa su un built-in.
- Le spiegazioni, anche per le lingue "pratiche", sono incoraggiate .
Casi test
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]
In alcuni formati migliori:
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