Dado é qualquer número inteiro x> 0 e qualquer base y> 3.
- Soma todos os dígitos de x (se escritos na base definida).
- Multiplique isso pelo dígito mais alto possível (é sempre
base -1
). - Repita até que este valor seja
(y - 1) ^ 2
Pesquisado é a contagem de iterações e as etapas.
Exemplo 1:
x= 739
y= 7
searched: (7 - 1) ^ 2 = 36
based: (b7)2104
sum: (dec)7
mul: (dec)42
based: (b7)60
sum: (dec)6
mul: (dec)36
2 steps needed -> answer is [2, 739, 42, 36] or [739, 42, 36, 2]
Exemplo 2:
x = 1712
y = 19
s: 324
step1: 1712 -> 360
step2: 360 -> 648
step3: 648 -> 324
3 steps needed -> answer is [3, 1712, 360, 648, 324] or [1712, 360, 648, 324, 3]
Especial:
Em alguns casos (algumas combinações com base em 3), você não poderá (y - 1) ^ 2
gostar de x = 53
e y = 3
. Por esse motivo, y
precisa ser maior que 3 e você pode ignorar isso.
A contagem de iterações precisa ser o primeiro ou o último valor
São as vitórias mais baixas em contagem de bytes do código-golfe .
code-golf
combinatorics
base-conversion
Dirk Reichel
fonte
fonte
Respostas:
Geléia ,
1413 bytes-1 byte, imprimindo enquanto faz um loop (
Ṅ
substituindo uma separaçãoµ
e concatenação de cadeia;
)TryItOnline!
Quão?
O alternador de 13 bytes imprime cada entrada no loop mais um avanço de linha (
Ṅ
) e, finalmente, imprime implicitamente a contagem decrescente dos resultados coletados, eliminando a necessidade de uma separação de cadeia monádica (µ
) e concatenação (;
).fonte
Perl 6 , 60 bytes
Expandido:
Uso:
fonte
C,
116113 bytes-3 bytes para recalcular o quadrado de cada vez
Ungolfed e uso:
fonte
JavaScript (ES6),
97918482 bytesCasos de teste
Mostrar snippet de código
fonte
Gelatina , 16 bytes
Acho que vou postar isso de qualquer maneira, mesmo que tenha sido derrotado enquanto escrevia, porque é um algoritmo notavelmente diferente e foi interessante escrever. (Eu não conseguia descobrir como
ÐĿ
os documentos eram analisados e tive que desistir, apesar de saber que provavelmente levaria a uma solução mais curta do que esta.)Experimente online!
Explicação:
O uso de
<’¥
é basicamente uma maneira curta de escrever uma díade (link com dois argumentos) que sempre retorna -1 (porque sabemos que a resposta nunca será menor que a base). A escolha entre executar de forma recursiva e todo o programa recursivamente permite determinar quando parar o loop. Então, quando a pilha se desenrola no final da recursão, continuamos incrementando o -1 para determinar quantas etapas houve.fonte
MATL,
2521 bytes4 bytes salvos graças a @Luis
Experimente Online!
Explicação
fonte
Mathematica, 80 bytes
é o caractere de uso privadoU+F4A1
usado para representar\[Function]
. Se o número de etapas não fosse necessário na resposta, isso poderia ser feito em 60 bytes:fonte