Escreva uma função para implementar um interpretador do Brain ****. A função terá uma string como parâmetro e deve retornar uma string como saída. Mais detalhes são fornecidos abaixo:
O RCBF é um conjunto de compiladores e intérpretes da Brainf *** escritos para o Rosetta Code em vários idiomas.
Abaixo estão os links para cada uma das versões do RCBF.
Uma implementação só precisa implementar corretamente as seguintes instruções:
{|
!Comando
!Descrição
| -
| style = "text-align: center" | >
|| Mova o ponteiro para a direita
| -
| style = "text-align: center" | <
|| Mova o ponteiro para a esquerda
| -
| style = "text-align: center" | +
|| Incrementar a célula de memória sob o ponteiro
| -
| style = "text-align: center" | -
|| Decrementar a célula de memória sob o ponteiro
| -
| style = "text-align: center" | .
|| Saída do caractere representado pela célula no ponteiro
| -
| style = "text-align: center" | ,
|| Insira um caractere e armazene-o na célula no ponteiro
| -
| style = "text-align: center" | [
|| Saltar após a correspondência ]
se a célula abaixo do ponteiro for 0
| -
| style = "text-align: center" | ]
|| Pular de volta para a correspondência [
se a célula abaixo do ponteiro for diferente de zero
|}
Qualquer tamanho de célula é permitido, o suporte EOF ( E nd- O - F ile) é opcional, assim como se você tem memória limitada ou ilimitada.
brain(bye)
deve retornar uma string
testString: 'assert(typeof brain(bye) === "string", "brain(bye)
should return a string");'
- text: 'brain("++++++[>++++++++++<-]>+++++.")
++++++++++<-]>+++++."),"A", "brain("++++++[>++++++++++<-]>+++++.")
brain(bye) deve retornar Goodbye, World!\\r\\n
'
testString: 'assert.equal(brain(bye), "Goodbye, World!\r\n", "brain(bye)
should return Goodbye, World!\\r\\n
");'
- text: 'brain(hello)
deve retornar Hello World!\\n
''
testString: 'assert.equal(brain(hello), "Hello World!\n", "brain(hello)
should return Hello World!\\n
");'
- text: 'brain(fib)
deve retornar 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89
'
testString: 'assert.equal(brain(fib), "1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89", "brain(fib)
should return 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89
");'
```