Défi
Inspiré par cette vidéo
Comme vous le savez peut-être, un palindrome est un mot qui est orthographié de la même manière en avant qu'en arrière. Le mot "PULP" n'est pas un palindrome, mais lorsqu'il est traduit en code Morse (avec l'espacement entre les lettres supprimé), "PULP" devient ". - ...-.-...--." qui est un palindrome. Votre tâche consiste à écrire un programme ou une fonction qui prend une chaîne et renvoie si ce mot est un palindrome dans le code Morse international.
A: .-
B: -...
C: -.-.
D: -..
E: .
F: ..-.
G: --.
H: ....
I: ..
J: .---
K: -.-
L: .-..
M: --
N: -.
O: ---
P: .--.
Q: --.-
R: .-.
S: ...
T: -
U: ..-
V: ...-
W: .--
X: -..-
Y: -.--
Z: --..
Règles
Contribution
L'entrée peut être prise dans n'importe quel format raisonnable. La chaîne d'entrée ne contiendra que des lettres dans tous les cas que vous préférez. La chaîne ne contiendra pas d'espaces, de chiffres ou de ponctuation.
Production
Votre programme devrait produire 1 sur 2 résultats distincts constants selon que l'entrée est un palindrome, par exemple Vrai / Faux, 1/0, HOTDOG / NOTHOTDOG
Notation
C'est du code-golf donc la réponse la plus courte en octets gagne. Les failles standard sont interdites.
Cas de test
Entrée => Sortie
"PULP" => True
"RESEARCHER" => True
"HOTDOGS" => True
"" => True
"A" => False
"RACECAR" => False
"PROGRAMMING"=> False
"PUZZLES" => False
la source
Réponses:
Gelée , 28 octets
Essayez-le en ligne!
J'ai écrit cette réponse en regardant l'un d'eux (lisez les lignes de droite à gauche, et vous obtenez ma chaîne magique!):
la source
73,540,211,105,102,870,315,464,559,332nd
... quoi?! Comment avez-vous trouvé ce numéro? Comment cela ne prend-il pas une éternité pour fonctionner?00ABCDEFGHIJKLMNOPQRSTUVWXYZ
. Jelly a des fonctions intégrées pour convertir une permutation en un tel nombre, et un tel nombre en retour dans la permutation. Voir la base des nombres factoriels sur Wikipedia.00ABCDEFGHIJKLMNOPQRSTUVWXYZ
Gelée ,
35 32 2725 octets-2 merci à Dennis (décaler la permutation pour éviter
%32
)Prend la saisie en majuscules; la sortie est
1
pour vrai,0
pour faux.Essayez-le en ligne!Ou consultez la suite de tests .
Comment?
Solution précédente de 35 octets (prend également les entrées en majuscules) ...
la source
Dyalog APL , 24 octets
Essayez-le en ligne!
dfns
ne cesse d'étonnerla source
MBASIC , 325 octets
Première tentative, avant que les gros canons n'arrivent :-)
Production
la source
JavaScript (Node.js) , 111 octets
Essayez-le en ligne!
la source
Perl 6 , 87 octets
Essayez-le en ligne!
Convertit le mot en une série de 1 et de 0 et vérifie s'il est palindromique.
Explication:
la source
Python 3 ,
172148104 104 octetsPremier golf de code jamais. Veuillez être gentil et offrir toute aide :)
Ceci est basé sur la réponse C #: /codegolf//a/175126/83877 . J'ai pris les mêmes idées et je les ai appliquées à Python 3. J'ai fait de mon mieux pour jouer au golf avec le code, mais je suis sûr que je peux faire beaucoup plus.
EDIT 1: Merci @Stephen et @Cowabunghole de m'avoir aidé à supprimer des espaces et du code inutile.
EDIT 2: Merci @JoKing pour la suggestion de le faire en binaire. C'est une astuce vraiment sympa où «-» et «». ne sont même pas nécessaires. Cela a conduit à une énorme diminution d'octets.
Solution
Essayez-le en ligne!
la source
while i > 0:
pourwhile i>0:
sauver 2 octets. De plus, je peux me tromper, mais je pense que vous pouvez supprimer> 0
complètement et simplement utiliserwhile i:
. Deuxièmement, l'instruction dans la boucle while peut aller sur la même ligne que while, en enregistrant la nouvelle ligne et le retrait. Enfin, c'est un conseil terrible partout sauf lors du golf de code, mais si vous utilisez Python 2 au lieu de Python 3, vous pouvez économiser 1 octet d'utilisation/
au lieu de//
pour la division.~-i
place dei-1
. Il s'agit du même nombre d'octets, mais vous pouvez ensuite omettre les parenthèses, ce qui économise 2 octets.-
et.
. 105 octetsPyth,
3533 octetsLe code contient des caractères non imprimables, voici donc un vidage hexadécimal.
Essayez-le en ligne. Suite de tests.
Explication
À partir de
."
la fin du code, l'alphabet Morse est généré, avec des points comme\x08
et des tirets comme\x07
, et séparés par des tabulations.c
divise la chaîne par les onglets.XzG
traduit (X
) l'entrée (z
) de l'alphabet (G
) en cet "alphabet morse".s
additionne (joint) les symboles Morse ensemble. Pour les entrées vides, renvoie 0, mais ce n'est pas un problème._I
vérifie si le résultat ne change pas (I
) lorsqu'il est inversé (_
). Pour une entrée vide, vérifie si 0 ne change pas lorsqu'il est annulé.la source
Retina 0.8.2 , 87 octets
Essayez-le en ligne! Le lien inclut des cas de test. Explication:
Tous les codes Morse des lettres de cet ensemble se terminent par
.
.Tous les codes Morse des lettres de cet ensemble se terminent par
-
.Remplacez chaque lettre par la lettre dont le code Morse est le préfixe de cette lettre (ici
E
etT
sont simplement supprimés via le caractère non échappé_
, mais normalement ils seraient transformés en espaces). Par exemple,P
est le code Morse pourW
avec un extra.
à la fin; nous avons ajouté ce qui.
précède alors maintenant tout ce qui reste à faire est de décoder leW
.Répétez les étapes ci-dessus jusqu'à ce qu'il ne reste plus de lettres.
Si le premier et le dernier caractère sont identiques, supprimez-les tous les deux.
Répétez l'opération pour autant de caractères qui correspondent.
S'il s'agissait d'un palindrome, il ne reste plus qu'un personnage.
la source
Wolfram Language (Mathematica) , 107 octets
Essayez-le en ligne!
Semblable à cette réponse de Jelly: nous considérons le code Morse comme binaire et écrivons une chaîne
" ETIANMSURWDKGOHVF L PJBXCYZQ"
où la position d'un caractère, en binaire, nous donne son code Morse. Mais avec un 1 supplémentaire ajouté parce que nous voulons distinguerS = 000
etH = 0000
, par exemple. Se##2&@@@
débarrasse alors simultanément de ce 1 en tête et s'aplatit.la source
05AB1E , 37 octets
Essayez-le en ligne!
Encode l'alphabet en base 3, converti en base 255:
Base 255:
Ensuite, fondamentalement, je le sépare sur les 0, construit la chaîne par position et vérifie le palindrome.
la source
C # (.NET Core) , 191 octets
Essayez-le en ligne!
Une partie de cette réponse a été adaptée de golf à code morse Nick Larsen . Sur la base des commentaires sur la réponse, cela pourrait potentiellement être approfondi.
Non golfé:
la source
PowerShell ,
204187 octetsEssayez-le en ligne!
Erreurs sur la chaîne nulle ... Quelqu'un peut-il aider avec cela?
Code de test (après avoir encapsulé le code dans un bloc de script et affecté à la variable $ Z ...):
Production:
la source