Você deve escrever um programa ou função que receba números inteiros como entrada e produza ou retorne dois números inteiros cuja soma é o primeiro.
Há um requisito adicional: nenhum número pode fazer parte da saída para duas entradas diferentes .
Detalhes
- Você deve poder manipular entradas para pelo menos o intervalo
-32768 .. 32767
(inclusive). - Se seu tipo de dados não pode lidar com números inteiros arbitrários, tudo bem, mas seu algoritmo deve funcionar para números grandes e pequenos arbitrários na teoria.
Exemplos
Cada bloco mostra uma parte de uma solução correta ou incorreta no 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 é um código de golfe, portanto a entrada mais curta vence.
Respostas:
Pitão, 8 bytes
Demonstração. Equivalente ao código Python 2:
Então, a saída tem forma
(-n**3, n+n**3)
Algumas saídas:
Elas são distintas porque os cubos são espaçados o suficiente para que a adição
n
den**3
não seja suficiente para atravessar a lacuna para o próximo cubo:n**3 < n+n**3 < (n+1)**3
para positivon
e simetricamente para negativon
.fonte
,
início, duas linhas parecem ser permitidas.J
tarefa suprima a impressão?-
em pyth não é o operador de negação unário, o seu_
, então_J^Q3+QJ
funciona como esperado.J
não estar do lado de fora. Obrigado por me cutucar sobre isso.Boneco de neve 0.1.0 , 101 caracteres
Entrada em STDIN, saída separada por espaço em STDOUT.
Isso usa o mesmo método da resposta de isaacg.
Versão comentada com novas linhas, para "legibilidade":
Comentário sobre a primeira solução do Snowman no PPCG: Acho que meu objetivo de tornar minha linguagem o mais confusa possível foi alcançado.
Na verdade, isso poderia ter sido muito mais curto, mas sou um idiota e esqueci de implementar números negativos para a análise de string -> number. Então eu tive que verificar manualmente se havia um
-
como o primeiro caractere e removê-lo, se houver.fonte
Pitão,
1511 bytes4 bytes graças a @Jakube
Demonstração.
Isso mapeia da seguinte maneira:
E assim por diante, sempre envolvendo
n^2
en^2 + n
, mais ou menos.fonte
APL, 15 bytes
Isso cria uma função monádica sem nome que retorna o par -n ^ 3 (
-⍵*3
), n + n ^ 3 (⍵+⍵*3
).Você pode experimentá-lo online .
fonte
Pitão -
1110 bytesApenas multiplica por
10e10 e -10e10 + 1Obrigado a @xnor por me mostrar que eu poderia usarCG
o número.Experimente online aqui .
fonte
CG
.O ,
17 159 bytesUsa alguns novos recursos do O.
Versão antiga
fonte
Python 3,
2927Editar: não atende ao requisito no segundo ponto "Detalhes"
Bônus: funciona de -99998 a 99998 inclusive
Isso cria uma função anônima *, que você pode usar colocando colchetes e depois colocando o argumento entre colchetes da seguinte forma:
* Obrigado a @ vioz- por sugerir isso.
Exemplo de entrada / saída:
fonte
f=
e deixá-lo como uma função anônima, que ainda é uma resposta válida. Então você pode tomar para baixo sua contagem de bytes a 27 :)(lambda n:[99999*n,-99998*n])(99999)
e(lambda n:[99999*n,-99998*n])(-99998)
irá colidir na teoria (e na prática).Haskell, 16 bytes
Copiei descaradamente o método do @ xnor. Provavelmente não há muito melhor que isso.
fonte