Défi
Si vous avez deux chaînes, déterminez si elles contiennent exactement les mêmes caractères.
Exemple
Contribution
mot, wrdo
Cela retourne true
parce qu'ils sont identiques mais simplement brouillés.
Contribution
mot, wwro
Cela revient false
.
Contribution
bateau, toba
Cela retourne true
Règles
Voici les règles!
- Supposons que la longueur d'entrée soit d'au moins 1 caractère et d'au plus 8 caractères.
- Pas de caractères spéciaux, seulement
a
-z
- On peut supposer que toutes les entrées sont en minuscules
Cas de test
boat, boat = true
toab, boat = true
oabt, toab = true
a, aa = false
zzz, zzzzzzzz = false
zyyyzzzz, yyzzzzzy = true
sleepy, pyels = false
p,p = true
code-golf
string
permutations
Tom Gullen
la source
la source
Réponses:
Python, 32 octets
la source
def f(a,b):return sorted(a)==sorted(b)
le compromis est que vous devez remplacer def + return par lambda en échange de ne pas utiliser de déclarationsGolfscript, 3 caractères?
usage:
la source
'
).J, 8
Littéralement, match (
-:
) sur (&
) trier (/:~
)Exemple d'utilisation:
Où entrent les entiers 64 bits?
la source
v arg
(monades), soit deux des deux côtés, comme dansarg1 v arg2
(dyades). Celui que j'ai soumis est évidemment une dyade. Je n'ai pas pris la peine de le nommer, car il n'était pas demandé et est plus court de cette façon. Si vous voulez vraiment lui donner un nom, faites-le comme ceci:is_anagram_of =: -:&(/:~)
et utilisez ensuite'a' is_anagram_of 'aa'
.Javascript,
192157152147125 octetsOk, certaines de ces langues sont beaucoup plus flexibles que je ne le pensais! Quoi qu'il en soit, je suppose que c'est le chemin le plus long, mais au moins une technique différente.
Comprimé
Merci à Peter et David d’avoir envoyé plus de personnages!
Alors fais:
Code développé
La compression a eu beaucoup de changements, mais ceci est la théorie de base:
la source
a=[2];for(p=3,j=0;j<26;)if(a[j]){if(p%a[j++]==0){p++;j=0}}else{a[j]=p;j=0}
for(a=[j=p=2];j<123;)a[j]?p%a[++j]<1&&p++&&(j=0):(a[j]=p,j=0);function b(c,i){return c[i=i||0]?a[c.charCodeAt(i)]*b(c,++i):1}
Golfscript, 8 octets
Ceci définit une fonction appelée
A
Cas de test
la source
Haskell, 31 octets
fonction - 31
programme -
815855Usage:
Bravo à Lambdabot et à sa refactorisation sans aucun problème .
la source
perl
encore appelé un "programme"? :-)x#y=sort x==sort y
est 1 caractère plus courtC #, 129 caractères
Lisible:
la source
using System.Linq;
au lieu de le nommer?Ruby, 34 octets
En utilisant le schéma IO de la solution Perl de Peter Taylors:
la source
-e:1:in '<main>': undefined method 'chars' for nil:NilClass (NoMethodError)
Programme C, 118
la source
t[256],i;main(c){for(;c+3;)(i=getchar())>10?t[i]+=c:(c-=2);for(i=257;--i&&!t[i-1];);puts(i?"false":"true");}
- c'est 108 caractères. Très important, votrec
astuce d'initialisation est toujours utilisée.Perl, 58 octets
(programme complet, contrairement à l'autre réponse Perl qui n'est qu'une fonction)
49 en fonction
la source
"
expressions true et false, car sans mot-clé / warnings, un mot-clé est une chaîne.($c,$d)=map{[sort split//]}@ARGV;exit("@$c"ne"@$d")
(51 caractères) afin qu'il puisse prendre des arguments de ligne de commande et utiliser les codes de sortie de ligne de commande. Ce serait conserver 48 caractères<>
avec une entrée multiligne.Clojure - 23 caractères
En tant que fonction anonyme:
Exemple de cas de test:
la source
JavaScript
Basé sur la solution de @ zzzzBov.
Comparaison, 65 caractères (40 sans fonction)
Comparateur, 43 caractères
la source
+""
pour contraindre à la chaîne.C ++ (104 caractères non-ws)
Basé sur la sorte de comptage. Remarque: Suppose des chaînes de même longueur, ce qui semble être impliqué (bien que non indiqué) par la question.
la source
i=123;while(i&&u[--i]);return!i;
PHP (ligne de commande, 87 caractères)
la source
Javascript
Une version (très) un peu plus courte de la solution de @ zzzzBov, qui utilise à la
.join()
place de la boxe string:De même:
la source
Clojure REPL 41 caractères
la source
Java
(La langue préférée de tout le monde apparemment!)
173 caractères:
(N'imprime pas de caractère de nouvelle ligne pour enregistrer 2 caractères de println)
Compiler et exécuter:
J'adore en voir un plus court ...
la source
java.util.Arrays x=null;
et utiliser à lax.
place deArrays.
:class g{public static void main(String[]p){java.util.Arrays x=null;String[]a=p[0].split(""),b=p[1].split("");x.sort(a);x.sort(b);System.out.print(x.equals(a,b));}}
( 163 octets ). Et en le convertissant en Java 8, celaclass g{public static void main
pourrait êtreinterface g{static void main
aussi bien, mais je suppose que Java 8 n'a pas pas encore en 2011, donc garderclass
est également bien. ; psed, 45 caractères
C'est même possible dans mon préféré -
sed
! Juste une expression régulière pour résoudre l'anagramme ! Continuez simplement à supprimer les lettres correspondantes:(à invoquer avec
-nE
)Perl, 48 ans
Être invoqué avec
-p
.Fonction Perl, 39
la source
APL, 2 caractères
C'est le match Multiset fonction de Nars2000 , l' un des avant-gardistes mises en œuvre APL. Appliqué aux chaînes, il calcule exactement la fonction requise:
la source
⍦
symbole, ce dont je doute.05AB1E ,
64 octets (non concurrents)Essayez-le en ligne!
Cela a pris du temps à cause de difficultés d’entrée. Golfé en raison de la pop.
Explication:
la source
Perl,
7775 caractèresLes E / S du problème ne sont pas bien spécifiées. cela lit deux lignes de stdin et renvoie true ou false à stdout.
(Merci à Tim pour 77 -> 75)
la source
$a=;
? En outre, vous pouvez ignorer les parenthèsessort
et l'espace aprèsprint
.Perl, 62 octets
Cette fonction prend les chaînes en tant qu'arguments et renvoie true ou false.
Stocke les valeurs ASCII dans un tableau et vérifie si celui-ci est uni. Incréments pour le premier mot et décrément pour le second mot.
la source
Python 3,
107977664Évidemment, cela peut être abrégé si nous ne prenons pas les libellés du PO littéralement et minuscules "vrai" et "faux" ...
la source
;s=sorted
à la première ligne puis remplacez les deux occurrences desorted
avecs
dans la deuxième ligne. Faut-il sauvegarder ... 3 personnages?Python, 32 octets
la source
Bash, 88 caractères
la source
R , 54 octets
Essayez-le en ligne!
la source
utf8ToInt
et son inversion tendent à raccourcir la division des chaînes par rapport aux fonctions classiques.Scala dans REPL (32)
Fonction de Scala (43)
Programme Scala (61)
Celles-ci exploitent une fonctionnalité intéressante de Scala selon laquelle une chaîne peut également être traitée comme une séquence de caractères (
Seq
), toutes les opérationsSeq
étant disponibles.la source
APL - 13 caractères
Appelle comme ça:
Dans le dernier exemple,
'a'
représente un seul caractère et le préfixe,
le convertira en chaîne.la source
Java (134 octets)
Cela fait un tableau pour compter le nombre de fois que chaque lettre apparaît, puis compare les tableaux pour vérifier si elles sont égales.
la source
(c[0], c[1])
etfor (int i=0;
.JavaScript, 41
Fonction de comparaison (41) :
Fonction de comparaison (21) :
Fonction de comparaison (48):
Fonction de comparaison (78):
Assume
String
asplit
etArray
asort
.la source
c=>d=>(a=b=>''+[...b].sort())(c)==a(d)