Skip to content

Instantly share code, notes, and snippets.

@tucaz
Created August 9, 2012 18:13
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save tucaz/3306694 to your computer and use it in GitHub Desktop.
Save tucaz/3306694 to your computer and use it in GitHub Desktop.
A Sonda Marciana
Regras
O problema descrito abaixo requer alguma forma de entrada de dados. Você está livre pra implementar qualquer mecanismo de entrada de dados que desejar na sua solução (dados hard coded dentro de um test unitário, por exemplo).
Você deve prover evidência suficiente de que sua solução está completa para, no mínimo, indicar que funciona corretamente para o consjunto de dados de testes fornecidos.
Recomendamos que você utilize um framework de testes como NUnit ou MSTest. Mesmo que você não tenha os utilizado antes, são fáceis de aprender e incrivelmente uteis.
O código que você escrever deve ter qualidade de “ambiente de produção” e mais importante que isso, deve ser um código do qual você se orgulhe.
O programa
Um esquadrão de sondas robóticas da NASA irá pousar numa planície em Marte.
Essa planície, que é curiosamente retangular, deve ser navegada pelas sondas para que suas cameras on-board consigam capturar uma visão completa do terreno em volta para mandar as imagens de volta a Terra.
A posição de uma sonda é representada pela combinação de coordenadas X e Y e uma letra representando um dos quatro pontos cardeais de um compasso: (N)orte, (S)ul, (L)este e (O)este. A planícia é dividida em um grid para simplificar a navegação. O exemplo de uma posíção pode ser 0, 0, N, o que significa que a sonda está no canto inferior esquerdo direcionada (com sua orientação) para o Norte.
Para controlar uma sonda a NASA envia simples caracteres. Os caracteres possíveis são ‘E’, ‘D’ e ‘A’.
‘E’ e ‘D’ fazem a sonda girar 90 graus a esquerda ou direita respectivamente, sem se mover da posição atual. ‘A’ faz com que a sonda ande um ponto para frente mantendo a orientação.
Assuma que o primeiro ponto a Norte diretamente a partir de (X, Y) seja (X,Y+1).
Entrada de Dados
A primeira linha de input é referente as coordenadas do canto superior direito da planície. As coordenadas do canto inferior esquerdo são 0,0.
O restante do input refere-se as sondas que foram enviadas. Cada sonda tem duas linhas de input. A primeira linha fornece as coordenadas da posição inicial da sonda e a segunda linha é uma série de instruções informando a sonda como explorar a planície.
A posição é feita de dois inteiros e uma letra, separados por espaço, correspondente as coordenadas X e Y e a orientação da sonda.
Cada sonda será finalizada em sequência, o que singnifica que a segunda sonda não irá se mover até que a primeira tenha terminado de se mover.
Saida de Dados
A saida de dados para cada sonda deve ser suas coordenadas finais e orientação.
Input de Teste
5 5
1 2 N
EAEAEAEAA
3 2 L
AADAADADDA
Saida esperada
1 3 N
5 1 L
@jonathascosta
Copy link

5 1 L? Não seria 5 0 L?

@tucaz
Copy link
Author

tucaz commented Sep 19, 2013

Sim. Foi um erro acidental, mas é bom pra ver se quem resolve está atento e consegue apontar o erro :)

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