Skip to content

Instantly share code, notes, and snippets.

@diegodfsd
Last active August 30, 2018 16:39
Show Gist options
  • Save diegodfsd/136c6f8ea8d9d06968049091a5bc44e6 to your computer and use it in GitHub Desktop.
Save diegodfsd/136c6f8ea8d9d06968049091a5bc44e6 to your computer and use it in GitHub Desktop.
logstore challenge
Os dois desafios abaixo pretendem avaliar a capacidade do desenvolver de resolver problemas lógicos, por favor, leiam atentamente as instruções abaixo:
1. Você deve escolher ao menos um dos desafios.
2. O desafio deve ser resolvido individualmente.
3. É importante que os métodos criados tenham algum comentário que descreva sua finalidade.
4. Os desafios devem ser resolvidos, preferencialmente com C# ou Javascript
5. Não é obrigatório, mas vamos considerar um diferencial se forem criados testes
Desafios
--------------------------------------------------
1. Você abacou de ser contradado como desenvolvedor na ACME S/A para substituir um dev que deixoua empresa recentemente,
esse dev criou uma função "encrypt" para mascarar dados importantes, como senhas de banco de dados, senha para acessar as maquinas e etc.
A função "encrypt" converte uma strings em um número e já foram mascarados diversos dados importantes, infelizmente o dev que a criou saiu
antes de ter tido a oportunidade de criar a função que reverte a máscara e agora você precisa criar uma função "decrypt" para desfazer a máscara
dos dados que foram mascarados. Sua função "decrypt" deve receber um número e retornar a string correspondente a esse número.
A função "encrypt" é definida com o seguinte código:
int encrypt(string s) {
var h = 7
var letters = "acdegilmnoprstuw"
for(var i = 0; i < s.length; i++) {
h = (h * 37 + letters.indexOf(s[i]))
}
return h
}
Para validar sua função "decrypt", você deve considerar que o número "25180339514906" é o resultado da conversão da palavrar "logstore"
após passar pela função "encrypt".
2. A ACME S/A decidiu investir pesado em uma solução que vai ajudar os supermedados identificarem quais produtos precisam ser repostos
nas gondolas. Normalmente quem repõe os produtos são promotores de cada marca que trabalham em horarios especificos porque atendem mais
de um supermercado. O diferencial da solução da ACME S/A é que os consumidores vão poder indicar que o produto esta faltando e os
promotores serão informados, mas com essa nova dinâmica os promotores vão precisar visitar mercados que nunca visitaram e precisam ser
capazes de encontrar os produtos que precisam ser repostos na gondola no menor tempo possível, afinal, o cliente já identificou que o
produto esta em falta.
Você ficou responsável por criar um algoritmo que calcule a distância entre o ponto A e o ponto B, considere que todas as lojas foram
mapeadas e temos coorcenadas cartesianas para cada metro quadrado das lojas, como em um tabuleiro de batalha naval. Seu algoritmo deve
ser capaz de, dadas as coordenadas cartesianas A(x,y) e B(x,y), identificar o caminho mas curto sem considerar obstaculos em um mapa de
30x20 metros quadrados que você deve representar em uma matriz de 30x20 posições e cada posição representa uma coordenada cartesiana
(x,y). O algoritimo deve considerar apenas movimentos verticais e horizontais como na imagem https://koenig
media.raywenderlich.com/uploads/2011/09/Cat-Maze_H.jpg.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment