^(A)?(B)?C?(D|())(E|())(F)?(G)?
$.($.5*$.8*$(6*$7$2$2)$#6*$.3*$($.2*$(___$7)5*$7)$#4*$(6*$1_3*$8
Probieren Sie es online! Vielleicht nicht der beste Weg, aber es ist eine interessante Art, in Retina zu programmieren. Erläuterung:
^(A)?(B)?C?(D|())(E|())(F)?(G)?
Versucht, die interessanten Fälle zu erfassen. Die positiven Aufnahmen erfassen einfach den Brief, wenn er vorhanden ist. Die Länge des Captures beträgt daher 1, wenn es vorhanden ist, und 0, wenn es nicht vorhanden ist. Die Sonderfälle sind Captures 4 und 6, die nur existieren, wenn D bzw. E fehlen. Diese können nur in dezimal ausgedrückt werden $#4
und , $#6
aber das ist alles , was wir hier brauchen. Die Captures werden dann zu einer Zeichenfolge zusammengesetzt, deren Länge der gewünschten Zahl entspricht. Wenn wir zum Beispiel schreiben, 6*$1
hat dieser String die Länge 6, wenn A vorhanden ist, und 0, wenn es nicht vorhanden ist. Um zwischen verschiedenen Ausdrücken zu wählen, verwenden wir entweder $.
(für die positiven Captures) oder $#
(für die negativen Captures), die entweder 0 oder 1 ergeben, und dies kann dann mit dem bisherigen String multipliziert werden.
$.5*$.8*$(6*$7$2$2)
F
wird 6-mal und B
zweimal wiederholt (durch Verkettung als Golfspieler). Das Ergebnis wird jedoch ignoriert, sofern nicht beide E
und G
vorhanden sind. Dies behandelt die Fälle von 2
, 6
und 8
.
$#6*$.3*$($.2*$(___$7)5*$7)
F
wird fünfmal wiederholt, und wenn B
vorhanden, wird es ein sechstes Mal plus eine zusätzliche 3 hinzugefügt (dargestellt durch eine konstante Zeichenfolge mit der Länge 3). Das Ergebnis wird jedoch ignoriert, sofern D
es nicht vorhanden ist und nicht vorhanden E
ist. Dies behandelt die Fälle von 3
, 5
und 9
.
$#4*$(6*$1_3*$8
A
wird 6-mal G
wiederholt und 3-mal wiederholt und ein zusätzliches 1
hinzugefügt (dargestellt durch ein konstantes Zeichen zwischen den beiden, weil es Golfspieler ist). Das Ergebnis wird jedoch ignoriert, es D
sei denn, es fehlt. Dies behandelt die Fälle von 1
, 4
und 7
.
$.(
Die obigen Zeichenfolgen werden dann verkettet und die Länge genommen. Wenn keine der oben genannten Bedingungen zutrifft, wird keine Zeichenfolge generiert und die Länge ist daher gleich 0
.
Die resultierenden Zeichenfolgen (bevor die Länge genommen wird) lauten wie folgt:
1 _
2 BB
3 ___
4 _GGG
5 FFFFF
6 FFFFFF
7 AAAAAA_
8 FFFFFFBB
9 ___FFFFFF