Skip to content

Latest commit

 

History

History
63 lines (48 loc) · 2.09 KB

README.md

File metadata and controls

63 lines (48 loc) · 2.09 KB

Sistema Robo

Suponha que voc� precisa implementar um rob™ controlado pelos seguintes comandos:

L - Virar 90 graus para a esquerda
R - Virar 90 graus para a direita
M - Mover um passo para frente
T - Se tele-transportar para uma determinada cŽlula 

O rob™ anda em um plano cartesiano, em um espa�o de tamanho especifico, com quatro dire�›es Norte(N), Sul (S), Leste (E), Oeste (W). Ele n‹o pode se mover ou tele transportar para fora desse espa�o. O input do problema vem de um arquivo com o seguinte formato:

1a linha: o tamanho do espa�o que o rob™ pode usar - X<espa�o>Y 2a linha: localiza�‹o inicial do rob™ e sua dire�‹o - X<espa�o>Y<espa�o>D 3a linha em diante: comandos do rob™ sem separa�‹o. A exce�‹o Ž o comando de teletransporte, que deve ficar em sua pr—pria linha com o seguinte formato - T<espa�o>X<espa�o>Y

Um exemplo (sem os coment‡rios):

10 10              # o tamanho do espa�o Ž 10 por 10
2 5 N              # sua localiza�‹o inicial Ž (2,5) e a sua dire�‹o Ž Norte
LLRRMMMRLRMMM      # um conjunto de comandos
T 1 3              # o rob™ se tele transporta para o ponto (1,3)
LLRRMMRMMRM        # um outro conjunto de comandos

O resultado final deve ser dado pelo rob™ para indicar sua posi�‹o e para onde ele est‡ apontando, por exemplo:

2 4 E              # na posi�‹o 2 4, virado para Leste

Assuma que a cŽlula imediatamente ao norte de (x, y) Ž (x, y + 1) e a leste Ž (x+1,y)

Para executar o Programa

Requer Perl instalado em #!/usr/bin/perl. Perl vem automaticamente em Mac OSX.

./robo.pl comandos.txt 
2 1 W

Para maiores detalhes, usar o argumento "verbose"

rpaskinmbpx7:sistemaRobo rpaskin$ ./robo.pl comandos.txt verbose
## Tamanho do mapa: 10 x 10
## Posicao inicial: 2 5 N
## LINE 3 = [LLRRMMMRLRMMM]
## Estava para N, cmd [L], agora para W
## Estava para W, cmd [L], agora para S
...
## Estava em 3 1 W, cmd [M], agora em 2 1 W
############ POSICAO FINAL ############ x=2, y=1, direcao=W
2 1 W

Para executar outros comandos crie outro arquive e passe-o como parametro, ou modifique o arquivo de comandos existente.