Instruções para a resolução dos problemas propostos
- O programa relativo à resolução de cada problema deve
ser introduzido na janela correspondente.
- Cada programa é uma lista de comandos
 
1:comando1;
2:comando2;
3:comando3;
...
k:comandok;
 
onde, para cada 1 ≤ j ≤ k, comandoj é
ZERO[p], SUCC[p], COPY[p,q], JUMP[p,q,r] (com r ≤ k),
HALT[ ] ou um dos oráculos disponíveis,
sendo p,q,r inteiros positivos.
- O fim da execução de cada programa deve sempre corresponder à execução de HALT[ ].
- Os programas submetidos devem ter comprimento inferior a 40.
Oráculos disponíveis
- SUM[p, q, s]
sendo x o conteúdo do registo Rp e y o conteúdo do registo Rq
coloca no registo Rs o valor x+y
(só altera o registo Rs)
- PROD[p, q, s]
sendo x o conteúdo do registo Rp e y o conteúdo do registo Rq
coloca no registo Rs o valor x.y
(só altera o registo Rs)
- SUB1[p, s]
sendo x o conteúdo do registo Rp
coloca no registo Rs o valor do máximo do conjunto {0, x-1}
(só altera o registo Rs)
- SUB[p, q, s]
sendo x o conteúdo do registo Rp e y o conteúdo do registo Rq
coloca no registo Rs o valor do máximo
do conjunto {0, x-y}
(só altera o registo Rs)
- DIV[p, q, s]
sendo x o conteúdo do registo Rp e y o conteúdo do registo Rq
coloca no registo Rs
o valor do quociente
da divisão inteira de x por y se y é diferente de 0
e 0 se y = 0
(só altera o registo Rs)
- MOD[p, q, s]
sendo x o conteúdo do registo Rp e y o conteúdo do registo Rq
coloca no registo Rs
o valor do resto
da divisão inteira de x por y se y é diferente de 0
e x se y = 0
(só altera o registo Rs)
- DIGN[p, q, s]
sendo x o conteúdo do registo Rp e y o conteúdo do registo Rq
coloca no registo Rs
o x-ésimo dígito de y
se x é diferente de 0 e menor ou igual
que o número de dígitos de y
e 10 caso contrário (só altera o registo Rs)
Nota: considera-se
que o primeiro dígito é o das unidades, o segundo o das dezenas
e assim sucessivamente
- LESS[p, q, s]
sendo x o conteúdo do registo Rp e y o conteúdo do registo Rq
coloca 1 no registo Rs se x for menor que y
e 0 caso contrário (só altera o registo Rs)
- PRIMEQ[p, s]
sendo x o conteúdo do registo Rp
coloca 1 no registo Rs se x for número primo e 0 caso contrário
(só altera o registo Rs)
- PRIMEN[p,s]
sendo x o conteúdo do registo Rp
coloca no registo Rs
o x-ésimo número primo se x é diferente de 0
e 0 se x=0
(só altera o registo Rs)
- DEZ[p]
coloca o inteiro 10 no registo Rp (só altera o registo Rp)
- LENGTH[p,s]
sendo x o conteúdo do registo Rp coloca no registo Rs o número de
dígitos da representação decimal de x
(só altera o registo Rs)
Última actualização: 17 de Novembro de 2004.