Debe escribir un programa o función que reciba un número entero como entrada y salida o que devuelva dos enteros cuya suma sea la primera.
Hay un requisito adicional: ningún número puede ser parte de la salida para dos entradas diferentes .
Detalles
- Debería poder manejar entradas para al menos el rango
-32768 .. 32767
(inclusive). - Si su tipo de datos no puede manejar números enteros arbitrarios, está bien, pero su algoritmo debería funcionar para números arbitrarios grandes y pequeños en teoría.
Ejemplos
Cada bloque muestra una parte de una solución correcta o incorrecta en el formato de input => output
.
1 => 6 -5
2 => -2 4
15 => 20 -5
Incorrect, as `-5` is used in two outputs.
-5 => -15 10
0 => 0 0
1 => 5 6
2 => -5 7
Incorrect, as `5 + 6` isn't `1`.
-1 => -1 0
0 => 6 -6
2 => 1 1
Can be correct if other outputs doesn't collide.
Este es el código de golf por lo que gana la entrada más corta
Respuestas:
Pyth, 8 bytes
Demostración. Equivalente al código Python 2:
Entonces, la salida tiene forma
(-n**3, n+n**3)
Algunas salidas:
Estos son distintas porque cubos están lo suficientemente espaciadas que la adición
n
an**3
no es suficiente para cruzar la brecha a la siguiente cubo:n**3 < n+n**3 < (n+1)**3
para el positivon
, y simétricamente para el negativon
.fuente
,
al principio, parece que se permiten dos líneas.J
tarea suprime la impresión?-
en pyth no es el operador de negación unario, es_
así que_J^Q3+QJ
funciona como se esperaba.J
que no esté afuera. Gracias por molestarme por esto.Muñeco de nieve 0.1.0 , 101 caracteres
Entrada en STDIN, salida separada por espacios en STDOUT.
Esto usa el mismo método que la respuesta de Isaac.
Versión comentada con nuevas líneas, para "legibilidad":
Comentario sobre la primera solución de Snowman en PPCG: creo que se ha logrado mi objetivo de diseño de hacer que mi lenguaje sea lo más confuso posible.
En realidad, esto podría haber sido mucho más corto, pero soy un idiota y olvidé implementar números negativos para el análisis de cadena -> número. Así que tuve que verificar manualmente si había un
-
como primer carácter y eliminarlo si es así.fuente
Pyth,
1511 bytes4 bytes gracias a @Jakube
Demostración.
Esto se asigna de la siguiente manera:
Y así, en adelante, siempre involucrando
n^2
yn^2 + n
, más o menos.fuente
APL, 15 bytes
Esto crea una función monádica sin nombre que devuelve el par -n ^ 3 (
-⍵*3
), n + n ^ 3 (⍵+⍵*3
).Puedes probarlo en línea .
fuente
Pyth -
1110 bytesSimplemente se multiplica por
10e10 y -10e10 + 1Gracias a @xnor por mostrarme que podría usarCG
el número.Pruébelo en línea aquí .
fuente
CG
.O ,
17 159 bytesUtiliza algunas características nuevas de O.
Versión antigua
fuente
Pitón 3,
2927Editar: no cumple con el requisito en la segunda viñeta "Detalles"
Bonificación: funciona desde -99998 hasta 99998 inclusive
Esto crea una función anónima *, que puede usar entre corchetes y luego colocando el argumento entre paréntesis después de esta manera:
* Gracias a @ vioz- por sugerir esto.
Ejemplo de entrada / salida:
fuente
f=
y dejarlo como una función anónima, que sigue siendo una respuesta válida. Entonces puede reducir su conteo de bytes a 27 :)(lambda n:[99999*n,-99998*n])(99999)
y(lambda n:[99999*n,-99998*n])(-99998)
colisionará en teoría (y en la práctica).Haskell, 16 bytes
Copié descaradamente el método de @xnor. Probablemente no haya mucho mejor que esto.
fuente