Haskell a cette fonctionnalité soignée où vous pouvez lui donner trois nombres et en déduire une séquence arithmétique. Par exemple, [1, 3..27]
est équivalent à [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27]
.
C'est cool et tout sauf les séquences arithmétiques sont assez limitantes. Addition, pfft . La multiplication est là où elle en est. Ne serait-il pas plus cool s'il faisait des séquences géométriques comme le [1, 3..27]
retour [1, 3, 9, 27]
?
Défi
Écrivez un programme / une fonction qui prend trois entiers positifs a , b et c et produit où x est le plus grand entier ≤ c qui peut être représenté comme où n est un entier positif.[a, b, b × (b ÷ a), b × (b ÷ a)2, ..., x]
b × (b ÷ a)n
Autrement dit, la sortie doit être r , telle que:
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
Caractéristiques
- Les règles d'E / S standard s'appliquent .
- Les failles standard sont interdites .
- b sera toujours divisible par a .
- a < b ≤ c
- Ce défi ne consiste pas à trouver l'approche la plus courte dans toutes les langues, mais plutôt à trouver l' approche la plus courte dans chaque langue .
- Votre code sera noté en octets , généralement dans le codage UTF-8, sauf indication contraire.
- Les fonctions intégrées (Mathematica peut en avoir une: P) qui calculent cette séquence sont autorisées, mais il est recommandé d' inclure une solution qui ne repose pas sur une fonction intégrée.
- Des explications, même pour les langues "pratiques", sont encouragées .
Cas de 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]
Dans quelques meilleurs formats:
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