Skip to content

SamuelSSan28/api-da-nasa

Repository files navigation

Nest Logo

Descrição:

OBJETIVO:

O objetivo desse desafio é demonstrar sua experiência e conhecimento como desenvolvedor, assim saberemos como você pensa e como resolve problemas na vida real.

O PROBLEMA:

Um time de robôs devem ser colocados pela NASA para explorar um terreno em Marte. Esse terreno, que é retangular, precisa ser navegado pelos robôs de tal forma que suas câmeras acopladas possam obter uma visão completa da região, enviando essas imagens novamente para a Terra. A posição de cada robô é representada pela combinação de coordenadas cartesianas (x, y) e por uma letra, que pode representar uma das quatro orientações: NORTH, SOUTH, EAST e WEST.

Para simplificar a navegação, a região "marciana" a ser explorada foi subdividida em sub-regiões retangulares. Uma posição válida de um robô, seria (0, 0, N), que significa que o robô está posicionado no canto esquerdo inferior do terreno, voltado para o Norte.

Para controlar cada robô, a NASA envia uma string simples, que pode conter as letras ‘L’,‘R’ e ‘M’. As letras ‘L’ e ‘R’ fazem o robô rotacionar em seu próprio eixo 90 graus para esquerda ou para direita, respectivamente, sem se mover da sua posição atual. A letra ‘M’ faz o robô deslocar-se uma posição para frente.

Assuma que um robô se movimenta para o NORTE em relação ao eixo y. Ou seja, um passo para o NORTE da posição (x,y), é a posição (x, y+1). Exemplo: Se o robô está na posição (0,0,N), o comando "MML" fará ele chegar na posição (0,2,W).

SOLUÇÃO:

Escreva um programa que permita aos engenheiros da NASA enviar comandos para o robô e saber onde ele se encontra. Os engenheiros irão rodar testes no seu software para garantir que ele se comporta da forma esperada, antes de enviar o robô para Marte Requisitos do desafio:

  • O terreno deverá ser iniciado com 5x5 posições;
  • O robô inicia na coordenada (0,0,N);
  • Deverá ser possível enviar um comando para o Robô que me retorne a posição final dele;
  • O Robô não pode se movimentar para fora da área especificada;
  • Não deve guardar estado do robô para consulta posterior;

Alguns cenários de teste:

Instalação

$ npm install

Running the app

# development
$ npm run start

# watch mode
$ npm run start:dev

# production mode
$ npm run start:prod

Test

# unit tests
$ npm run test

# e2e tests
$ npm run test:e2e

# test coverage
$ npm run test:cov

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors