Les semordnilaps (également appelés hétéropalindromes, semi-palindromes, demi-palindromes, reversgrams, mynoretehs, anagrammes réversibles, inversions de mots ou anadromes) sont des mots qui sont également des mots épelés à l'envers. Voici quelques exemples:
- Ward <=> Draw
- <=> Denim extrait
- Pièces <=> Sangle
Étant donné un entier positif N (via l'argument de fonction ou STDIN), retournez / sortez une liste de semordnilaps à partir de cette liste de mots anglais , qui ont exactement N lettres. La liste des mots peut être enregistré localement sur votre ordinateur sous forme de fichier texte appelé: w.txt
. Vous pouvez également obtenir la liste à partir de l'URL, mais elle sera incluse dans le nombre d'octets.
Règles:
- Les palindromes ne sont pas des semordnilaps! Par conséquent, les mots "midi", "rotor" et "radar" ne devraient pas être inclus dans la liste.
- Un seul des mots (dans une paire semordnilap) doit être inclus dans la liste. Par conséquent, si "chien" est dans la liste, "dieu" ne devrait pas l'être (peu importe lequel est inclus.)
- S'il n'y a pas de semordnilaps, la sortie doit être une chaîne vide, 0, FALSE ou quelque chose d'autre indiquant qu'il n'y a pas de résultats. La fonction doit fonctionner même s'il n'y a aucun résultat.
Il s'agit de code golf, donc le code le plus court en octets gagne!
Classement
L'extrait de pile au bas de cet article génère le catalogue à partir des réponses a) en tant que liste des solutions les plus courtes par langue et b) en tant que classement général.
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 que 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 code:
## [><>](http://esolangs.org/wiki/Fish), 121 bytes
Emordnilap
le plurielSemordnilap
? ;)Réponses:
Pyth , 23 (code 18, 5 STDIN nécessaires)
Il s'agit d'une solution assez simple.
J
stocke la liste des mots. Ensuite, nous filtrons la liste de mots (f J
) sur la longueur du mot étant l'entrée (qlTQ
), le mot inversé étant dans la liste (}_TJ
), et l'inversion du mot étant supérieure au mot (>_TT
). La dernière condition garantit qu'elleT
n'est pas palindromique et qu'une seule de la paire est imprimée. La liste résultante est imprimée.Le fonctionnement de Pyth, la seule façon d'ouvrir un fichier est de recevoir son nom sur STDIN. C'est pourquoi j'ai compté 5 octets STDIN
w.txt
dans ma partition.Exemple d'exécution:
la source
Rubis, 74 octets
Itère sur la liste en supprimant les éléments, ce qui évite les deux palindromes et produit à la fois des "stressés" et des "desserts". L'utilisation du même nom de variable pour la fonction et l'itérateur contourne une bizarrerie de syntaxe Ruby: même si elle
f=i.pop
est évaluée auparavantf.reverse
, la ligne ne sera pas analysée à moins qu'elle nef
signifie déjà quelque chose. Je pourrais aussi utiliserp
.la source
bash
134157118 octetsf () { comm -12 <(sort w.txt) <(rev w.txt|sort)|while read w; do ((${#w}==$1))&&[[ $w<$(rev<<<$w) ]]&&echo $w; done; }
Ce n'est pas une entrée sérieuse, mais plutôt en réponse à la réponse de Brian à Bash . C'est ainsi que j'ai tendance à penser à programmer ce genre de chose dans Bash - en utilisant Bash lui-même le moins possible et en laissant les outils intégrés faire tout le travail.
la source
&&[[ $w > $(rev<<<$w) ]]&& echo $w
toujours à évitersort|tail -1
. Avec cela, je pense que vous pouvez même supprimer le tri final et unique, car il supprime les palindromes et ne produit qu'un seul des mots.<(sort w.txt)
ça va.Python,
126125120 octetsSolution assez simple.
la source
k=c[::-1]
. De plus, ne pouviez-vous pas appelerset()
seulement la deuxième fois? Je ne pense pas qu'il y ait des répétitions dans le fichier?k
(9 pour la définition plus 1 pour la nouvelle ligne plus 1 pour l'espace), mais je n'enregistrerais que 10 caractères (retirez-en[::-1]
6 mais ajoutez 1 car j'ai alors besoin d'un espace). À propos de laset
, je doisJ
être un ensemble car j'en supprime les mots utilisés pour satisfaire la règle de non-dupeN==len(c)and
permet d' économiser un espace.=
- devrait l'être==
.CJam,
4847454238 octetsÉtant donné que l'URL doit être comptée, j'utilise le même raccourcisseur d'URL que l'Optimizer.
Le
§
fait partie de l'ASCII étendu, de sorte que chaque caractère du code peut être codé dans un seul octet.Comme dans le cas d'Optimizer, vous devrez utiliser l' interpréteur Java et l'exécuter localement à partir d'un fichier, par exemple
semordnilap.cjam
, puisdonc l'entrée est donnée comme argument de ligne de commande.
Comment ça marche (un peu dépassé):
La chaîne résultante est automatiquement imprimée à la fin du programme.
la source
Java,
280218 octetsPar rapport au reste de la compétition, je n'ai absolument aucune idée si c'est un bon score.
Étendu:
Utilise compareTo () pour ignorer simultanément les palindromes et les doublons.
la source
Files.readAllLines(Paths.get("w.txt"))
auparavant. C'est une astuce utile.CJam, 68 octets
Vous devrez télécharger la version Java du compilateur à partir d' ici et enregistrer le code ci-dessus dans un fichier appelé words.cjam (peut être n'importe quel nom). Ensuite, exécutez le code comme
Par exemple, pour
N = 8
,la source
Node.js, 172 octets
Une fonction:
Essai:
la source
K, 59 octets
Assez simple. Lisez la liste, construisez la liste inversée, prenez leur intersection, filtrez les palindromes, filtrez le nombre requis, triez et dédupliquez les paires.
la source
Rubis, 95 octets
Explication
Integer
.String
(a
).Array
de tous les mots (sans retour à la ligne).a
.Array
l
.l
.Un vide
Array
est retourné quand aucun mot de qualification n'a été trouvé.la source
Node.js, CoffeeScript, 132 octets
Node.js, 162 octets
Console Chrome Dev Tools, 111 octets (sur la page de téléchargement)
Toutes les versions renvoient un tableau de tous les semordnilaps de longueur
n
.Node.js, 162 octets
Imprime tous les semordnilaps:
la source
Julia, 101 octets
Cela devrait réellement fonctionner ...
la source
Mathematica, 105 octets
Parfois, Import divise automatiquement le texte en liste de liste de lignes ou le traite comme CSV ou TSV. À d'autres moments, Import lira le contenu du fichier dans une chaîne. Import a fait ce dernier pour les données de test.
la source
FRAPPER
tests ...
la source