C'est devenu une sorte de tradition dans PPCG que certains utilisateurs changent temporairement leurs noms par un anagramme (un nouveau nom formé en réorganisant les lettres de l'ancien).
Parfois, il est difficile de savoir qui est qui. Je pourrais utiliser un programme ou une fonction pour dire si deux phrases sont des anagrammes l'une de l'autre.
Le défi
Le programme ou la fonction doit prendre deux chaînes et produire un résultat véridique s’il s’agit d’anagrammes, et fausser autrement.
Règles
- Les entrées ne contiendront que des lettres (ASCII 65 à 90 et 97 à 122), des chiffres (ASCII 48 à 57) ou des espaces (ASCII 32).
- La relation anagramme est indépendante du cas. Donc, "Arm" et "RAM" sont des anagrammes.
- Les espaces ne comptent pas non plus. Donc, "clavier" et "Barked Yo" sont des anagrammes
- Toutes les tâches autorisées
- Le format de saisie est flexible (deux chaînes, un tableau de deux chaînes, une chaîne contenant les deux phrases avec un séparateur approprié ...)
Code de golf. Le moins d'octets gagne.
Cas de test
Vérité
Lynn, Nyl N
Digital Trauma, Tau Digital Arm
Sp3000, P S 3000
Manage Trash So, Those anagrams
Fausseté
Calvins Hobbies, Helka Homba
Android, rains odd
In between days, bayed entwine
Code golf, cod elf got
code-golf
string
decision-problem
permutations
Luis Mendo
la source
la source
Manage Trash So, Those anagrams
. Agréable.So, the anagrams...
Réponses:
05AB1E ,
9 à8 octetsCode:
Explication:
Essayez-le en ligne!
la source
lvyðK{}Q
maintenant.Rétine, 25
Essayez-le en ligne! De plus, vous pouvez exécuter une version multiligne modifiée .
Supprimez les lettres d'avant la virgule et leurs correspondances après la virgule. S'il ne restait plus de lettres, il s'agissait d'un anagramme.
la source
\w
la dernière étape.\W
ne fonctionnera pas pour le cas de:Calvins Hobbies, Calvin's Hobbies
Pyth,
11 à10 octetsMerci à @FryAmTheEggman de m'avoir appris le pouvoir de
;
!Essayez-le ici!
Prend une liste de deux chaînes en entrée.
Explication
la source
Python 2,
6361 octetsUne fonction anonyme qui, en fait, prend n arguments et détermine si tous n d'entre eux sont des palindromes mutuels!
f("Lynn", "Nyl N")
retourneTrue
.Cette astuce de compréhension d'ensemble est de xnor. Cela économise deux octets, mais l'ancienne approche semblait très nette:
la source
`sorted(input().lower())`.strip(" [',")
est la même longueur: /exec
chose est intelligente mais semble trop complexe. Vous pouvez faire mieux aveclambda*l:len({`sorted(s.lower())`[2::5].strip()for s in l})<2
.Gelée, 12 octets
Essayez-le en ligne!
Comment ça marche
Version alternative, non concurrente (9 octets)
L'atome majuscule de Jelly avait un bug, et Jelly n'avait toujours pas de fonction intégrée pour tester l'égalité des listes ...
Essayez-le en ligne!
Comment ça marche
la source
CJam, 11
1214octets3
2octets supprimés grâce à @FryAmTheEggmanEssayez-le en ligne!
la source
lel
.lel
==>1e1
Personne ne sait. C'est un mystère.Javascript,
69616059 octets1 octet off grâce @ ӍѲꝆΛҐӍΛПҒЦꝆ . 1 octet avec currying ( signalé par @apsillers )
Afficher l'extrait de code
la source
n=>m=>...
n=>m=>(G=s=>[]+s.toLowerCase().split(/\S/).sort())(n)==G(m)
. Utiliser split au lieu de match devrait vous faire économiser un octet.s='db cz'
... Maintenant résultats en ... et les résultats ens.match(/\S/g)
.sort()
['b','c','d','z']
s.split(/\s/).sort()
['cz','db']
MATL , 11 octets
EDIT (20 mai 2016) Le code dans le lien utilise à la
Xz
place deXv
, en raison de changements récents dans la langue.Essayez-le en ligne!
la source
Sérieusement,
119 octetsEssayez-le en ligne!
Tout le monde semble utiliser le même algorithme. La voici encore une fois.
Edit: le tri réalisé fonctionne correctement sur les chaînes et trie les espaces au début afin que strip () fonctionne.
la source
C, 165 octets
Lisible et en contexte de travail,
la source
zsh, 85 octets
Saisie en tant qu'argument de ligne de commande, sortie en tant que code retour.
La
for
syntaxe rend ce Bash incompatible.la source
Japt, 12 octets
Testez-le en ligne!
Comment ça marche
la source
GNU Sed, 33
Le score inclut +2 pour les
-rn
options à sed.Ceci est presque un port direct de la réponse de la rétine de @ FryAmTheEggman :
Idéone.
la source
Perl,
3433 + 1 = 34 octetsNécessite le
-n
drapeau et la gratuité-M5.010
|-E
:Comment ça marche:
Merci à msh210 d’ avoir suggéré d’utiliser des opérateurs ternaires pour économiser un octet
la source
Baloch Gyr , 9 octets
Essayez-le en ligne!
Le résultat de la vérité / de la fausseté est obtenu par le succès / l’échec d’un prédicat, c’est le Brachylog.
Auparavant enregistré un octet en utilisant
cṇ₁cḷḍ
au lieu de{ṇ₁cḷ}ᵐ
sous l'hypothèse que les deux chaînes d'entrée auraient la même longueur moins les espaces, mais je me suis rendu compte que cela réussirait là où il échoueraitAh Hass, haha
.la source
PHP,
10994 octetsBlech, les deux
function/return
s me tuent ici.Renvoie la différence entre deux
string
entrées sous formearray
de caractères. PHP considère la[]
fausseté, satisfaisant lesreturn
exigences.la source
function($x,$y){$S=str_split;return array_diff($S(trim($x)),$S(trim($y)));}
-> 75 octets. Crée une fonction anonyme qui renvoie le résultat. J'ai supprimé cette fonction longue et remplacé les appels àstr_split
par une variable assignmed, pour la raccourcir.Utilitaires Bash + GNU, 51
f()
qui:${@^^}
convertit tous les paramètres en majusculesfold -1
divise les caractères - un par lignesort
lignes sdiff
avec-q
pour supprimer la sortie diff complète et-Bw
pour ignorer les changements d'espacesla source
Pyke (commit 30, non compétitif), 9 octets
Explication:
la source
Mathematica,
7776 octetsLa première partie est en fait une de mes réponses à une autre question!
la source
Pike,
5411210910996 octetsmixed
se trouve être plus court quearray(string)
.s
retourne1
si ses arguments sont des anagrammes.la source
Q, 25 octets
NOTE.- compte compter le nom de la fonction f: pour faciliter les tests (comme lambda nous pouvons décrémenter 2 octets)
Version lisible
correspondance sur {ascendant non nul inférieur x} chaque x
Tester
génère (1b = vrai, 0b = faux)
À propos de Q
Langage polyvalent (dérivé APL, spécialisé dans le traitement de données) développé par kx.com. Version d'évaluation fonctionnelle complète gratuite pour Windows / Linux / MacOS.
la source
f
est requis pour que le code soit évalué correctement, il doit être compté. Sinon, laissez simplement votre code de soumission et ne l'utilisez que dans des exemples pour montrer comment attribuer la fonction.k)~/{x@<x:_x@&~^x}'
pour 17 octets .. mais je dirais qu'il est 19 car vous avez besoin duk)
support, car il s'agit d'unK
code plutôt queQ
...APL, 31 caractères
A utiliser ainsi:
En anglais:
{ ... }¨⍵
: pour chacun des deux éléments de l'argumentx←('.'⎕R'\u0')⍵~' '
: transformer en majuscule (en utilisant une expression rationnelle ...) la chaîne sans les espaces et assigner le résultat temporaire àx
x[⍋x]
: trier x≡/
: comparez les deux résultats du tri: s'ils correspondent, retournez 1.la source
f 'first avatar' 'second avatar'
≡/{x[⍋x←0~⍨32|⎕UCS⍵]}¨
≡/{x[⍋x←0~⍨32|⎕UCS⍵]}¨'pp' '00'
Java, 218 octets
La première fois que j'ai écrit Java ...
Golfé:
Ungolfed:
Essai:
la source
boolean f(String...a){java.util.Arrays x=null;String[]A=g(a[0]),B=g(a[1]);x.sort(A);x.sort(B);return x.equals(A,B);}String[]g(String a){return a.replace(" ","").toUpperCase().split("");}
( 186 octets ). Ou, si vous le convertissez en Java 8 lambda, cela peut être:a->b->{java.util.Arrays x=null;String[]A=g(a),B=g(b);x.sort(A);x.sort(B);return x.equals(A,B);};String[]g(String a){return a.replace(" ","").toUpperCase().split("");}
( 167 octets ). Voici un TIO avec code de test.Japt , 10 octets
L'essayer
la source
Ruby, 50 octets
L'écriture
f=->{...}
etf[]==f[]
est tout aussi longue. :(la source
PowerShell, 81 octets
Une légère réécriture de ma réponse sur le défi lié Anagram.
Prend les entrées sous forme de tableaux de caractères, effectue une
-replace
opération pour supprimer les espacessort
(les trie par ordre alphabétique et non par valeur ASCII), puis-join
les reconstitue en chaîne. Dans-eq
PowerShell, la casse est respectée par défaut, mais ici, elle doit être effectuée sur des chaînes, car elle[char]'a'
n’est pas égale à[char]'A'
, d’où la raison-join
.la source
Perl, 35 octets
Inclure +1 pour
-p
Un peu abusif car cela dépend du programme donné sur la ligne de commande.
Puis donnez les chaînes comme 2 lignes consécutives sur STDIN
Une solution très abusive est 30 octets:
Cela se bloque si les chaînes ne sont pas des anagrammes et donne donc un faux code de sortie du point de vue du shell. Il donne également des ordures sur STDERR pour ce cas. Si les chaînes sont des anagrammes, le programme est muet et donne un "vrai" code de sortie
la source
PHP , 89 octets
Essayez-le en ligne!
PHP , 94 octets
Essayez-le en ligne!
la source
Excel VBA, 122 octets
Fenêtre immédiate VBE anonyme Fonction qui prend des entrées de la plage
[A1:B1]
et les envoie à la fenêtre immédiate VBEla source
C #, 378 octets
J'ai besoin d'un handicap !!
https://dotnetfiddle.net/FNDt0E
la source
#
à la première ligne. De même, pour les questions de code-golf, il est nécessaire de jouer au golf dans votre programme. Pour commencer, vous devez supprimer les espaces inutiles et utiliser des noms de variable à un caractère. En outre, vous pouvez toujours utiliser une fonction au lieu d'un programme complet (sauf interdiction explicite) pour enregistrer davantage d'octets.