Zasady
W tym wyzwaniu zamierzam nieco przedefiniować definicję „cudzysłowów”.
Znaki cudzysłowu ( cytaty AKA ) to dowolne identyczne znaki używane w parach w różnych systemach pisania w celu rozpoczęcia bezpośredniej mowy, cytatu lub frazy. Para składa się z otwierającego cudzysłowu i zamykającego cudzysłowu, który jest tym samym znakiem (wielkość liter ma znaczenie).
Jeśli pary cytatów zachodzą na siebie,
- Jeśli para zagnieżdża inną, obie pary są nadal ważne.
- Jeśli para nie zagnieżdża innej, pierwsza para początkowa pozostaje ważna. Drugi nie jest już traktowany jako para.
Podczas liczenia cytowanych znaków (długość pary cudzysłowów)
- Same cytaty się nie liczą.
- Długość każdej pary liczona jest niezależnie. Nakładanie się nie wpływa na inne.
Cel
Twoim celem jest wydrukowanie całkowitej długości wszystkich ważnych ofert. To jest kod golfowy, dlatego wygrywa kod z najmniejszą liczbą bajtów.
Przykłady
Legend:
<foo>: Valid quotes
^ : Cannot be paired character
Input : ABCDDCBA
`A` (6): <BCDDCB>
`B` (4): <CDDC>
`C` (2): <DD>
`D` (0): <>
Output : 12
Input : ABCDABCD
`A` (3): <BCD>
`B` (0): ^ ^
`C` (0): ^ ^
`D` (0): ^ ^
Output : 3
Input : AABBBBAAAABA
`A` (0): <> <><> ^
`B` (0): <><> ^
Output : 0
Input : ABCDE
Output : 0
Input : Print the total length of all "quoted" characters
`r` (40): <int the total length of all "quoted" cha>
`n` (14): <t the total le>
`t` (15): < > <o> <h of all "quo>
` ` (7): ^ <total> <of> ^ ^
`h` (0): ^ ^ ^
`e` (8): < total l> ^ ^
`o` (0): ^ ^ ^
`a` (0): ^ ^ ^ ^
`l` (0): ^ ^ <>
`"` (0): ^ ^
`c` (0): ^ ^
Output : 84
Input : Peter Piper picked a peck of pickled peppers
`P` (5): <eter >
`e` (9): <t> ^ <d a p> <d p> ^
`r` (0): ^ ^
` ` (3): ^ ^ <a> <of> ^
`i` (5): <per p>
`p` (3): <er > ^ ^ ^ <>
`c` (8): <ked a pe> ^
`k` (7): ^ < of pic>
`d` (0): ^ ^
Output : 40
Input : https://www.youtube.com/watch?v=dQw4w9WgXcQ
`h` (27): <ttps://www.youtube.com/watc>
`t` (0): <> ^ ^
`/` (0): <> ^
`w` (14): <><.youtube.com/> <4>
`.` (7): <youtube>
`o` (0): ^ ^
`u` (1): <t>
`c` (0): ^ ^ ^
`Q` (8): <w4w9WgXc>
Output : 57
Odpowiedzi:
Galaretka , 12 bajtów
Wypróbuj online!
źródło
APL (Dyalog Unicode) , 36 bajtów SBCS
Pełny program Monity o wejście ze standardowego wejścia.
Wypróbuj online!
t←⍬
założyć akumulatort
(dla t Otal)⍞⊣
odrzuć to na rzecz ciągów wejściowych ze standardowego wejścia (symbol: cytat w konsoli){
…}⍣≡
Zastosuj następującą anonimową lambdę, aż będzie stabilna (punkt stały; poprzedni ≡ następny)⊢⍵
na argument…
⎕S'\2'
PCRE S earch dla następujących, zwracających grupę 2 dla każdego dopasowania:(.)
dowolna postać (nazwiemy tę grupę 1)(.*?)
jak najmniejszą liczbą znaków (nazwiemy tę grupę 2)\1
znakiem grupy 1t,←
zaktualizujt
, dołączając dot
bieżącej wartościt⊣
odrzuć to (ostatnia lista braków pasujących) na korzyśćt
≢
policz w tym liczbę znakówźródło
Rubinowy , 49 bajtów
Rozwiązanie rekurencyjne. Znajdź grupy cytatów, policz ich długości, a następnie rekurencyjnie wyszukaj długości podgrup i zsumuj wszystko razem.
Wypróbuj online!
źródło
JavaScript (ES6), 64 bajty
Wypróbuj online!
Skomentował
źródło
JavaScript (Node.js) ,
656462 bajtówWypróbuj online!
Oryginalne podejście (64 bajty):
Wypróbuj online!
źródło
Brain-Flak , 100 bajtów
Wypróbuj online!
Skomentował
źródło
Galaretka , 17 bajtów
Wypróbuj online!
Pełny program, który pobiera pojedynczy argument, łańcuch wejściowy zawija się w listę i zwraca liczbę znaków cudzysłowu jako liczbę całkowitą.
źródło