Ich habe an einer anderen Stack-basierten Golfsprache namens Stackgoat gearbeitet . In dieser Herausforderung schreiben Sie einen Tokenizer für Stackgoat (oder wirklich alle allgemeinen Stack-basierten Sprachen).
Beispiele
"PPCG"23+
["PPCG", '23', '+']
'a "bc" +
['"a"', '"bc"', '+']
12 34+-"abc\"de'fg\\"
['12', '34', '+', '-', '"abc\"de'fg\\"']
"foo
['"foo"']
(empty input)
[]
' ""
['" "', '""']
Spezifikation
Die drei Typen, mit denen Sie umgehen müssen, sind:
- Streicher, alles drin
""
- Zahlen, beliebige Ziffernfolge
- Operatoren, jedes andere einzelne Zeichen außer Leerzeichen
Leerzeichen werden im Wesentlichen ignoriert, es sei denn, sie befinden sich in einer Zeichenfolge oder trennen zwei Zahlen.
String / char spec:
- Zeichenfolgen werden durch a begrenzt.
"
Wenn ein\
Zeichen auftritt, sollte das nächste Zeichen mit einem Escapezeichen versehen werden. '
Zeichen werden mit einem vorangestellt, und das Zeichen nach dem'
sollte in ein Zeichenkettenliteral umgewandelt werden.'a
->"a"
'
wird immer einen Charakter danach haben- Das Schließen von Anführungszeichen sollte automatisch erfolgen
Regeln:
- Keine Form von
eval
ist erlaubt
Input-Output:
- Die Eingabe kann über STDIN, Funktionsparameter oder die entsprechende Sprache erfolgen.
- Die Ausgabe sollte ein Array oder die nächstliegende Entsprechung Ihrer Sprache sein.
code-golf
parsing
code-golf
hexagonal-grid
code-golf
string
code-golf
string
code-golf
combinatorics
code-golf
ascii-art
code-golf
string
game
counting
code-golf
arithmetic
complex-numbers
code-golf
string
code-golf
decision-problem
hexagonal-grid
code-golf
string
sequence
code-golf
number
arithmetic
code-golf
ascii-art
code-golf
ascii-art
code-golf
string
arithmetic
code-golf
number
simulation
code-golf
number
arithmetic
code-golf
string
sequence
unicode
code-golf
string
ascii-art
balanced-string
code-golf
number
clock
code-golf
ascii-art
number
code-golf
math
number
sequence
code-golf
string
ascii-art
balanced-string
code-golf
math
string
popularity-contest
graphical-output
image-processing
code-golf
string
permutations
code-golf
string
code-golf
random
code-golf
string
cryptography
palindrome
code-golf
chess
code-golf
math
array-manipulation
topology
code-golf
math
sequence
code-golf
keyboard
classification
code-golf
string
sequence
code-golf
natural-language
code-golf
math
number
sequence
sorting
code-golf
sequence
combinatorics
grid
tic-tac-toe
code-golf
geometry
code-golf
number
restricted-source
new-years
expression-building
Downgoat
quelle
quelle
'"PPCG"'
statt nur sein"PPCG"
?Antworten:
Retina ,
686463 Bytesoder
Ich denke, das deckt alle funky Edge-Fälle ab, auch die, die nicht von den Testfällen in der Challenge abgedeckt werden.
Probieren Sie es online!
quelle
Ruby, 234 Bytes
Ich habe versucht, den
find(&:itself)
Trick zu verwenden, den ich gesehen habe ... irgendwo, aber anscheinend.itself
ist es keine Methode. Außerdem arbeite ich daran, die Regex herunterzuspielen, aber sie ist bereits unlesbar.Wenn wir nicht auf ausgefallene Weise ausgeben müssen (dh Strings müssen nicht in Anführungszeichen gesetzt werden), kann ich eine ganze Menge Bytes sparen:
Immer noch Ruby, 194 Bytes:
Ich bin mir sicher, dass ich mehr Golf spielen kann, aber ich bin mir nicht ganz sicher, wie.
Ungolfed kommt bald. Irgendwann fing ich an, direkt mit den Golfspielern zu spielen, und ich muss es herausziehen.
quelle
Python 3, 228 Bytes
Hier ist ein schöner langer Doppelliner.
Testen Sie es in Python 3. Hier sind einige Beispiele:
quelle