Вдохновленный и в память о нашем любимом гении,
ПОКОЙСЯ С МИРОМ
Он изобрел и внедрил DFS - его опус и предмет вызова.
Для заинтересованных: последняя полная документация по DFS и видео с Джоном .
задача
Учитывая исходный код ASCII, ответьте, к какой из следующих четырех категорий он относится:
Диадический доп
Монадный доп
Dfn
Другой
Вы можете вернуть любые четыре последовательных значения, но, пожалуйста, укажите свое отображение, если оно не очевидно.
Детали
Вы можете предположить, что исходный код всегда начинается с открывающей фигурной скобки {
и заканчивается закрывающей фигурной скобкой }
.
Могут возникать рекурсивно вложенные фигурные скобки (например {{{}}}
), но категории 1–3 никогда не могут иметь глубину вложенности фигурных скобок ниже 1 ( {}{}
как и «Другое»), и все фигурные скобки должны быть сбалансированы ( {{}
как и «Другое»).
Символы в следующих контекстах в строке игнорируются:
Справа от
#
(комментарий):significant#ignored
Заключено в одинарных кавычках
'
...'
(то есть в строке):significant'ignored'significant
(Это относится и к#
слишком:'#'significant
)Справа от непарной кавычки
'
(парные кавычки слева):significant'ignored
На первом уровне фигурных скобок (т.е. исключая вложенные скобки):
Dyadic допы содержат непрерывную фразу
ww
Монадные допы не содержат
ww
, но содержатaa
Dfns не содержит ни,
ww
ниaa
Контрольные примеры
Диадические допы
{ww}
{
www
}
{
''ww'
}
{aa
ww}
{'#''#'ww?aa}
Монадные допы
{aa}
{aaaa}
{aa{ww}'ww'}
{w#w'
aa'
}
{aaw*w}
{w'\'aa\''}
Dfns
{}
{a a}
{aA}
{
{aa}
}
{w
w''w#
w}
{{
}}
{w\'aa\'}
Другой
{}{}
{{}
{}}
{ww}}
{}
{}
{ww}{}
{#}
{'
'}
{'#\'ww?aa'}
-> другой)''
(апостроф в строке, также может быть проанализирован как две смежные строки для этой задачи)?'abc''def'
анализируется ли он как одна или две строки для этой задачи.Ответы:
JavaScript (ES6),
145 ... 138136 байтПопробуйте онлайн!
Альтернативные версии
Как?
Входная строка анализируется символ за символом.
Перевод символов в коды
Переменные, описывающие состояние парсера
Следующие переменные используются во время синтаксического анализа:
aa
была выявленаww
была выявленаКонечный результат
источник
Желе ,
50 48 4645 байтМонадическая ссылка, принимающая список символов, который дает:
Попробуйте онлайн! Или посмотрите тестовый набор .
использует цитирование Python, чтобы избежать возможности оценивать ввод как набор или словарь Python
Как?
источник
Чистый ,
309293284 байтаМы можем уйти только с использованием 3 имен переменных , в то время, поэтому мы будем называть их
a
,p
иl
.Попробуйте онлайн!
Определяет функцию
$ :: [Char] -> Int
и некоторые помощники, предоставляя сопоставление:0
: Другой1
: Dyadic dop2
: Монадный доп3
: DfnРасширенный (первая версия), с более чем 3 именами переменных:
источник
Сетчатка 0.8.2 , 91 байт
Попробуйте онлайн! Ссылка включает тестовый набор. Объяснение:
Удалить строки и комментарии.
Снимите подходящие скобки, потренировавшись изнутри, но оставьте первый и последний скобки.
Если у нас нет соответствующих скобок, тогда это Другое.
В противном случае, если у нас есть,
ww
то это Dyadic Dop.В противном случае, если у нас есть,
aa
то это Monadic Dop.В противном случае, если это что-то не охвачено выше, то это Dfn.
источник