Contexte
Il est bien connu en mathématiques que les entiers peuvent être mis en correspondance biunivoque avec des paires d'entiers. Il existe de nombreuses façons de le faire, et dans ce défi, vous allez mettre en œuvre l'un d'entre eux et son fonctionnement inverse.
La tâche
Votre entrée est un entier positif n > 0
. On sait qu'il existe des entiers non négatifs uniques a, b ≥ 0
tels que . Votre sortie est la "version inversée" de , l'entier positifn == 2a * (2*b + 1)
n
2b * (2*a + 1)
.
Vous pouvez supposer que l'entrée et la sortie correspondent au type de données entier non signé standard de votre langue.
Règles et notation
Vous pouvez écrire soit un programme complet soit une fonction. Le nombre d'octets le plus bas l'emporte et les failles standard sont interdites.
Cas de test
Celles-ci sont données au format in <-> out
, car la fonction à implémenter est son propre inverse: si vous lui renvoyez la sortie, vous devriez obtenir l'entrée d'origine.
1 <-> 1
2 <-> 3
4 <-> 5
6 <-> 6
7 <-> 8
9 <-> 16
10 <-> 12
11 <-> 32
13 <-> 64
14 <-> 24
15 <-> 128
17 <-> 256
18 <-> 48
19 <-> 512
20 <-> 20
28 <-> 40
30 <-> 384
56 <-> 56
88 <-> 224
89 <-> 17592186044416
Classement
Voici un extrait de pile pour générer à la fois un classement régulier et un aperçu des gagnants par langue. Pour vous assurer que votre réponse apparaît, veuillez commencer votre réponse avec un titre, en utilisant le modèle Markdown suivant:
## Language Name, N bytes
où N
est la taille de votre soumission. Si vous améliorez votre score, vous pouvez conserver les anciens scores dans le titre, en les rayant. Par exemple:
## Ruby, <s>104</s> <s>101</s> 96 bytes
Si vous souhaitez inclure plusieurs nombres dans votre en-tête (par exemple, parce que votre score est la somme de deux fichiers ou si vous souhaitez répertorier les pénalités de drapeau d'interprète séparément), assurez-vous que le score réel est le dernier numéro de l'en-tête:
## Perl, 43 + 2 (-p flag) = 45 bytes
Vous pouvez également faire du nom de la langue un lien qui apparaîtra ensuite dans l'extrait de classement:
## [><>](http://esolangs.org/wiki/Fish), 121 bytes