Tenemos una secuencia estrictamente creciente de enteros no negativos, como:
12 11 10
¡Espere! Esta secuencia no está aumentando estrictamente, ¿verdad? Bueno, los números están escritos en diferentes bases. La base menos posible es 2, la más grande es 10.
La tarea es adivinar las bases de cada número escrito, de modo que:
- la secuencia está aumentando estrictamente,
- La suma de las bases se maximiza.
Por ejemplo, la solución para la muestra será:
6 8 10
porque bajo esas bases la secuencia se vuelve 8 9 10
decimal, una secuencia estrictamente creciente, y no somos capaces de encontrar bases para las cuales la secuencia sigue siendo estrictamente creciente y cuya suma es mayor que 6+8+10
.
Debido a la segunda limitación, una solución 3 5 7
no es satisfactoria: a pesar de que la secuencia se encuentra 5 6 7
bajo esas bases, necesitamos maximizar la suma de las bases, y 3+5+7 < 6+8+10
.
Si bajo ninguna base 2<=b<=10
es posible que la serie aumente estrictamente, por ejemplo:
102 10000 10
soltero
0
debe ser de salida.
La secuencia de entrada se puede pasar de la manera que sea más conveniente para su solución (entrada estándar / parámetros de línea de comando / argumentos de función ...).
fuente
1 3 5
una secuencia ascendente? ¿Qué hay de1 7 22
? (en base 10)1 3 5
y1 7 22
ambos están subiendo por debajo de la base 10. Entonces, la solución para ambos casos es10 10 10
, porque necesitamos maximizar la suma de las bases mientras aseguramos que la secuencia aumenta cuando el enésimo número se interpreta como escrito en una base igual a n -th plazo de solución.1 1 1
o3 3 4
no están subiendoRespuestas:
Pyth,
313029 bytes1 byte gracias a @Jakube.
Demostración. Arnés de prueba.
La entrada se da en STDIN, espacio separado. Si se permite la entrada separada de nueva línea, puedo acortar el programa en 2 bytes.
Explicación:
Incluirlo
1
en la lista de posibles bases es seguro porquei
, que utiliza elint
incorporado de Python , no permite1
como base y, por lo tanto, siempre arroja un error, que se detecta y se filtra.fuente
CJam, 43 bytes
Lee argumentos de la línea de comandos e imprime una matriz.
Pruébelo en línea en el intérprete de CJam .
Ejemplos
Cómo funciona
fuente
Julia,
1761561451181099997 bytesSin golf:
Se usa con una entrada de matriz 1d. Si se asigna la función a
c
, entonces llamaríac([12,11,10])
y saldría[6,8,10]
.Nota: Lo había usado
dec(i)
dentro del comando parseint, pero comoi
es un nombre de variable de un solo carácter y no necesito acceder a un componente, solía"$i"
obtener el mismo resultado.fuente
c
, lasc([12,11,10])
salidas[6,8,10]
, que son las bases requeridas.[12 11 10]
lugar de[12,11,10]
y eso dio el efecto no deseado.Julia,
259204183 bytesSalvé un montón con la ayuda de Glen O.
Ungolfed + explicación:
fuente
for i=M(A[1]):10,j=M(A[2]):10,k=M(A[3]):10 <code here>end;
, ahorrando ocho para los dosend;
s eliminados y ocho para reemplazar `for` con,
.s=map(parseint,x,[i,j,k])
, ahorrando 18 bytes en relación con su solución original y 10 en comparación con mi mejora sugerida anterior. Y en lugar des==sort(unique(s))
, useall(diff(s).>0)
para guardar otros 3 bytes.CJam (39 bytes)
Esta es una función anónima que toma la entrada como una matriz de enteros decimales en la pila y deja la salida como una matriz o el entero
0
en la pila. Demo en línea .fuente
19
no puede ser un número base 9).Python 2 (147 bytes)
Llame a la función
x
con una lista de las entradas.Ejemplo:
huellas dactilares
fuente