Giter VIP home page Giter VIP logo

paulosalum / marsrobot Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 83 KB

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 subdividia 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) 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: Movimento com rotações para direita: curl -s --request POST http://localhost:8080/rest/mars/MMRMMRMM Saída esperada: (2, 0, S) Movimento para esquerda: Entrada: curl -s --request POST http://localhost:8080/rest/mars/MML Saída esperada: (0, 2, W) Repetição da requisição com movimento para esquerda: Entrada: curl -s --request POST http://localhost:8080/rest/mars/MML Saída esperada: (0, 2, W) Comando inválido: curl -s --request POST http://localhost:8080/rest/mars/AAA Saída esperada: 400 Bad Request Posição inválida: curl -s --request POST http://localhost:8080/rest/mars/MMMMMMMMMMMMMMMMMMMMMMMM Saída esperada: 400 Bad Request Requisitos técnicos: Deve ter teste O desafio deve ser entregue escrito utilizando Java 8; O projeto deverá ser compilado utilizando o Maven; Deverão ser utilizadas apenas as biblioteca do SpringBoot e JUnit; O desafio será executado como uma aplicação SpringBoot; A interface de comunicação com o robô é REST; Requisito para entrega: Código estar em repositório GitHub. O prazo para entrega do desafio é de 7 dias. Após a entrega do desafio, faremos a avaliação e daremos um retorno que pode levar até 2 semanas. Boa sorte :)

Shell 28.90% Batchfile 22.31% Java 48.79%

marsrobot's Introduction

MarsRobot

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 subdividia 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)

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:

Movimento com rotações para direita:

curl -s --request POST http://localhost:8080/rest/mars/MMRMMRMM
Saída esperada: (2, 0, S)

Movimento para esquerda:

Entrada: curl -s --request POST http://localhost:8080/rest/mars/MML
Saída esperada: (0, 2, W)

Repetição da requisição com movimento para esquerda:

Entrada: curl -s --request POST http://localhost:8080/rest/mars/MML
Saída esperada: (0, 2, W)

Comando inválido:

curl -s --request POST http://localhost:8080/rest/mars/AAA
Saída esperada: 400 Bad Request

Posição inválida:

curl -s --request POST http://localhost:8080/rest/mars/MMMMMMMMMMMMMMMMMMMMMMMM
Saída esperada: 400 Bad Request

Requisitos técnicos:

  • Deve ter teste
  • O desafio deve ser entregue escrito utilizando Java 8;
  • O projeto deverá ser compilado utilizando o Maven;
  • Deverão ser utilizadas apenas as biblioteca do SpringBoot e JUnit;
  • O desafio será executado como uma aplicação SpringBoot;
  • A interface de comunicação com o robô é REST;

marsrobot's People

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.