|
| 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/) |
0 commit comments