O objetivo desse projeto é avaliar o seu conhecimento de mobile (Java, Kotlin, Swift...), Git, Design Patterns, Testing, e resolução de problemas.
Você deve criar uma aplicação para analizar um deck de cartas do usuário. A aplicação deve ter duas rotas e usar esta API para persistir dados.
Esta página mostra um formulário que aceita até 10 cartas válidas e uma Carta de Rotação.
Quando o usuário submeter o formulário, um novo deck deve ser criado [1], as cartas submetidas pelo usuário devem ser adicionadas para 1 ou mais pilhas [2] e o usuário deve ser redirecionado para a Rota #2.
Esta página deve carregar a pilha criada pela Tela #1, usando o deck_id
dado pelo endpoint "A Brand New Deck" [1], mostrando:
- A pilha de cartas em ordem
- A Carta de Rotação
- A Carta de Maior Valor
- Todas as combinações Full House
Tenha em mente que você deve consumir a API porque espera-se que a Tela #2 funcione independentemente da Tela #1. Em outras palavras, uma vez criado um Deck usando a Tela #1, deve-se ser capaz de usar a Tela #2 para acessar o Deck criado usando o deck_id
.
Use este wireframe para servir de inspiração para sua UI. Sinta-se à vontade, use e abuse de suas skills de UI/UX e crie uma experiência única para seus usuários :)
-
Naipes e valores de cartas têm uma sequência que deve ser preservada.
- Naipes: Corações/Hearts (H), Diamantes/Diamonds (D), Paus/Clubs (C) e Espadas/Spades (S).
- Valores: 2, A, K, Q, J, 10, 9, 8, 7, 6, 5, 4, 3
-
Os naipes têm precedência sobre os valores das cartas.
-
A Carta de Rotação especificada pelo usuário define a carta de maior valor do deck.
Se a Carta de Rotação é 6C:
- Do maior para o menor valor de cartas se torna: 6, 5, 4, 3, 2, A, K, Q, J, 10, 9, 8, 7
- Do maior para o menor naipe de cartas se torna: Paus/Clubs, Espadas/Spades, Corações/Hearts e Diamantes/Diamonds.
- Em ambos os casos, a sequência de valores e naipes permanecem preservados.
Dado a carta de rotação 6C, o seguinte é verdadeiro:
- 6S > 10S
- 6S < 10C
Combinações Full House são definidas como todas as mãos possíveis que contem 3 cartas de 1 rank e 2 cartas de outro rank.
A Carta de Maior Valor é definida como a carta que possui o maior rank na pilha.
- Input - Cartas: 7D, AS, QH, 9S, 6D e Carta de Rotação: 2H
- Pilha ordenada: QH, 7D, 6D, AS, 9S
- Carta de Maior Valor: QH
- Combinações Full House: None
- Input - Cartas: 7D, AS, QH, 9S, 6D e Carta de Rotação: 10C
- Pilha ordenada: 9S, AS, QH, 7D, 6D
- Carta de Maior Valor: 9S
- Combinações Full House: None
- Input - Cartas: AS, AD, AC, KH, KS e Carta de Rotação: 2H
- Pilha ordenada: KH, AD, AC, AS, KS
- Carta de Maior Valor: KH
- Combinações Full House:
- AD, AC, AS, KH, KS
- Input - Cartas: 2H, 2D, 2C, 2S, 3H, 3D, 3C e Carta de Rotação: 2H
- Pilha ordenada: 2H, 3H, 2D, 3D, 2C, 3C, 2S
- Carta de Maior Valor: 2H
- Combinações Full House:
- 2H, 2D, 2C, 3H, 3D
- 2H, 2D, 2C, 3H, 3C
- 2H, 2D, 2C, 3D, 3C
- 2H, 2D, 2S, 3H, 3D
- 2H, 2D, 2S, 3H, 3C
- 2H, 2D, 2S, 3D, 3C
- 2H, 2C, 2S, 3H, 3D
- 2H, 2C, 2S, 3H, 3C
- 2H, 2C, 2S, 3D, 3C
- 2D, 2C, 2S, 3H, 3D
- 2D, 2C, 2S, 3H, 3C
- 2D, 2C, 2S, 3D, 3C
- 2H, 2D, 3H, 3D, 3C
- 2H, 2C, 3H, 3D, 3C
- 2H, 2S, 3H, 3D, 3C
- 2D, 2C, 3H, 3D, 3C
- 2D, 2S, 3H, 3D, 3C
- 2C, 2S, 3H, 3D, 3C
[1] https://deckofcardsapi.com/api/deck/new/
[2] https://deckofcardsapi.com/api/deck/<<deck_id>>/pile/<<pile_name>>/add/?cards=AS,2S
- Você deve disponibilizar seu código em um repositório público ou privado no Github.
- Envie o link do repositório para [email protected].
- Exceto por biblioteca de cartas, você pode usar qualquer biblioteca que quiser.
- Caso use uma biblioteca para boilerplate, você deve criar um git commit separado para os arquivos criados por essa biblioteca.
- Ficaríamos muito contentes se escrevesse testes.
- Você deve incluir um Readme com instruções em como rodar o projeto, testar e usar a aplicação.
- Balanceie seu tempo com sabedoria entre diferentes áreas deste desafio. Estimamos que você deve gastar aproximadamente 12 horas para completar esse desafio.