Inspiriert von und in Erinnerung an unser geliebtes Genie,
RUHE IN FRIEDEN
Er hat dfns erfunden und umgesetzt - sein magnum opus und das thema der herausforderung.
Für die Interessierten: Aktuelle Voll-dfns-Dokumentation und Videos mit John .
Aufgabe
Beantworten Sie bei einem vorgegebenen ASCII-Quellcode, zu welcher der folgenden vier Kategorien er gehört:
Dyadic Dop
Monadic Dop
Dfn
Andere
Sie können vier beliebige konsistente Werte zurückgeben, geben Sie jedoch Ihre Zuordnung an, wenn dies nicht offensichtlich ist.
Einzelheiten
Sie können davon ausgehen, dass der Quellcode immer mit einer öffnenden geschweiften Klammer beginnt {
und mit einer schließenden geschweiften Klammer endet }
.
Rekursiv verschachtelte Klammern können vorkommen (z. B. {{{}}}
), aber in den Kategorien 1 bis 3 darf die Schachtelungstiefe der Klammern niemals unter 1 liegen (also {}{}
"Sonstige"), und alle Klammern müssen ausgeglichen sein (also {{}
"Sonstige").
Zeichen in den folgenden Kontexten einer Zeile werden ignoriert:
Rechts von
#
(ein Kommentar):significant#ignored
In Apostrophe
'
...'
(dh in einem String):significant'ignored'significant
(Dies gilt#
auch:'#'significant
)Rechts neben einem ungepaarten Anführungszeichen
'
(Anführungszeichen von links koppeln):significant'ignored
In der geschweiften Klammer Stufe 1 (dh ohne geschachtelte Klammern):
Dyadische Dops enthalten die ununterbrochene Phrase
ww
Monadic Dops enthalten nicht
ww
, aber enthaltenaa
Dfns enthalten weder
ww
nochaa
Testfälle
Dyadische Dops
{ww}
{
www
}
{
''ww'
}
{aa
ww}
{'#''#'ww?aa}
Monadic Dops
{aa}
{aaaa}
{aa{ww}'ww'}
{w#w'
aa'
}
{aaw*w}
{w'\'aa\''}
Dfns
{}
{a a}
{aA}
{
{aa}
}
{w
w''w#
w}
{{
}}
{w\'aa\'}
Andere
{}{}
{{}
{}}
{ww}}
{}
{}
{ww}{}
{#}
{'
'}
{'#\'ww?aa'}
-> other?)''
(Apostroph in Zeichenfolge, kann auch als zwei benachbarte Zeichenfolgen für diese Herausforderung analysiert werden)?'abc''def'
für diese Herausforderung ein oder zwei Zeichenfolgen analysiert werden.Antworten:
JavaScript (ES6),
145 ... 138136 BytesProbieren Sie es online!
Alternative Versionen
Wie?
Die Eingabezeichenfolge wird zeichenweise analysiert.
Übersetzung von Zeichen in Codes
Variablen, die den Parser-Status beschreiben
Die folgenden Variablen werden beim Parsen verwendet:
aa
angetroffen wurdeww
angetroffen wurdeEndergebnis
quelle
Jelly ,
50 48 4645 BytesEin monadischer Link, der eine Liste von Zeichen akzeptiert, die Folgendes ergibt:
Probieren Sie es online! Oder sehen Sie sich eine Testsuite an .
Verwendet Python-Anführungszeichen, um die Möglichkeit zu vermeiden, Eingaben als Python-Satz oder Wörterbuch auszuwerten
Wie?
quelle
Sauber ,
309293284 BytesWir können mit nur mit drei Variablennamen in einer Zeit weg, so dass wir sie nennen wollen
a
,p
undl
.Probieren Sie es online!
Definiert die Funktion
$ :: [Char] -> Int
und einige Helfer und gibt das Mapping an:0
: Andere1
: Dyadic Dop2
: Monadic Dop3
: DfnErweitert (erste Version) und mit mehr als 3 Variablennamen:
quelle
Retina 0.8.2 , 91 Bytes
Probieren Sie es online! Link enthält Testsuite. Erläuterung:
Entfernen Sie Zeichenfolgen und Kommentare.
Entfernen Sie die übereinstimmenden Klammern aus dem Innersten, lassen Sie jedoch die erste und die letzte Klammer frei.
Wenn wir keine passenden Klammern haben, ist dies Sonstige.
Ansonsten
ww
ist das Dyadic Dop.Andernfalls
aa
ist dies Monadic Dop.Andernfalls ist dies Dfn, wenn dies etwas ist, das oben nicht behandelt wurde.
quelle