Tempo de leitura: menos de 1 minuto
O último desafio (CodeKata #2: Caixa Eletrônico) foi bem legal. Existiam muitas pegadinhas e requereu um pouco mais de trabalho e atenção dos participantes. No post do resultado, falei de algumas dificuldades que tive para resolver o problema.
Durante o período deste desafio, rolaram várias conversas e possibilidades de solução, realmente foi legal a interação do pessoal em buscar a melhor solução.
Também recebi alguns feedbacks de como:
- Maior tempo para solucionar o problema, quando o mesmo for mais complexo;
- Entregar pelo menos um caso de teste para guiar o desenvolvimento (como o Codility faz);
- Deixar mais claro o que espero de cada método. No CodeKata #2, o método contarNotas deveria chamar setEstoqueNotas, ou algo assim, desculpa pessoal.
- Um dos meus cenário de teste, estava errado, quando solicitado o saque de R$ 100, esperava receber cinco notas sendo 1 de R$ 50,00, 2 de R$ 20,00 e 2 de R$ 5,00. No entanto, poderia também dispensar 5 notas de R$ 20,00 e o resultado seria o mesmo.
Espero corrigir os problemas reportados neste novo CodeKata. Estão prontos?
Regras
As regras são as mesmas, com exceção do prazo para entrega:
- O desafio será dado, e qualquer leitor poderá participar.
- O participante terá 15 dias para dar uma solução para o problema.
- A solução deverá ser escrita em Java ou Groovy.
- A solução deve ser enviada através do formulário no fim do post.
- As melhores soluções e seus autores serão divulgadas em um post no dia previamente fixado.
Desafio: Restaurante
Enviar a solução até: 17/03/2016
Divulgação do resultado até dia: 21/03/2016
A empresa Nabucodonosor, para melhor atender seus funcionários, planeja fazer uma reforma no seu restaurante, mas para isso necessita saber qual o número máximo de pessoas que são atendidas simultaneamente no local. Para isso a Nabucodonosor, que possui catracas eletrônicas, coletou os seguintes dados:
- Uma collection E, ordenada crescentemente, em que E[i] representa o instante em que a pessoa i entrou no restaurante;
- Uma collection S, em que S[i] representa o instante em que a pessoa i saiu do restaurante.
As collections E e S são inteiros positivos que indicam o número de segundos transcorridos desde a abertura do restaurante. A entrada e a saída do restaurante se faz por uma única catraca, onde passa apenas uma pessoa por vez, de maneira que os tempos registrados em E e S são todos distintos.
Escreva um programa que, dado duas collections de inteiros E e S, ambas de comprimento igual a N, calcula o número máximo de pessoas que estão presentes ao mesmo tempo dentro do restaurante.
Exemplo 1: Dado que receba as seguintes collections E=[14, 67, 98] e S=[1890, 1900, 2123], o resultado esperado é o inteiro 3, pois 3 pessoas estavam simultaneamente no restaurante.
Exemplo 2: Dado que receba as seguintes collections E=[200, 1800] e S=[1543, 2324], o resultado esperado é o inteiro 1, pois não houverem pessoas simultaneamente no restaurante.
Restrições
- 1 ≤ N ≤ 5.000
- 1 ≤ E[i] ≤ 15.000, 1 ≤ i ≤ N
- 1 ≤ S[i] ≤ 15.000, 1 ≤ i ≤ N
- E[i] < E[i+i], para 1 ≤ i < N
- E[i] < S[i], para 1 ≤ i ≤ N
- E[i] ≠ S[j], para todo par i e j, 1 ≤ i ≤ N, 1 ≤ j ≤ N (Observação: j é uma segunda pessoa)
Interface a ser implementada
Implemente a interface:
[code language=”java”]
public interface IControleEntradaSaidaService {
/**
* Escreva um programa que, dado duas collections de inteiros E e S, ambos de comprimento igual a N,
* calcula o número máximo de pessoas que estão presentes ao mesmo tempo dentro do restaurante.
* Cada conjunto de E[i] e S[i], corresponde a entrada e saída de uma pessoa no restaurante.
*
* @param pListaEntradas correspontende a collection E,
* @param pListaSaidas
* @return número máximo de pessoas simultaneamente no restaurante
*/
public Integer calcularMaximoPessoasSimultaneamenteNoRestaurante (
List<Integer> pListaEntradas, List<Integer> pListaSaidas)
throws IllegalArgumentException;
}
[/code]
09/03/2016 – Pessoal esquece da exception, o método pode lançar IllegalArgumentException quando algo inesperado ocorrer!
Nota: Projeto disponível no GitHub.
Espero que gostem!!
Convide seus amigos para o CodeKata #3.
Pessoal, no post de resultado pretendo disponibilizar um ranking de pontuação dos participantes em todos os CodeKatas já publicados.
Enquanto isso, o que vocês acharam este CodeKata?
[polldaddy poll=9330760]
Formulário para envio da solução
Período finalizado.
Abraços

Link permanente
Link permanente
Link permanente
Link permanente
Link permanente
Link permanente