Herausforderung
Berechnen Sie bei zwei gegebenen Zeichenfolgen, ob beide genau die gleichen Zeichen enthalten.
Beispiel
Eingang
Wort, wrdo
Dies kehrt zurück, true
weil sie gleich sind, aber nur verschlüsselt.
Eingang
Wort, wwro
Dies kehrt zurück false
.
Eingang
Boot, toba
Dies kehrt zurück true
Regeln
Hier sind die Regeln!
- Angenommen, die Eingabe ist mindestens 1 Zeichen lang und nicht länger als 8 Zeichen.
- Nur keine Sonderzeichen
a
-z
- Alle Eingaben können als Kleinbuchstaben angenommen werden
Testfälle
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
quelle
quelle
Antworten:
Python, 32 Bytes
quelle
def f(a,b):return sorted(a)==sorted(b)
Der Nachteil ist, dass Sie def + return durch Lambda ersetzen müssen, wenn Sie keine Anweisungen verwendenGolfscript, 3 Zeichen?
Verwendungszweck:
quelle
'
) -Zeichen 4 hinzufügen .J, 8
Literaly, match (
-:
) on (&
) sort up (/:~
)Beispielgebrauch:
Wo kommen die 64-Bit-Ganzzahlen ins Spiel?
quelle
v arg
(Monaden) oder zwei auf beiden Seitenarg1 v arg2
(Dyaden). Das, was ich eingereicht habe, ist offensichtlich eine Dyade. Ich habe mich nicht darum gekümmert, es zu benennen, da es nicht angefordert wurde und auf diese Weise kürzer ist. Solltest du ihm wirklich einen Namen geben wollen, machst du das so:is_anagram_of =: -:&(/:~)
und dann benutze als'a' is_anagram_of 'aa'
.Javascript,
192157152147125 BytesOk, einige dieser Sprachen sind viel flexibler als ich dachte! Auf jeden Fall ist dies der längere Weg, aber zumindest eine andere Technik.
Komprimiert
Vielen Dank an Peter und David, die mehr Zeichen herausgedrückt haben!
Dann mach:
Erweiterter Code
Das komprimierte hat viele Änderungen gehabt, aber das ist die Grundtheorie:
quelle
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 Bytes
Dies definiert eine aufgerufene Funktion
A
Testfälle
quelle
Haskell, 31 Bytes
Funktion - 31
Programm -
815855Verwendungszweck:
Ein großes Lob an Lambdabot und seine sinnlose Umgestaltung .
quelle
perl
noch als "Programm" bezeichnet werden? :-)x#y=sort x==sort y
ist 1 Zeichen kürzer129 Zeichen
Lesbar:
quelle
using System.Linq;
anstatt es mit einem Namensraum zu versehen?Ruby, 34 Bytes
Verwenden des IO-Schemas der Peter Taylors Perl-Lösung:
quelle
-e:1:in '<main>': undefined method 'chars' for nil:NilClass (NoMethodError)
C-Programm, 118
quelle
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");}
- das sind 108 Zeichen. Sehr wichtig ist, dass Ihrc
Initialisierungstrick immer noch angewendet wird.Perl, 58 Bytes
(komplettes Programm, im Gegensatz zu der anderen Perl-Antwort, die nur eine Funktion ist)
49 als Funktion
quelle
"
Umgeben von true und false entfernen , da ein Bareword ohne Verwendung von strict / warnings eine Zeichenfolge ist.($c,$d)=map{[sort split//]}@ARGV;exit("@$c"ne"@$d")
(51 Zeichen), damit es Befehlszeilenargumente annehmen und die Befehlszeilen-Exit-Codes verwenden kann.<>
Bei einem mehrzeiligen Eingang bleiben 48 Zeichen erhalten .Clojure - 23 Zeichen
Als anonyme Funktion:
Testfallbeispiel:
quelle
JavaScript
Basierend auf der @ zzzzBov-Lösung.
Vergleich, 65 Zeichen (40 ohne Funktion)
Komparator, 43 Zeichen
quelle
+""
zum Schnüren zwingen.C ++ (104 Nicht-WS-Zeichen)
Basierend auf der Zählart. Hinweis: Es wird von Zeichenfolgen gleicher Länge ausgegangen, was von der Frage impliziert (wenn auch nicht angegeben) zu sein scheint.
quelle
i=123;while(i&&u[--i]);return!i;
PHP (Befehlszeile, 87 Zeichen)
quelle
Javascript
Eine (sehr) etwas kürzere Version der @ zzzzBov-Lösung, die
.join()
anstelle von String-Boxing verwendet:Ähnlich:
quelle
Clojure REPL 41 Zeichen
quelle
Java
(Offenbar die Lieblingssprache aller!)
173 Zeichen:
(Gibt kein Zeilenumbruchzeichen aus, um 2 Zeichen von println zu sparen.)
Kompilieren und ausführen:
Ich liebe es, einen kürzeren zu sehen ...
quelle
java.util.Arrays x=null;
und verwendenx.
stattArrays.
: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 Bytes ) Und es Java Umwandlung 8,class g{public static void main
könnteinterface g{static void main
als gut, aber ich denke , Java 8 wasn gibt es noch nicht im Jahr 2011, alsoclass
ist auch die Aufbewahrung in Ordnung. ; psed, 45 Zeichen
Es ist sogar in meinem Favoriten möglich -
sed
! Nur ein regulärer Ausdruck, um das Anagramm zu lösen ! Entferne einfach die entsprechenden Buchstaben:(aufzurufen mit
-nE
)Perl, 48
Aufruf mit
-p
.Perl-Funktion, 39
quelle
APL, 2 Zeichen
Dies ist die Multiset Match- Funktion von Nars2000 , einer der führenden APL-Implementierungen. Wenn es auf Zeichenfolgen angewendet wird, berechnet es genau die erforderliche Funktion:
quelle
⍦
Symbol hat, was ich bezweifle.05AB1E ,
64 Bytes (nicht konkurrierend)Probieren Sie es online!
Dies dauerte aufgrund von Eingabeschwierigkeiten eine Weile. Golf wegen Pop.
Erläuterung:
quelle
Perl,
7775 ZeichenDie E / A des Problems sind nicht genau angegeben. Dies liest zwei Zeilen von stdin und gibt true oder false an stdout aus.
(Danke an Tim für 77 -> 75)
quelle
$a=;
? Sie können auch die Parens vonsort
und das Leerzeichen danach überspringenprint
.Perl, 62 Bytes
Diese Funktion nimmt die Zeichenfolgen als Argumente und gibt true oder false zurück.
Speichert die ASCII-Werte in einem Array und prüft, ob sie ausgeglichen sind. Inkremente für das erste Wort und Dekremente für das zweite Wort.
quelle
Python 3,
107977664Offensichtlich kann dies verkürzt werden, wenn wir den Wortlaut des OP nicht wörtlich und in Kleinbuchstaben "wahr" und "falsch" nehmen ...
quelle
;s=sorted
an die erste Zeile anhängen und dann die beiden Instanzen vonsorted
mits
in der zweiten Zeile ersetzen . Sollte speichern ... 3 Zeichen?Python, 32 Bytes
quelle
Bash, 88 Zeichen
quelle
R , 54 Bytes
Probieren Sie es online!
quelle
utf8ToInt
und seine Umkehrung führt tendenziell zu einer kürzeren Aufteilung der Saiten als die herkömmlichen Funktionen.Scala in REPL (32)
Skalafunktion (43)
Scala-Programm (61)
Diese nutzen eine nette Funktion von Scala, mit der ein String auch als Folge von Zeichen (
Seq
) behandelt werden kann, wobei alle OperationenSeq
verfügbar sind.quelle
APL - 13 Zeichen
Rufen Sie wie folgt an:
Im letzten Beispiel wird
'a'
ein einzelnes Zeichen dargestellt, und das Präfix,
konvertiert es in eine Zeichenfolge.quelle
Java (134 Byte)
Dadurch wird in einem Array die Häufigkeit gezählt, mit der jeder Buchstabe angezeigt wird. Anschließend werden die Arrays verglichen, um zu überprüfen, ob sie gleich sind.
quelle
(c[0], c[1])
undfor (int i=0;
.JavaScript, 41
Vergleichsfunktion (41) :
Komparatorfunktion (21) :
Komparatorfunktion (48):
Vergleichsfunktion (78):
Angenommen
String
hatsplit
undArray
hatsort
.quelle
c=>d=>(a=b=>''+[...b].sort())(c)==a(d)