Inspirado e em memória de nosso amado gênio,
DESCANSE EM PAZ
Ele inventou e implementou dfns - sua magnum opus e o assunto do desafio.
Para os interessados: última documentação completa do dfns e vídeos com John .
Tarefa
Dado um código-fonte ASCII, responda a qual das quatro categorias a seguir pertence:
Díada diádica
Dop monádico
Dfn
De outros
Você pode retornar quatro valores consistentes, mas indique seu mapeamento se não for óbvio.
Detalhes
Você pode assumir que o código-fonte sempre começa com uma chave de abertura {
e termina com uma chave de fechamento }
.
Os chaves aninhados recursivamente podem ocorrer (por exemplo {{{}}}
), mas as categorias 1 a 3 nunca podem ter profundidade de aninhamento de chaves abaixo de 1 (o que {}{}
é "Outro") e todas as chaves devem ser equilibradas (o que {{}
é "Outro").
Os caracteres nos seguintes contextos em uma linha são ignorados:
À direita de
#
(um comentário):significant#ignored
Entre aspas simples
'
...'
(ou seja, em uma string):significant'ignored'significant
(Isto aplica-se#
também:'#'significant
)À direita de uma cotação não
'
emparelhada (emparelhamento de cotações da esquerda):significant'ignored
No aparelho de fixação nível 1 (ou seja, excluindo aparelhos aninhados):
Dops diádicos contêm a frase ininterrupta
ww
Dops monádicos não contêm
ww
, mas contêmaa
Dfns não contêm
ww
nemaa
Casos de teste
Dops diádicos
{ww}
{
www
}
{
''ww'
}
{aa
ww}
{'#''#'ww?aa}
Dops monádicos
{aa}
{aaaa}
{aa{ww}'ww'}
{w#w'
aa'
}
{aaw*w}
{w'\'aa\''}
Dfns
{}
{a a}
{aA}
{
{aa}
}
{w
w''w#
w}
{{
}}
{w\'aa\'}
De outros
{}{}
{{}
{}}
{ww}}
{}
{}
{ww}{}
{#}
{'
'}
{'#\'ww?aa'}
-> outro?)
''
(apóstrofo na corda, também pode ser analisado como duas cordas adjacentes para este desafio)?
'abc''def'
é analisado como uma ou duas seqüências para esse desafio.