Regras
Neste desafio, vou redefinir um pouco a definição de "aspas".
As aspas ( aspas AKA ) são caracteres idênticos usados em pares em vários sistemas de escrita para desencadear fala direta, cotação ou frase. O par consiste em aspas de abertura e aspas de fechamento, com o mesmo caractere (com distinção entre maiúsculas e minúsculas).
Se houver pares de aspas sobrepostos,
- Se um par aninhar outro, os dois pares ainda serão válidos.
- Se um par não aninhar outro, o primeiro par inicial permanece válido. O outro não é mais considerado um par.
Ao contar caracteres entre aspas (comprimento de um par de aspas),
- As citações em si não contam.
- O comprimento de cada par é contado de forma independente. A sobreposição não afeta outra.
Objetivo
Seu objetivo é imprimir o comprimento total de todas as cotações válidas. Este é o código golf, portanto o código com o menor número de bytes vence.
Exemplos
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
Respostas:
Gelatina , 12 bytes
Experimente online!
fonte
APL (Dyalog Unicode) , SBCS de 36 bytes
Programa completo. Solicita a entrada de stdin.
Experimente online!
t←⍬
configurar um acumuladort
(para t otal)⍞⊣
descarte isso em favor da entrada de string de stdin (símbolo: citação no console){
…}⍣≡
Aplique a seguinte lambda anônima até estável (ponto de correção; anterior ≡ próxima)⊢⍵
no argumento...
⎕S'\2'
PCRE S Earch para o seguinte, o grupo 2 retornando para cada jogo:(.)
qualquer caractere (chamaremos este grupo 1) de(.*?)
poucos caracteres quanto possível (chamaremos esse grupo 2)\1
de caractere do grupo 1t,←
atualizet
anexandot
o valor atual aot⊣
descartar que (a lista final de nenhuma correspondência) em favor det
≢
conte o número de caracteres nessefonte
Ruby , 49 bytes
Solução recursiva. Encontre grupos de cotações, conte seus comprimentos e, em seguida, procure recursivamente comprimentos de subgrupos e some tudo.
Experimente online!
fonte
JavaScript (ES6), 64 bytes
Experimente online!
Comentado
fonte
JavaScript (Node.js) ,
656462 bytesExperimente online!
Abordagem original (64 bytes):
Experimente online!
fonte
Flak cerebral , 100 bytes
Experimente online!
Comentado
fonte
Gelatina , 17 bytes
Experimente online!
Um programa completo que usa um único argumento, a sequência de entrada envolvida em uma lista e retorna o número de caracteres de aspas como um número inteiro.
fonte