Temos uma sequência estritamente crescente de números inteiros não negativos, como:
12 11 10
Esperar! Essa sequência não está aumentando estritamente, é? Bem, os números são escritos em diferentes bases. A base menos possível é 2, a maior é 10.
A tarefa é adivinhar as bases de cada número, para que:
- a sequência está aumentando estritamente,
- a soma das bases é maximizada.
Por exemplo, a solução para a amostra será:
6 8 10
porque nessas bases a sequência se torna 8 9 10
decimal - uma sequência estritamente crescente, e não somos capazes de encontrar bases para as quais a sequência permanece estritamente crescente e cuja soma é maior que 6+8+10
.
Devido à segunda limitação, uma solução 3 5 7
não é satisfatória: apesar de a sequência ficar 5 6 7
sob essas bases - precisamos maximizar a soma das bases, e 3+5+7 < 6+8+10
.
Se sob nenhuma base 2<=b<=10
é possível que a série aumente estritamente, por exemplo:
102 10000 10
solteiro
0
deve ser produzido.
A sequência de entrada pode ser passada da maneira que for mais conveniente para sua solução (parâmetros de entrada / linha de comando padrão / argumentos de função ...).
fonte
1 3 5
uma sequência crescente? Que tal1 7 22
? (na base 10)1 3 5
e1 7 22
ambos estão subindo na base 10. Portanto, a solução para ambos os casos é10 10 10
porque precisamos maximizar a soma de bases, assegurando que a sequência esteja subindo quando o n-ésimo número for interpretado como sendo escrito na base igual a n -ésimo termo da solução.1 1 1
ou3 3 4
não estão subindo.Respostas:
Pitão,
313029 bytes1 byte graças a @Jakube.
Demonstração. Equipamento de teste.
A entrada é fornecida no STDIN, com espaço separado. Se a entrada separada por nova linha for permitida, eu posso reduzir o programa em 2 bytes.
Explicação:
Incluir
1
na lista de possíveis bases é seguro porquei
, que usa oint
built-in do Python , não permite1
como base e, portanto, sempre gera um erro, que é capturado e filtrado.fonte
CJam, 43 bytes
Lê argumentos da linha de comando e imprime uma matriz.
Experimente on-line no intérprete CJam .
Exemplos
Como funciona
fonte
Julia,
1761561451181099997 bytesUngolfed:
Usado com uma entrada de matriz 1d. Se a função estiver atribuída
c
, você chamariac([12,11,10])
e sairia[6,8,10]
.Nota: Eu tinha usado
dec(i)
dentro do comando parseint, mas comoi
é um nome de variável de um caractere e não preciso acessar um componente, costumava"$i"
obter o mesmo resultado.fonte
c
, asc([12,11,10])
saídas[6,8,10]
serão as bases necessárias.[12 11 10]
vez de[12,11,10]
e isso deu o efeito indesejado.Julia,
259204183 bytesGuardou um monte com a ajuda de Glen O.
Ungolfed + explicação:
fonte
for i=M(A[1]):10,j=M(A[2]):10,k=M(A[3]):10 <code here>end;
, economizando oito para os dois se eliminadosend;
e oito para substituir `por` por,
.s=map(parseint,x,[i,j,k])
, economizando 18 bytes em relação à sua solução original e 10 em comparação com a melhoria sugerida anteriormente. E, em vez dissos==sort(unique(s))
, useall(diff(s).>0)
para salvar outros 3 bytes.CJam (39 bytes)
Essa é uma função anônima que recebe a entrada como uma matriz de números inteiros decimais na pilha e deixa a saída como uma matriz ou o número inteiro
0
na pilha. Demonstração online .fonte
19
não pode ser um número base 9).Python 2 (147 bytes)
Chame a função
x
com uma lista das entradas.Exemplo:
impressões
fonte