Vous devez écrire un programme ou une fonction qui reçoit un entier en entrée et génère ou renvoie deux entiers dont la somme est la première.
Il y a une autre exigence: aucun nombre ne peut faire partie de la sortie pour deux entrées différentes .
Détails
- Vous devriez être capable de gérer les entrées pour au moins la plage
-32768 .. 32767
(incluse). - Si votre type de données ne peut pas gérer des nombres entiers arbitraires, c'est bien, mais votre algorithme devrait fonctionner en théorie pour les grands et les petits nombres arbitraires.
Exemples
Chaque bloc montre une partie d'une solution correcte ou incorrecte au format 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.
C'est le golf de code, donc l'entrée la plus courte gagne.
Réponses:
Pyth, 8 octets
Manifestation. Équivalent au code Python 2:
Ainsi, la sortie a la forme
(-n**3, n+n**3)
Quelques sorties:
Celles-ci sont distinctes car les cubes sont suffisamment espacés que l'ajout
n
àn**3
n'est pas suffisant pour traverser l'espace vers le cube suivant:n**3 < n+n**3 < (n+1)**3
pour le positifn
et symétriquement pour le négatifn
.la source
,
au début, deux lignes semblent être autorisées.J
affectation supprime l'impression?-
en pyth n'est pas l'opérateur de négation unaire, son_
,_J^Q3+QJ
fonctionne donc comme prévu.J
de ne pas être à l'extérieur. Merci de m'avoir poussé à ce sujet.Snowman 0.1.0 , 101 caractères
Entrée sur STDIN, sortie séparée par des espaces sur STDOUT.
Cela utilise la même méthode que la réponse de isaacg.
Version commentée avec des nouvelles lignes, pour "lisibilité":
Commentaire sur la toute première solution Snowman sur PPCG: Je pense que mon objectif de conception de rendre mon langage aussi déroutant que possible a été atteint.
En fait, cela aurait pu être beaucoup plus court, mais je suis un idiot et j'ai oublié d'implémenter des nombres négatifs pour la chaîne -> l'analyse des nombres. J'ai donc dû vérifier manuellement s'il y avait un
-
comme premier caractère et le supprimer si c'est le cas.la source
Pyth,
1511 octets4 octets grâce à @Jakube
Manifestation.
Cela correspond comme suit:
Et ainsi de suite, impliquant toujours
n^2
etn^2 + n
, plus ou moins.la source
APL, 15 octets
Cela crée une fonction monadique sans nom qui renvoie la paire -n ^ 3 (
-⍵*3
), n + n ^ 3 (⍵+⍵*3
).Vous pouvez l' essayer en ligne .
la source
Pyth -
1110 octetsMultiplie simplement par
10e10 et -10e10 + 1Merci à @xnor de m'avoir montré que je pouvais utiliserCG
pour le nombre.Essayez-le en ligne ici .
la source
CG
.O ,
17 159 octetsUtilise quelques nouvelles fonctionnalités de O.
Ancienne version
la source
Python 3,
2927Modifier: ne répond pas à l'exigence du 2e point "Détails"
Bonus: cela fonctionne de -99998 à 99998 inclus
Cela crée une fonction anonyme *, que vous pouvez utiliser en plaçant entre crochets puis en plaçant l'argument entre crochets comme ceci:
* Merci à @ vioz- de l'avoir suggéré.
Exemple d'entrée / sortie:
la source
f=
et le laisser comme une fonction anonyme, ce qui est toujours une réponse valide. Ensuite, vous pouvez réduire votre nombre d'octets à 27 :)(lambda n:[99999*n,-99998*n])(99999)
et(lambda n:[99999*n,-99998*n])(-99998)
se heurteront en théorie (et en pratique).Haskell, 16 octets
J'ai copié sans vergogne la méthode de @ xnor. Il n'y a probablement rien de mieux que cela.
la source