Haskell hat diese nette (-aussehende) Funktion, mit der Sie drei Zahlen eingeben und daraus eine arithmetische Folge ableiten können. Zum Beispiel [1, 3..27]
ist äquivalent zu [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27]
.
Das ist cool und alles andere als arithmetische Sequenzen sind ziemlich einschränkend. Ergänzung pfft . Multiplikation ist da, wo es ist. Wäre es nicht cooler, wenn geometrische Sequenzen [1, 3..27]
zurückkehren würden [1, 3, 9, 27]
?
Herausforderung
Schreiben Sie ein Programm / eine Funktion , das / die drei positive ganze Zahlen a , b und c annimmt und ausgibt, wobei x die größte ganze Zahl ≤ c ist , die dargestellt werden kann als wobei n eine positive ganze Zahl ist.[a, b, b × (b ÷ a), b × (b ÷ a)2, ..., x]
b × (b ÷ a)n
Das heißt, die Ausgabe sollte r sein , so dass:
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
Spezifikationen
- Standard I / O - Regeln gelten .
- Standardlücken sind verboten .
- b wird immer durch teilbar sein ein .
- a < b ≤ c
- Bei dieser Herausforderung geht es nicht darum, den kürzesten Ansatz in allen Sprachen zu finden, sondern darum, den kürzesten Ansatz in jeder Sprache zu finden .
- Ihr Code wird in Bytes bewertet , normalerweise in der Codierung UTF-8, sofern nicht anders angegeben.
- Eingebaute Funktionen (Mathematica hat möglicherweise eins: P), die diese Sequenz berechnen, sind zulässig, es wird jedoch empfohlen, eine Lösung einzuschließen, die nicht auf einer eingebauten basiert.
- Erklärungen, auch für "praktische" Sprachen, sind erwünscht .
Testfälle
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 ein paar besseren Formaten:
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