Я работал над другим основанным на стеке языком игры в гольф под названием Stackgoat . В этом задании вы будете писать Tokenizer для Stackgoat (или вообще любые обычные языки, основанные на стеке).
Примеры
"PPCG"23+
["PPCG", '23', '+']
'a "bc" +
['"a"', '"bc"', '+']
12 34+-"abc\"de'fg\\"
['12', '34', '+', '-', '"abc\"de'fg\\"']
"foo
['"foo"']
(empty input)
[]
' ""
['" "', '""']
Спецификация
Три типа, которые вам нужно обработать:
- Струны, что-нибудь внутри
""
- Числа, любая последовательность цифр
- Операторы, любые другие символы, кроме пробелов
Пробелы по существу игнорируются, если они не находятся внутри строки или не разделяют два числа.
Спецификация строки / символа:
- Строки отделяются символом a
"
, и при\
обнаружении символа a следующий символ должен быть экранирован. - Символы начинаются
'
с символа « а», а символ после'
должен быть преобразован в строковый литерал.'a
->"a"
'
после него всегда будет персонаж- Закрывающие кавычки должны быть вставлены автоматически
Правила:
- Форма
eval
не разрешена
Ввод, вывод:
- Ввод может быть сделан через STDIN, параметры функции или эквивалент вашего языка.
- Вывод должен быть массивом или ближайшим эквивалентом вашего языка.
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
источник
источник
'"PPCG"'
вместо просто"PPCG"
?Ответы:
Retina ,
686463 байтаили
Я думаю, что это покрывает все случайные грани, даже те, которые не охвачены тестовыми случаями в тесте.
Попробуйте онлайн!
источник
Рубин, 234 байта
Я пытался использовать
find(&:itself)
трюк, который я видел ... где-то, но, очевидно, на.itself
самом деле это не метод. Кроме того, я работаю над игрой в regex, но это уже невозможно прочитать.Если нам не нужно выводить каким-либо причудливым способом (т. Е. Строки не должны заключаться в кавычки в массиве), я могу сохранить целые байты:
Still Ruby, 194 байта:
Я уверен, что могу играть в гольф больше, но я не совсем уверен, как.
Скоро выйдет Ungolfed. В какой-то момент я начал возиться с игрой в гольф, и мне придется дразнить ее.
источник
Python 3, 228 байт
Вот хороший, длинный, два лайнера.
Проверьте это в Python 3. Вот несколько примеров:
источник