Beitrag "Re: switch-case Anweisung"
1 | perl -wle '$_=1;(1x$_)!~/^(11+)\1+$/&&print while++$_' |
Ich kann ja eigentlich ganz gut perl, aber kann das jemand erklären, warum es das tut, was es tut (Primzahlen berechnen)?
|
Forum: PC-Programmierung Planlos' Perl-Lieblings-EinzeilerBeitrag "Re: switch-case Anweisung"
Ich kann ja eigentlich ganz gut perl, aber kann das jemand erklären, warum es das tut, was es tut (Primzahlen berechnen)? Gutes Programm.
Der Trick ist, die Zahlen werden der Reihe nach in "Unär"-Schreibweise gebracht. also 1 11 111 1111 usw. Dann wird per Regex geprüft, ob es einen mindestens zweibuchstabigen Teilstring gibt '(11+)', der sich mehrfach wiederholen lässt, um den ganzen String zu matchen (\1+). d.H. 1111 fliegt raus, weil es durch "zwei teilbar" ist: "(11)(11)". ich versuch das mal aufzuschlüsseln:
Was bleibt ist der unklare regex Planlos schrieb: > Dann wird per Regex geprüft, ob es einen mindestens zweibuchstabigen > Teilstring gibt '(11+)', der sich mehrfach wiederholen lässt, um den > ganzen String zu matchen (\1+). ahh, ok - verstehe. Die Anker zwingen, dass der ganze string restlos auf vielfache von irgendeinem vielfachen von '1' werden muss. Und wenn das möglich ist, kann es keine Primzahl an 1en sein, Danke :) :
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.
|
|