Inspiré par et en mémoire de notre génie bien-aimé,
DÉCHIRURE
Il a inventé et mis en œuvre des dfns - son magnum opus et le sujet du défi.
Pour les intéressés: dernières documentations et vidéos dfns complètes avec John .
Tâche
Étant donné un code source ASCII, répondez à laquelle des quatre catégories suivantes il appartient:
Dop dyadique
Dop monadique
Dfn
Autre
Vous pouvez renvoyer quatre valeurs cohérentes, mais veuillez indiquer votre mappage s'il n'est pas évident.
Détails
Vous pouvez supposer que le code source commence toujours par une accolade ouvrante {
et se termine par une accolade fermante }
.
Des accolades imbriquées récursivement peuvent se produire (par exemple {{{}}}
), mais les catégories 1 à 3 ne peuvent jamais avoir une profondeur d'imbrication d'accolade inférieure à 1 (tout {}{}
comme "Autre") et toutes les accolades doivent être équilibrées (tout {{}
comme "Autre").
Les caractères dans les contextes suivants sur une ligne sont ignorés:
À droite de
#
(un commentaire):significant#ignored
Apostrophes
'
...'
( par exemple dans une chaîne):significant'ignored'significant
(Cela vaut pour#
trop:'#'significant
)À droite d'un devis non apparié
'
(couplage de devis à partir de la gauche):significant'ignored
Dans le premier accolade (c'est-à-dire à l'exclusion des accolades imbriquées):
Les dops dyadiques contiennent la phrase ininterrompue
ww
Les dops monadiques ne contiennent pas
ww
, mais contiennentaa
Les dfns ne contiennent
ww
niaa
Cas de test
Dops dyadiques
{ww}
{
www
}
{
''ww'
}
{aa
ww}
{'#''#'ww?aa}
Dops monadiques
{aa}
{aaaa}
{aa{ww}'ww'}
{w#w'
aa'
}
{aaw*w}
{w'\'aa\''}
Dfns
{}
{a a}
{aA}
{
{aa}
}
{w
w''w#
w}
{{
}}
{w\'aa\'}
Autre
{}{}
{{}
{}}
{ww}}
{}
{}
{ww}{}
{#}
{'
'}
{'#\'ww?aa'}
-> autre?)''
(l'apostrophe dans la chaîne, peut également être analysée comme deux chaînes adjacentes pour ce défi)?'abc''def'
soit analysé comme une ou deux chaînes pour ce défi.Réponses:
JavaScript (ES6),
145 ... 138136 octetsEssayez-le en ligne!
Versions alternatives
Comment?
La chaîne d'entrée est analysée caractère par caractère.
Traduction de caractères en codes
Variables décrivant l'état de l'analyseur
Les variables suivantes sont utilisées lors de l'analyse:
aa
a été rencontréeww
a été rencontréeRésultat final
la source
Gelée ,
50 48 4645 octetsUn lien monadique acceptant une liste de caractères qui donne:
Essayez-le en ligne! Ou consultez une suite de tests .
utilise des guillemets Python pour éviter la possibilité d'évaluer l'entrée en tant qu'ensemble ou dictionnaire Python
Comment?
la source
Propre ,
309293284 octetsNous pouvons sortir avec seulement 3 en utilisant les noms de variables à la fois, donc nous allons les appeler
a
,p
etl
.Essayez-le en ligne!
Définit la fonction
$ :: [Char] -> Int
et certains assistants, donnant le mappage:0
: Autre1
: Dop dyadique2
: Dop monadique3
: DfnDéveloppé (première version), et avec plus de 3 noms de variables:
la source
Retina 0.8.2 , 91 octets
Essayez-le en ligne! Le lien inclut une suite de tests. Explication:
Supprimez les chaînes et les commentaires.
Retirez les crochets assortis, en vous entraînant à l'intérieur, mais laissez les premier et dernier crochets.
Si nous n'avons pas de parenthèses correspondantes, alors c'est Autre.
Sinon, si c'est le cas,
ww
c'est Dyadic Dop.Sinon, si c'est le cas,
aa
c'est Monadic Dop.Sinon, si ce n'est pas couvert ci-dessus, c'est Dfn.
la source