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.Respostas:
JavaScript (ES6),
145 ... 138136 bytesExperimente online!
Versões alternativas
Quão?
A sequência de entrada é analisada caractere por caractere.
Tradução de caracteres em códigos
Variáveis que descrevem o estado do analisador
As seguintes variáveis são usadas durante a análise:
aa
foi encontradaww
foi encontradaResultado final
fonte
Geléia ,
50 48 4645 bytesUm link monádico que aceita uma lista de caracteres que produz:
Experimente online! Ou veja uma suíte de testes .
usa a citação de Python para evitar a possibilidade de avaliar a entrada como um conjunto ou dicionário de Python
Quão?
fonte
Limpo ,
309293284 bytesPodemos ir longe com apenas com 3 nomes das variáveis de cada vez, por isso vamos chamá-los
a
,p
el
.Experimente online!
Define a função
$ :: [Char] -> Int
e alguns auxiliares, fornecendo o mapeamento:0
: De outros1
: Dyadic dop2
: Dop monádico3
: DfnExpandido (primeira versão) e com mais de 3 nomes de variáveis:
fonte
Retina 0.8.2 , 91 bytes
Experimente online! O link inclui o conjunto de testes. Explicação:
Remova seqüências de caracteres e comentários.
Remova os suportes correspondentes, exercitando-os da parte mais interna, mas deixe o primeiro e o último suportes.
Se não temos colchetes correspondentes, então é Outro.
Caso contrário, se tivermos
ww
, esse é o Dyadic Dop.Caso contrário, se tivermos
aa
, esse é o Monadic Dop.Caso contrário, se isso não for abordado acima, será Dfn.
fonte