Estive trabalhando outra linguagem de golfe baseada pilha chamada Stackgoat . Neste desafio, você escreverá um Tokenizer para Stackgoat (ou realmente qualquer linguagem geral baseada em pilha).
Exemplos
"PPCG"23+
["PPCG", '23', '+']
'a "bc" +
['"a"', '"bc"', '+']
12 34+-"abc\"de'fg\\"
['12', '34', '+', '-', '"abc\"de'fg\\"']
"foo
['"foo"']
(empty input)
[]
' ""
['" "', '""']
Especificação
Os três tipos com os quais você precisará lidar são:
- Strings, qualquer coisa dentro
""
- Números, qualquer sequência de dígitos
- Operadores, qualquer outro caractere único, além de espaço em branco
O espaço em branco é essencialmente ignorado, a menos que esteja dentro de uma string ou separe dois números.
Especificação de string / caractere:
- As cadeias são delimitadas por a
"
e quando um\
é encontrada, o próximo caractere deve ser escapado. - Os caracteres são precedidos por ae
'
o caractere após'
deve ser convertido em uma string literal.'a
->"a"
'
sempre terá um personagem depois- As aspas finais devem ser inseridas automaticamente
Regras:
- Nenhuma forma de
eval
é permitida
Entrada / Saída:
- A entrada pode ser obtida através de STDIN, parâmetros de função ou equivalente do seu idioma.
- A saída deve ser uma matriz ou o equivalente mais próximo do seu 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
fonte
fonte
'"PPCG"'
vez de apenas"PPCG"
?Respostas:
Retina ,
686463 bytesou
Eu acho que isso abrange todos os casos extremos, até mesmo aqueles não cobertos pelos casos de teste do desafio.
Experimente online!
fonte
Ruby, 234 bytes
Eu tentei usar o
find(&:itself)
truque que vi ... em algum lugar, mas aparentemente.itself
não é realmente um método. Além disso, estou trabalhando para reduzir a regex, mas já é ilegível.Se não precisarmos produzir de maneira sofisticada (por exemplo, as strings não precisam ser citadas na matriz), posso salvar um lote inteiro de bytes:
Ainda Ruby, 194 bytes:
Tenho certeza de que posso jogar mais, mas não sei bem como.
Ungolfed em breve. Comecei a mexer com o jogador de golfe diretamente em algum momento e terei que provocá-lo.
fonte
Python 3, 228 bytes
Aqui está um belo, longo, dois forros.
Teste-o no Python 3. Aqui estão alguns exemplos:
fonte