Skip to content

Instantly share code, notes, and snippets.

@jonataa
Last active July 16, 2025 12:45
Show Gist options
  • Select an option

  • Save jonataa/b909e9a5ff4b598920ffbdc3261eadb1 to your computer and use it in GitHub Desktop.

Select an option

Save jonataa/b909e9a5ff4b598920ffbdc3261eadb1 to your computer and use it in GitHub Desktop.

O Desafio do Robô de Brinquedo

A aplicação é uma simulação de um robô de brinquedo movendo-se em um tampo de mesa quadrado, com dimensões de 5 unidades x 5 unidades. Não há outras obstruções na superfície da mesa. O robô pode se mover livremente pela superfície da mesa. Qualquer movimento que resultaria na queda do robô da mesa é prevenido, no entanto, comandos de movimento válidos adicionais ainda são permitidos. A aplicação lê um arquivo usando um nome passado na linha de comando, os seguintes comandos são válidos:

PLACE X,Y,F
MOVE
LEFT
RIGHT
REPORT
  • PLACE colocará o robô de brinquedo na mesa na posição X,Y e voltado para NORTH, SOUTH, EAST ou WEST.
  • A origem (0, 0) é o canto mais SUDOESTE.
  • Todos os comandos são ignorados até que um PLACE válido seja feito.
  • MOVE moverá o robô de brinquedo uma unidade para frente na direção em que ele está atualmente virado.
    • LEFT e RIGHT giram o robô 90 graus na direção especificada sem alterar a posição do robô.
    • REPORT anuncia o X, Y e F do robô.

Presume-se que o arquivo tenha codificação ASCII. Presume-se que o comando PLACE tenha apenas um espaço, ou seja, PLACE 1, 2, NORTH é um comando inválido. Todos os comandos devem estar em maiúsculas; todos os comandos em minúsculas ou com letras mistas serão ignorados.

Em última análise, esta descrição quer que construamos uma aplicação que receba uma lista de comandos, como:

commands.txt

PLACE 0,0,NORTH
MOVE
RIGHT
MOVE
LEFT
MOVE
REPORT

Assim que a aplicação receber esses comandos, ela deve executar uma simulação para um robô de brinquedo que obedeça a esses comandos e, se a lista de comandos incluir um comando REPORT, a aplicação nos informará onde o robô está:

$ toyrobot.py commands.txt

Robot is currently at (1, 2) and it's facing NORTH

Neste exemplo, as duas coordenadas referem-se às coordenadas EAST e NORTH do robô, respectivamente. O robô começou em (0, 0) e estava virado para NORTH. O robô então se move (para (EAST=0, NORTH=1) ou (0, 1) para abreviar), vira à direita, move-se novamente (para (1, 1)), vira à esquerda e se move uma última vez (para (1, 2)) antes de relatar sua localização. O robô nos informa que possui as coordenadas de (EAST=1, NORTH=2), pois se moveu para EAST uma vez e para NORTH duas vezes, dados os comandos que fornecemos a ele.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment