Ich möchte einen Code schreiben, der Zeichenfolgen mit Zeichen in anderer Reihenfolge als gleich annimmt, solange dieselben Zeichen in den Zeichenfolgen platziert werden. Nehmen wir zum Beispiel $ a = "ksv" an, wenn jemand den String-Wert "svk" oder "kvs" eingibt, möchte ich einen Code schreiben, der diesen Strings äquivalent zu $ a ist. Hier ist ein Beispiel,Reihenfolge der Zeichen der Zeichenfolge in Perl
@ans=("ksv", "kvs", "svk", "vsk",......);
if (@input[1] ~~ @ans) {
return 'EXACT_ANS';
}
@input [1] ist, welcher Benutzer die Zeichenfolge setzen. Zuerst habe ich alle verschiedenen Ordnertypen als Array aufgelistet (genau wie im Beispiel), so dass, wenn eines der Elemente im Array mit @input [1] übereinstimmt, ich es als korrekte Antwort zurückgebe. Dies ist jedoch eine ziemlich lange und mühsame Arbeit, wenn ich eine Saite mit viel längerer Länge habe. Bitte geben Sie mir einen Hinweis dazu. Danke ^^
Müssen die Längen der beiden Saiten gleich sein? Mit anderen Worten, sollte 'svksvk' auch übereinstimmen? – ThisSuitIsBlackNot
Da Perl Sie warnt, ist '@input [1]' eine nicht standardisierte Art, '$ input [1]' zu schreiben. – ikegami
Bitte verwenden Sie nicht smart match. '$ input [1] ~~ @ ans' ist ein experimentelles Feature, das in späteren Versionen der Sprache geändert oder entfernt werden kann. Die beste Alternative ist 'List :: Util :: first' – Borodin