He estado trabajando en otro lenguaje de golf basado en pila llamado Stackgoat . En este desafío, escribirás un Tokenizer para Stackgoat (o realmente cualquier lenguaje general basado en pila).
Ejemplos
"PPCG"23+
["PPCG", '23', '+']
'a "bc" +
['"a"', '"bc"', '+']
12 34+-"abc\"de'fg\\"
['12', '34', '+', '-', '"abc\"de'fg\\"']
"foo
['"foo"']
(empty input)
[]
' ""
['" "', '""']
Especificación
Los tres tipos que necesitará manejar son:
- Cuerdas, cualquier cosa dentro
""
- Números, cualquier secuencia de dígitos
- Operadores, cualquier otro caracter aparte del espacio en blanco
El espacio en blanco se ignora esencialmente a menos que esté dentro de una cadena o separe dos números.
String / char spec:
- Las cadenas están delimitadas por a
"
, y cuando\
se encuentra a, se debe escapar al siguiente carácter. - Los caracteres están precedidos por a
'
y el carácter después del'
debe convertirse en un literal de cadena.'a
->"a"
'
siempre tendrá un personaje después- Las comillas de cierre deben insertarse automáticamente
Reglas:
- No
eval
se permite ninguna forma de
De entrada y salida:
- La entrada se puede tomar a través de STDIN, parámetros de función o el equivalente de su idioma.
- La salida debe ser una matriz o el equivalente más cercano de su idioma.
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
fuente
fuente
'"PPCG"'
lugar de justo"PPCG"
?Respuestas:
Retina ,
686463 byteso
Creo que esto cubre todos los casos de borde funky, incluso aquellos no cubiertos por los casos de prueba en el desafío.
Pruébalo en línea!
fuente
Rubí, 234 bytes
Intenté usar el
find(&:itself)
truco que vi ... en alguna parte, pero aparentemente.itself
no es en realidad un método. Además, estoy trabajando en el golf de la expresión regular hacia abajo, pero ya no se puede leer.Si no tenemos que emitir de manera elegante (es decir, las cadenas no tienen que ser citadas en la matriz), puedo guardar una gran cantidad de bytes:
Todavía Ruby, 194 bytes:
Estoy seguro de que puedo jugar más al golf, pero no estoy muy seguro de cómo.
Ungolfed próximamente. Comencé a jugar con el golf directamente en algún momento y tendré que sacarlo.
fuente
Python 3, 228 bytes
Aquí hay un bonito, largo, de dos líneas.
Pruébelo en Python 3. Aquí hay algunos ejemplos:
fuente