Dans ce défi, vous calculerez des nombres à partir d'une séquence curieuse.
Votre entrée est un entier non décimal unique. Inversez les bits de cet entier, puis mettez le nombre au carré pour obtenir la sortie requise.
Lors de l'inversion des bits, vous ne devez pas utiliser de zéros de tête dans l'entrée. Par exemple:
26 (base 10) = 11010 (base 2) -> 01011 (base 2) = 11 -> 11*11 = 121
Les 25 premières entrées / sorties de cette séquence:
0: 0
1: 1
2: 1
3: 9
4: 1
5: 25
6: 9
7: 49
8: 1
9: 81
10: 25
11: 169
12: 9
13: 121
14: 49
15: 225
16: 1
17: 289
18: 81
19: 625
20: 25
21: 441
22: 169
23: 841
24: 9
Votre solution devrait fonctionner pour des entiers de taille arbitraire. Si votre langue ne dispose pas d'une méthode intégrée pratique pour les utiliser, implémentez votre réponse comme si c'était le cas. Vous êtes alors excusé si votre réponse casse pour les grands nombres. Cependant, n'utilisez pas d'astuces / limites qui ne fonctionnent que pour un domaine limité (comme une table de recherche).
Votre score est le nombre d'octets de code source.
-50% de bonus si vous ne convertissez jamais le nombre en / de binaire. Cela ne se limite pas aux prédéfinis, si vous bouclez sur le nombre bit par bit (soit en décalant ou en masquant ou toute autre méthode), cela comptera également comme conversion. Je ne sais pas si cela est réellement possible, mais cela incite à repérer un motif dans la séquence.
Le plus petit score l'emporte.
Réponses:
Par , 5 octets
C'est un carré binaire inversé en lecture.
la source
Mathematica,
4221 octetsMerci à alephalpha d'avoir réduit de moitié le score.
La vraie raison pour laquelle j'ai fait ça dans Mathematica était parce que je voulais regarder une intrigue ... ça a l'air vraiment drôle:
la source
Minkolang 0,14 , 43 octets
Merci à Mego d'avoir inspiré cela.
Testez le code ici et vérifiez tous les cas de test ici .
Explication
Cela utilise cette relation de récurrence:
Si
n
est l'entrée, alorsa(n)
est le nombre résultant après que sa séquence binaire a été inversée. 0 et 1 sont évidents. Poura(2n) = a(n)
, considérez quex0
(oùx
est n'importe quelle séquence de chiffres binaires) est inversé0x
, ce qui est le même quex
. Cara(2n+1)
, le raisonnement est un peu plus compliqué.x1
est inversé1x
, ce qui est égal àx + 2^k
pour certainsk
. C'estk
un de plus que le nombre de chiffresx
, ce qui estfloor(log_2(n))+1
. La formule complète suit, sauf qu'elle est un peu modifiée. Voici ce que je code réellement:Comme Mego et moi avons travaillé dans le chat,
floor(n/2) = (n - n%2)/2
. Ainsi,log_2(floor(n/2))+1 = log_2(n - n%2)
. De plus, la multiplication par(n%2)
réduit à la fois les parties impaires et paires en une seule expression.Enfin, sans plus tarder, voici le code, expliqué.
la source
2n
et2n+1
dans une relation de récurrence, vous devez immédiatement la considérer comme une boucle sur des bits.Japt ,
2928117 octets(Vous pouvez enregistrer le programme en tant que fichier codé IEC_8859-1 de 7 octets, puis le télécharger dans l' interpréteur .)
Japt est un raccourci JavaScript créé par ETHproductions .
Essayez-le en ligne!
Explication:
¢
est un raccourci versUs2
, qui se compile enU.s(2)
.U
est entrée (implicite),.s(2)
appelée par un nombre, invoque.toString(2)
(convertit en binaire, analyse comme chaîne).w
se compile en.w()
, ce qui inverse la chaîne (.split('').reverse().join('')
).n2
fonctionne commeparseInt(<number>,2)
, c.-à-d. convertit le binaire en décimal.²
invoqueMath.pow(<number>,2)
, c'est-à-dire met le nombre au carré.la source
n
, vous pouvez donc le faireUs2 a w a n2 p2
. Bon travail!w
la même sur les chaînes comme il le fait sur les tableaux, de sorte que vous n'avez pas besoin les deuxa
s :)Us2
=¢
, etp2
=²
, le ramenant à 7 octets:¢w n2 ²
Python, 32 octets
Essayez-le en ligne.
Le code est assez simple:,
bin(6)
par exemple, donne0b110
, la représentation binaire de 6.[:1:-1]
inverse la chaîne et supprime0b
.int
convertit la chaîne en un entier binaire et la met au**2
carré.la source
Jolf , 7 octets
Il suffit de l'exécuter. L'entrée sur la page ne fonctionne pas.
Explication
J'ai ajouté la
Q
commande, ce qui rend ces 6 octets:QC_Bj2
la source
TeaScript , 9 octets
11TeaScript est Javascript pour le golf
Jouera au golf une fois de retour sur mon ordinateur
Essayez-le en ligne!
Tout tester
la source
Sérieusement ,
87 octetsDes défis comme ceux-ci sont parfaits pour sérieusement :)
Essayez-le en ligne
Explication:
la source
J,
109 octetsIl s'agit d'un verbe tacite et monadique. Essayez-le en ligne!
Merci à @randomra d'avoir joué au golf sur 1 octet!
Comment ça fonctionne
la source
CJam, 10 octets
Essayez-le en ligne
la source
JavaScript,
64635653 octetsJe me rends compte que je suis extra long, mais bon, je peux le faire: P
Démo
la source
parseInt(
vous pouvez le faire+("0b"+
[...n.toString(2)]
et.join``
n=>+("0b"+[...n.toString(2)].reverse().join``)**2
. Ne fonctionne pas pour l'instant dans les navigateursPerl 6 , 21 octets
Exemple d'utilisation:
la source
PHP, 45 octets
la source
Coquille, 25
Entrée / sortie via STDIN / STDOUT:
la source
Pyth - 9 octets
Conversions simples. J'ai en fait assigné 2 à un var qui est assez bizarre.
Suite de tests .
la source
Pyth, 9 octets
Ceci est une réponse basée sur pyth très simple similaire à celle de Python
la source
𝔼𝕊𝕄𝕚𝕟, 12 caractères / 21 octets
Try it here (Firefox only).
Réponse non compétitive, 9 caractères / 18 octets
Try it here (Firefox only).
la source
Rubis, 35 octets
la source
TI-Basic (TI-84 Plus CE), 42 octets
la source