Attention: ce n'est PAS un défi "hé, dessinons un gâteau en art ASCII"! Continuez à lire;)
Il y a quelque temps, c'était mon anniversaire, j'ai 33 ans maintenant.
Il y a donc cette tradition sociale maladroite consistant à inviter la famille et les amis, à mettre des bougies numériques sur un gâteau, à chanter des chansons et à ouvrir des cadeaux.
33
--------
Au lieu de chiffres, je peux utiliser le système binaire pour mettre des bougies standard: j'en place 6 sur le gâteau et j'en allume deux.
100001
--------
Je peux voir que les nombres décimaux et binaires de mon âge sont palindromiques!
Défi
Je veux savoir si un autre nombre peut être mis sur un gâteau avec des bougies et être palindromique, décimal et binaire.
Écrivez un programme / une fonction pour tester si un nombre est palindromique à la fois décimal et binaire. Mais attendez, il y a plus: en binaire, les zéros de tête comptent pour le test!
Contribution
Un nombre décimal x que je veux tester s'il est palindromique d'anniversaire avec 0 <x <2 32 -1 (oui, les gens dans ma dimension vivent très longtemps)
Sortie
Vrai s'il remplit exactement ces deux conditions, Falsey d'autre:
- La représentation décimale du nombre est un palindrome standard
- La représentation binaire du nombre est un palindrome standard, et l'ajout de zéros à gauche peut aider à cela
Cas de test
1 > 1 => Truthy
6 > 110 (0110) => Truthy
9 > 1001 => Truthy
10 > 1010 (01010) => Falsey, 10 is not palindromic
12 => 1100 (001100) => Falsey, 12 is not palindromic
13 => 1101 (...01101) => Falsey, neither 13 nor 1101 are palindromic
14 => 1110 (01110) => Falsey, 14 is not palindromic
33 > 100001 => Truthy
44 > 101100 (..0101100) => Falsey, 101100 is not palindromic
1342177280 > 1010000000000000000000000000000 (00000000000000000000000000001010000000000000000000000000000) => Falsey, 1342177280 is not palindromic (but the binary representation is)
297515792 > 10001101110111011101100010000 (000010001101110111011101100010000) => Truthy
Règles
- Les failles standard sont interdites
- Les conversions et tests de bibliothèque intégrés sont autorisés
- C'est le code-golf , le gain de code le plus court!
Bonne chance et finalement joyeux anniversaire!
la source
0b01010000000000000000000000000000
n'est-il pas palindromique car il faudrait ajouter plus de zéros et donc dépasser 2 ^ 32-1? Dans ce cas, il serait utile d'ajouter quelque chose comme1342177280
un cas de test falsey.1342177280
n'est pas palindromique décimal donc Falsey. MontageRéponses:
05AB1E , 7 octets
Essayez-le en ligne! ou comme suite de tests
Explication
la source
Python 3 , 59 octets
Essayez-le en ligne!
-3 octets grâce à Rod
-3 octets grâce à Connor Johnston
la source
JavaScript (ES6), 65 octets
Renvoie
0
ou1
.Comment?
La fonction d'aide g () prend un entier b en entrée et teste si n est un palindrome en base b . Si b n'est pas spécifié, il convertit simplement n en une chaîne avant de le tester.
Nous nous débarrassons des zéros de fin dans la représentation binaire de n en isolant le 1 le moins significatif avec
n&-n
et en divisant n par la quantité résultante.Fait amusant: c'est vrai
0
parce que c'est(0/0).toString(2)
égal"NaN"
, ce qui est un palindrome. (Mais ce0
n'est pas une entrée valide de toute façon.)Cas de test
Afficher l'extrait de code
la source
Mathematica,
5249 octetsEssayez-le sur Wolfram Sandbox
Usage
Explication
Version avec intégré
PalindromeQ
la source
Pyth - 13 octets
Suite de tests .
la source
_MI
etjQ2
enregistrer 2 octets:_MI,.sjQ2Z`
Japt , 14 octets
Testez-le en ligne!
Explication
la source
sêQ *(¢w)sêQ
etsêQ &¢w n sêQ
297515792
(le binaire inversé converti en décimal est tout simplement trop gros pour que JS puisse le gérer) ...Proton , 57 octets
Essayez-le en ligne!
la source
APL,
2731 octetsComment ça marche? Utiliser 6 comme argument ...
Essayez-le sur TryAPL.org
la source
{(⌽¨≡⊢)⍕¨⍵,⊂(⌽↓⍨~⊥~)2⊥⍣¯1⊢⍵}
(il est bon de fournir un lien pour exécuter toute la suite de tests)Gelée , 8 octets
Essayez-le en ligne!
la source
ȧ
oua
au lieu deµ
parce que sinon ce sera toujours vrai.Brachylog , 7 octets
Essayez-le en ligne!
Ça fait beaucoup de
↔
...Explication
Avec l'entrée et la sortie implicites, le code est:
?↔?ḃc↔.↔.
la source
APL (Dyalog Classic) , 26 octets
Explication
Essayez-le en ligne!
la source
Perl, 53 +3 (-pal) octets
essayez-le en ligne
la source
Pyt , 10 octets
Renvoie [1] si vrai, [0] si faux
Essayez-le en ligne!
Explication:
la source
Rétine , 72 octets
Essayez-le en ligne! Le lien inclut des cas de test. Fonctionne en créant un doublon unaire du numéro d'origine, mais en utilisant
_
s pour qu'il ne soit pas confondu par exemple par une entrée de11
. Le nombre unaire est ensuite converti en "binaire" et les zéros de fin sont supprimés. Les palindromes sont ensuite tronqués successivement et la dernière étape vérifie s'il reste quelque chose.la source
Mathematica, 70 octets
la source
Husk , 14 octets
Essayez-le en ligne!
Non golfé / Explication
la source
Gaia , 10 octets
Essayez-le en ligne!
Explication
Au lieu de vérifier avec les zéros de tête en binaire, je vérifie sans les zéros de fin.
la source
C (gcc) , 105 octets
Essayez-le en ligne!
la source
return
parn=
. ( 95 octets. )C # (.NET Core) ,
130129179173 + 23 octetsquelques petites choses, merci à Ed Marty d'avoir souligné que je dois vérifier autant de 0 rembourrés devant pour un palindrome. Et je dois m'assurer que je peux vérifier jusqu'à x ^ 32 -1.
Essayez-le en ligne!
la source
return
et(
pour 129 octetsusing System;
etusing System.Linq
Python 2 , 56 octets
Essayez-le en ligne!
Utilise la
strip
méthode de Python pour supprimer à la fois le début de labin(..)
sortie du0b
et les zéros de fin du nombre binaire (car ils auront toujours un bit correspondant).la source
Pyth ,
2522191817 octets-
3678 octets en apprenant davantage la langueExplication:
Je suis sûr que cela peut être joué au golf, je vais y travailler.
Suite de tests
la source
PHP, 69 + 1 octets
Exécuter en tant que pipe avec
-nR
Echoes l'entrée d'origine pour Vrai / Rien pour Falsey
Essayez-le en ligne!
la source
Octave ,
6866 octetsEssayez-le en ligne!
Offre initiale d'Octave.
Nous créons essentiellement un tableau contenant le nombre sous forme de chaîne décimale et le nombre sous forme de chaîne binaire avec les 0 de fin supprimés. Ensuite, nous créons un tableau avec le même pour les chaînes mais avec les nombres binaires et décimaux inversés. Enfin, les deux tableaux sont comparés et le résultat est soit vrai s'ils correspondent (les deux palindromes), soit faux s'ils ne le sont pas (l'un ou les deux ne sont pas des palindromes).
flip
au lieu defliplr
.la source
APL2 (pas Dyalog), 36 octets
Soit d'abord B la représentation 32 bits de N:
Puis miroir B et trouver la position du 1er 1:
Supprimez ensuite autant de positions de B. Cela préservera le nombre correct de 0 en tête.
Ensuite, effectuez FIND et une réduction OR pour voir si le B recadré contient son propre miroir.
Regardons maintenant N, la décimale. L'expression entre crochets la plus à gauche convertit N en un vecteur de caractères et vérifie si elle correspond à son propre miroir.
Enfin, un ET rejoint les deux contrôles.
Dans APL2, je ne peux pas faire une lambda soignée, j'ai donc écrit une doublure et inclus la flèche d'affectation. J'espère que ce n'est pas de la triche.
la source
⎕
) pour en faire un programme complet à la place? De plus, pouvez-vous raccourcir(N≡⌽N←⍕N)^∨/(B↓⍨1⍳⍨⌽B)⍷B←(32⍴2)⊤N←⎕
?Java 8,
105104 octetsExplication:
Essayez-le ici.
la source