правила
В этой задаче я собираюсь немного переопределить определение «цитаты».
Кавычки ( кавычки АКА ) - это любые идентичные символы, используемые в парах в различных системах письма для обозначения прямой речи, цитаты или фразы. Пара состоит из открывающей кавычки и закрывающей кавычки, которая является одним и тем же символом (чувствительна к регистру).
Если есть пары котировок, перекрывающие друг друга,
- Если пара вложена в другую, обе пары остаются действительными.
- Если пара не является вложенной другой, первая стартовая пара остается действительной. Другой больше не считается парой.
При подсчете цитируемых символов (длина пары кавычек),
- Сами цитаты не в счет.
- Длина каждой пары считается независимо. Перекрытие не влияет на другого.
Цель
Ваша цель - распечатать общую длину всех действительных цитат. Это кодовый гольф, поэтому выигрывает код с наименьшим количеством байтов.
Примеры
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
Ответы:
Желе , 12 байт
Попробуйте онлайн!
источник
APL (Dyalog Unicode) , 36 байтов SBCS
Полная программа. Запрашивает ввод со стандартного ввода.
Попробуйте онлайн!
t←⍬
установить аккумуляторt
(для т OTAL)⍞⊣
отменить это в пользу ввода строки из стандартного ввода (символ: цитата в консоли){
…}⍣≡
Применять следующую анонимную лямбду до стабильной (точка фиксации; предыдущая ≡ следующая)⊢⍵
на аргумент...
⎕S'\2'
PCRE S нить поиск в дальнейшем, возвращая группу 2 для каждого матча:(.)
любой символ (назовем эту группу 1)(.*?)
как можно меньшим количеством символов (назовем эту группу 2)\1
символом группы 1t,←
обновитьt
, добавив это кt
текущему значениюt⊣
отменить это (окончательный список нет совпадений) в пользуt
≢
посчитать количество символов в этомисточник
Рубин , 49 байтов
Рекурсивное решение. Найдите группы котировок, посчитайте их длины, а затем рекурсивно ищите длины подгрупп и суммируйте все вместе.
Попробуйте онлайн!
источник
JavaScript (ES6), 64 байта
Попробуйте онлайн!
комментарии
источник
JavaScript (Node.js) ,
656462 байтаПопробуйте онлайн!
Оригинальный подход (64 байта):
Попробуйте онлайн!
источник
Brain-Flak , 100 байт
Попробуйте онлайн!
комментарии
источник
Желе , 17 байт
Попробуйте онлайн!
Полная программа, которая принимает один аргумент, входную строку, завернутую в список, и возвращает количество символов кавычек в виде целого числа.
источник