Skip to content

Commit 80c31fd

Browse files
Add new exercise 'HASHADIQ - Hash'
1 parent cfc33de commit 80c31fd

File tree

3 files changed

+130
-0
lines changed

3 files changed

+130
-0
lines changed

2018-10-06/README.md

Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
# HASHADIQ - Hash
2+
3+
Neste problema, pede-se para armazenar, gerenciar e buscar por indivíduos definidos por um identificador único (inteiro) e pelas seguintes informações:
4+
5+
- Primeiro nome
6+
- Último nome
7+
- Data de nascimento
8+
- Telefone
9+
10+
## Entrada
11+
12+
A entrada será feita por `add`, `del`, `info` e `query` descritos abaixo...
13+
14+
### add
15+
16+
O comando `add` recebe e armazena todos dados do individuo, e retorna erro se já existir individuo com mesmo identificador.
17+
18+
Sintaxe:
19+
```
20+
add <id> <first_name> <last_name> <birtday> <phone_number>
21+
```
22+
23+
Saídas previstas:
24+
- Caso de sucesso: Comando não retorna nada, apenas adiciona;
25+
- Caso de erro: Exibe erro na quando a inserção de individuo tem um identificador duplicado (já cadastrado anteriormente).
26+
27+
### del
28+
29+
O comando `del` remove todos dados relacionados a um determinado identificador, e retorna erro se não existir individuo com o identificador fornecido.
30+
31+
Sintaxe:
32+
```
33+
del <id>
34+
```
35+
36+
Saídas previstas:
37+
- Caso de sucesso: Comando não retorna nada, apenas deleta;
38+
- Caso de erro: Exibe erro caso o identificador solicitado não exista.
39+
40+
### info
41+
42+
O comando `info` imprime todos dados de um determinado identificador, e retorna erro se não existir individuo com o identificador fornecido.
43+
44+
Sintaxe:
45+
```
46+
info <id>
47+
```
48+
49+
Saídas previstas:
50+
- Caso de sucesso: Imprime todos os dados de um determinado identificador;
51+
- Caso de erro: Exibe erro caso o identificador solicitado não exista.
52+
53+
### query
54+
55+
O comando `query` realiza uma busca nos indivíduos cadastrados. Conforme as seguintes tags de busca:
56+
57+
- fn: Primeiro nome
58+
- ln: Ultimo nome
59+
- bd: Data de nascimento
60+
- pn: Telefone
61+
62+
Sintaxe:
63+
```
64+
query (<tag>:<valor>)+
65+
```
66+
67+
Saídas previstas:
68+
- Caso de sucesso: Retorna todos os identificadores (somente os ids) que respeitem os critérios da busca na ordem crescente;
69+
- Caso de erro: Retorna uma linha vazia (quando nenhum identificador foi encontrado).
70+
71+
### exit
72+
73+
A execução é encerrada com o comando `exit`.
74+
75+
Sintaxe:
76+
```
77+
exit
78+
```
79+
80+
# Exemplos
81+
82+
```
83+
>>> add 123 Roberto Nascimento 01/01/1960 +55-21-0190-0190
84+
>>> add 123 Joao Souza 11/10/2000 103-99
85+
ID 123 ja cadastrado.
86+
>>> add 09 Andre Matias 01/01/1970 +55-21-0190-0190
87+
>>> add 222 Diogo Fraga 01/06/1967 +55-21-0190-0190
88+
>>> add 99 Seu Barbosa 01/01/1960 +55-21-0190-0190
89+
>>> add 100 Seu Beirada 01/01/1960 +55-21-9999-9999
90+
>>> add 155 Andre Fortunato 02/01/1962 +55-21-0190-0190
91+
>>> query bd:01/01/1960
92+
99 100 123
93+
>>> query bd:01/01/1960 fn:Seu
94+
99 100
95+
>>> query bd:01/01/1960 fn:Seu pn:+55-21-9999-9999
96+
100
97+
>>> info 100
98+
Seu Beirada 01/01/1960 +55-21-9999-9999
99+
>>> del 99
100+
>>> info 99
101+
ID 99 nao existente.
102+
>>> del 99
103+
ID 99 nao existente.
104+
>>> query fn:XXX
105+
106+
>>> query bd:01/01/1960 fn:Seu
107+
100
108+
>>> exit
109+
Bye bye!
110+
```
111+
112+
# Dicas para manter sua sanidade mental
113+
114+
- Não tenha pressa, faça teste por teste, faça comando por comando, veja se funciona, depois passe para a implementação do próximo (baby steps!);
115+
- Não se preocupe com entradas inválidas, respeite os exemplos e informe valores nos mesmos formatos demonstrados;
116+
- Usem dicionários, não paga nada!
117+
- Não é necessário persistir o dado! Podemos trabalhar com as informações em memória!
118+
119+
# Referência
120+
121+
- [HASHADIQ - Hash](https://br.spoj.com/problems/HASHADIQ/)

2018-10-06/extras.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
Sites:
2+
- https://www.meetup.com/pt-BR/Grupy-SP
3+
- https://www.meetup.com/pt-BR/Dojo-SP/
4+
- https://groups.google.com/forum/#!forum/python-sorocaba
5+
- @coding_dojo_sorocaba (telegram)
6+
7+
Repositório:
8+
- https://github.com/python-sorocaba/coding-dojo/

2018-10-06/participantes.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
- @rafaelhenrique

0 commit comments

Comments
 (0)