Haskell possui esse recurso elegante (de aparência), onde você pode fornecer três números e inferir uma sequência aritmética deles. Por exemplo, [1, 3..27]
é equivalente a [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27]
.
Isso é legal e quase todas as seqüências aritméticas são bastante limitantes. Além disso, pfft . A multiplicação é onde está. Não seria mais legal fazer sequências geométricas como [1, 3..27]
retornar [1, 3, 9, 27]
?
Desafio
Escrever um programa / função que leva três números inteiros positivos um , b , e c e saídas , onde x é o número inteiro maior ≤ c que pode ser representado como onde n é um número inteiro positivo.[a, b, b × (b ÷ a), b × (b ÷ a)2, ..., x]
b × (b ÷ a)n
Ou seja, a saída deve ser r , de modo 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
Especificações
- Aplicam- se as regras de E / S padrão .
- As brechas padrão são proibidas .
- b sempre será divisível por a .
- a < b ≤ c
- Esse desafio não é encontrar a abordagem mais curta em todos os idiomas, mas sim encontrar a abordagem mais curta em cada idioma .
- Seu código será pontuado em bytes , geralmente na codificação UTF-8, a menos que especificado de outra forma.
- Funções internas (o Mathematica pode ter uma: P) que calculam essa sequência são permitidas, mas é recomendável incluir uma solução que não dependa de uma embutida.
- Explicações, mesmo para idiomas "práticos", são incentivadas .
Casos de teste
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]
Em alguns formatos melhores:
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