Die Anzahl der Bytes setzt die Kodierung nach ISO 8859-1 voraus.
10$*
1
,1$`
,1+
$_¶
(?<=(¶?.+)+)1
$#1$*
1{10}1?
,(1*)
$.1
Probieren Sie es online!
Erläuterung
Eine weitere Implementierung des ...% 11% 10- Algorithmus. Der spaßige Teil mit einer Regex ist, dass wir beide Modulo-Berechnungen gleichzeitig erledigen können.
10$*
Initialisieren Sie die Zeichenfolge auf zehn 1Sekunden.
1
,1$`
Ersetzen Sie diese durch ein Komma, ein Eins und das Präfix davor. Dies ergibt ,1,11,...,1111111111also einen unären Bereich.
,1+
$_¶
Ersetzen Sie nun jedes der Bereichselemente durch die gesamte Zeichenfolge, gefolgt von einem Zeilenvorschub. Dies ergibt ein 10x10-Raster von unären Zahlen, die die aktuelle Spalte angeben.
(?<=(¶?.+)+)1
$#1$*
Ordnen Sie jede zu 1und bestimmen Sie, in welcher Zeile sie sich befindet, indem Sie die Gruppe eine so oft wiederholen. Ersetzen Sie die 1durch so viele 1s. Dies multipliziert die Werte in jeder Zeile mit dem auf 1 basierenden Index der Zeile.
1{10}1?
Jetzt machen wir Mod 11, Mod 10 in einem Schritt. Um Mod 11 zu machen , entfernen wir normalerweise einfach alles 1{11}von der Zeichenkette, um die restlichen Zeichen zu erhalten. Und dann würden wir danach entfernen 1{10}. Aber wenn wir nur zehn 1s plus eine weitere entfernen , wird die Gier der Regex-Engine so lange wie möglich Mod 11 für uns tun , und wenn nicht, wird es mindestens Mod 10 versuchen .
,(1*)
$.1
Schließlich konvertieren wir einfach jede Zahl in eine Dezimalzahl, indem wir sie durch ihre Länge ersetzen.