Problem hidden
|This problem was hidden by Editorial Board member probably because it has incorrect language|version or invalid test data, or description of the problem is not clear.|

BRAIN - Brainfuck

Linguagens de programação, times de futebol e religião não se discutem. Cada um tem seus favoritos e não admite que o do outro seja melhor (que me perdoem os corinthianos, palmeirenses e são-paulinos). Um grupo de pesquisadores (que não tinha o que fazer) resolveu escrever uma linguagem de programação ``ideal'' (ideal prá quem, cara pálida?): o Brainfuck.

Brainfuck é uma linguagem de programação cujo funcionamento é muito parecido com uma máquina de Turing. Essa máquina possui como componentes um vetor de 30000 bytes, indexado de 0 a 29999, e um ponteiro, que guarda uma posição desse vetor.

Em cada passo, a máquina realiza uma instrução de acordo com o byte armazenado na posição do vetor indicada pelo ponteiro. Quando esse byte é igual a zero, a execução é terminada.

O conjunto de instruções válidas da linguagem é o seguinte:

Instrução Descrição
> Incrementa o ponteiro.
< Decrementa o ponteiro.
+ Incrementa o byte na posição indicada pelo ponteiro.
- Decrementa o byte na posição indicada pelo ponteiro.
. Imprime o valor do byte na posição indicada pelo ponteiro.
, Lê um byte e armazena na posição indicada pelo ponteiro.
Se não houver nada que possa ser lido (entrada acabou), armazenar zero.
[ Início do loop: Executa o código delimitado até que o byte
na posição indicada pelo ponteiro seja igual a zero.
] Fim do loop.
# Imprime os valores das 10 primeiras posições do vetor.

O ponteiro sempre começa com valor 0, assim como todas as posições do vetor. Na descrição de programas na linguagem brainfuck, caracteres diferentes dos descritos acima são ignorados.

Entrada

A entrada é composta de diversas instâncias. O número de instâncias é dado na primeira linha da entrada. Cada instância começa com uma linha em branco. A próxima linha contém uma cadeia de caracteres não-brancos (ou seja, diferentes de espaço em branco e tabulação), que vai conter a entrada para o programa. Ou seja, os comandos de leitura são realizados nessa cadeia. Toda a entrada para o programa está contida em uma única linha.

Por fim, a terceira linha contém a descrição do programa. Assim como a segunda linha, esta também não contém caracteres brancos e está inteiramente contida em uma única linha (a separação feita no segundo exemplo de entrada foi feita para evitar o estouro de linha).

Tanto a segunda como a terceira linha têm entre 1 e 100000 caracteres.

Saída

Para cada instância, você deverá imprimir um identificador Instancia k, onde h é o número da instância atual. Na linha seguinte você deve imprimir a saída do código fornecido na entrada.

Após cada instância, seu programa deve imprimir uma linha em branco.

Exemplo

Entrada:
2

marrocos
+[>,]<-[+.<-]

nada
++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<
+++++++++++++++.>.+++.------.--------.>+.>.

Saída:
Instancia 1
socorram

Instancia 2
Hello World!


Adicionado por:Wanderley Guimarăes
Data:2007-09-01
Tempo limite:0.178s
Tamanho do fonte:50000B
Memory limit:1536MB
Cluster: Cube (Intel G860)
Linguagem permitida:Todas exceto: ASM64 CLOJURE ERL FSHARP JS-RHINO NODEJS PERL6 PY_NBC SCALA TCL VB.NET
Origem:Seletiva para Maratona de Programação do IME - 2006

hide comments
2011-01-12 10:26:33 Rodrigo Castro
Se o byte na posiçăo indicada pelo ponteiro for igual a zero no meio do código do loop, a execuçăo é "quebrada" e o programa sai do loop?
© Spoj.com. All Rights Reserved. Spoj uses Sphere Engine™ © by Sphere Research Labs.