└── README.md /README.md: -------------------------------------------------------------------------------- 1 | # PROBLEMA 2 | Dado o seguinte log de um jogo de tiro em primeira pessoa: 3 | ``` 4 | 23/04/2019 15:34:22 - New match 11348965 has started 5 | 23/04/2019 15:36:04 - Roman killed Nick using M16 6 | 23/04/2019 15:36:33 - killed Nick by DROWN 7 | 23/04/2019 15:39:22 - Match 11348965 has ended 8 | 9 | 23/04/2021 16:14:22 - New match 11348966 has started 10 | 23/04/2021 16:26:04 - Roman killed Marcus using M16 11 | 23/04/2021 16:36:33 - killed Marcus by DROWN 12 | 23/04/2021 16:49:22 - Match 11348966 has ended 13 | 14 | 24/04/2020 16:14:22 - New match 11348961 has started 15 | 24/04/2020 16:26:12 - Roman killed Marcus using M16 16 | 24/04/2020 16:35:56 - Marcus killed Jhon using AK47 17 | 24/04/2020 17:12:34 - Roman killed Bryian using M16 18 | 24/04/2020 18:26:14 - Bryan killed Marcus using AK47 19 | 24/04/2020 19:36:33 - killed Marcus by DROWN 20 | 24/04/2020 20:19:22 - Match 11348961 has ended 21 | ``` 22 | 23 | # Resultado esperado 24 | - Montar o ranking de cada partida, com a quantidade de _frags_* e a quantidade de mortes de cada jogador; 25 | - Permitir que o seu código receba logs de múltiplas rodadas em um único arquivo. 26 | 27 | # Observações 28 | - Frag é quando um jogador mata outro player no jogo; 29 | - Frags realizados pelo player WORLD devem ser desconsiderados; 30 | - Permitir que uma rodada tenha múltiplos players, limitado a 20 jogadores por partida. 31 | 32 | # Bônus 33 | Faça caso se identifique com o problema ou se achar que há algo interessante a ser mostrado na solução: 34 | 35 | - Descobrir a arma preferida (a que mais matou) do vencedor; 36 | - Identificar a maior sequência de _frags_ efetuadas por um jogador (streak) sem morrer, dentro da partida; 37 | - Jogadores que vencerem uma partida sem morrerem devem ganhar um "award"; 38 | - Jogadores que matarem 5 vezes em 1 minuto devem ganhar um "award"; 39 | - Ranking Global dos jogadores, computando dados de todas as partidas existentes; 40 | - Permitir que os jogadores sejam classificados em times, quando um jogador mata outro player do mesmo time - Friendly Fire - é computado ```-1``` no score de frags do atirador. 41 | 42 | # Solução 43 | - Seja criativo; 44 | - Explore ao máximo a orientação a objetos e engenharia de software (SOLID; UseCases; Services; Interactors, etc) 45 | - Crie testes unitários e tente usar TDD; 46 | - Faça commits atômicos e progressivos; 47 | - Utilize Ruby on Rails para fazer o upload do arquivo, persistir os dados das partidas e criar e as views necessárias para exibir o ranking, estatisticas dos jogadores e os dados das partidas. 48 | 49 | Utilize o arquivo de read.me para adicionar algum comentário/observação que achar importante. 50 | --------------------------------------------------------------------------------