^(A)?(B)?C?(D|())(E|())(F)?(G)?
$.($.5*$.8*$(6*$7$2$2)$#6*$.3*$($.2*$(___$7)5*$7)$#4*$(6*$1_3*$8
Wypróbuj online! Może nie jest to najlepszy sposób, ale jest to interesujący sposób programowania w Retina. Wyjaśnienie:
^(A)?(B)?C?(D|())(E|())(F)?(G)?
Próbuje uchwycić interesujące przypadki. Pozytywne przechwytywania po prostu przechwytują literę, jeśli jest obecna. Długość przechwytywania wynosi zatem 1, jeśli jest obecny, i 0, jeśli go nie ma. Przypadkami szczególnymi są zrzuty 4 i 6, które istnieją tylko wtedy, gdy odpowiednio D lub E są nieobecne. Te mogą być wyrażone tylko w postaci dziesiętnej, jak $#4
i $#6
, ale to wszystko musimy tutaj. Przechwyty są następnie budowane w ciąg, którego długość jest pożądaną liczbą. Na przykład, jeśli piszemy, 6*$1
to ten łańcuch ma długość 6, jeśli A jest obecny, i 0, jeśli jest nieobecny. Aby wybierać między różnymi wyrażeniami, używamy $.
(dla przechwytywania dodatniego) lub $#
(dla przechwytywania ujemnego), które oceniają na 0 lub 1, a do tej pory można to pomnożyć przez ciąg.
$.5*$.8*$(6*$7$2$2)
F
powtarza się 6 razy i B
dwa razy (przez konkatenację, ponieważ jest golfistą). Jednak wynik jest ignorowany, chyba że jedno i drugieE
i G
są obecne. Obsługuje to przypadki 2
, 6
i 8
.
$#6*$.3*$($.2*$(___$7)5*$7)
F
powtarza się 5 razy, a jeśli B
jest obecny, dodaje się go po raz szósty plus dodatkowe 3 (reprezentowane przez stały ciąg długości 3). Jednak wynik jest ignorowany, chyba że D
jest obecny iE
nieobecny. Obsługuje to przypadki 3
, 5
i 9
.
$#4*$(6*$1_3*$8
A
powtarza się 6 razy i G
powtarza się 3 razy, a dodatkowo 1
dodawany (reprezentowany przez stały znak między nimi, ponieważ jest bardziej golfowy). Jednak wynik jest ignorowany, chyba żeD
jest nieobecny. Obsługuje to przypadki 1
, 4
i 7
.
$.(
Powyższe ciągi są następnie łączone i brana jest długość. jeśli żadna z powyższych nie ma zastosowania, łańcuch nie jest generowany, a zatem jego długość wynosi 0
.
Wynikowe ciągi (przed pobraniem długości) są następujące:
1 _
2 BB
3 ___
4 _GGG
5 FFFFF
6 FFFFFF
7 AAAAAA_
8 FFFFFFBB
9 ___FFFFFF