Algoritmos e Estrutura de Dados I - AE22CP - 2012/1 |
TRABALHO PRÁTICO 2 |
Bruno César Ribas e Silvio Boss |
- Resultado Final do RANK
- O Mundo Pokemon
- Enunciado do trabalho
- Formato de Entrada
- Batalha
- Formato da Saída
- Execução
- Exemplos de Entrada e Saída
- Ranking
Resultado Final do RANK
- 3/Out
A etapa final do rank foi executada dia 3 de outubro, com uma entrada que possui 10 pokemons com no máximo 20000 habilidades e 21769 inimigos com no máximo 500 fraquezas, o arquivo de entrada possui 68MB. Mais informações de todas as execuções do rank e link para download das entradas acesse a página do RANK.
Gostaria de parabenizar todos os alunos que enviaram o trabalho para o sistema de rank.
Nome | Golpes Utilizados | Tempo de Execucao | Ponto extra |
Douglas Ortlieb | 45409 | 4.41 | 10 |
Willian Leonardo | 45409 | 9.06 | 10 |
Bruno Ribas | 45409 | 11.18 | -- |
Matheus Bauer | 45409 | 16.64 | 10 |
Maycon Douglas | 45409 | 3298.57 | 5 |
stanga | 45409 | 3756.35 | 5 |
Dionei Michem | 45409 | 4664.27 | 5 |
Renan Ribeiro Andre H | 45409 | 5103.15 | 5 |
Marcio | 45409 | 5779.02 | 5 |
Gil | 45409 | 6553.25 | 5 |
Fabricio Monitor | 45409 | 8540.08 | -- |
Fernanda Moreira | 45409 | 9854.14 | 5 |
Dalmo Hollen | 45409 | 17760.93 | 5 |
O Mundo Pokemon
O mundo dos treinadores Pokemon está bem agitado com a aproximação do torneio internacional de batalhas Pokemon.
Ash está com diversas dificuldades em continuar seu treinamento pois Mist e Brock não ajudam mais como antigamente. Mist resolveu voltar a treinar com suas irmãs e Brock só pensa em seu namoro com a enfermeira Joy de Hyrule. Apesar das dificuldades Ash não desiste e quer se tornar o maior medalhista de todos os tempos com seus Pokemons e quer fazer um treinamento rigoroso.
Uma batalha Pokemon consiste em uma disputa entre dois Pokemons comandados por seus respectivos mestres e por isso o treinador deve conhecer seus Pokemons, e acima de tudo, o treinador deve ser o melhor amigo do Pokemon e o Pokemon o melhor amigo de seu treinador. Quando essa relação simbiótica está feita as batalhas poderão fluir de uma forma jamais vista.
Para continuar o treinamento você foi contratado para desenvolver um programa de computador que ajude Ash a escolher o Pokemon certo e executar o melhor golpe para nocautear o inimigo.
Enunciado do trabalho
O Enunciado do trabalho está disponível em PDF.
Formato de Entrada
O arquivo de entrada deve ser seguido rigorosamente, como foi descrito no enunciado em pdf.
Segue um exemplo de entrada:
3 Machoke [ secreto19: 5 ] Electrode [ golpeN: 4, secreto7: 3, golpe35: 3 ] Clefairy [ secreto19: 1, smog: 2, ember: 2, secreto2: 1, golpeR: 3 ] Ludicolo [ golpeN: 1, smog: 2, secreto2: 2, golpeR: 1 ] Klink [ smog: 3, secreto2: 4, golpeR: 5, golpeN: 3, secreto7: 1 ] Snover [ golpeN: 2, secreto7: 4, secreto19: 2, golpe35: 4 ] Escavalier [ secreto19: 2, golpe35: 3, ember: 2, secreto2: 2, smog: 3 ] FIM
Batalha
- 23/Ago
Uma batalha consiste em analisar o Pokemon inimigo e identificar sua fraqueza e depois escolher um Pokemon que você seja o dono e aplicar o seu golpe no inimigo tantas vezes seja necessário para tirar pelo menos 100 pontos de energia.
Cada Fragilidade de um Pokemon inimigo possui o mesmo nome da Habilidade de seu Pokemon. O ataque é contabilizado multiplicando a força da habilidade do seu Pokemon com o multiplicador da Fragilidade para essa Habilidade.
Um inimigo pode ser atacado por apenas 1 Pokemon seu e cada inimigo possui 100 de energia.
Um exemplo de ataque para a entrada definida acima é: o Pokemon 'Electrode' é seu e possui o golpe 'golpeN', o Pokemon inimigo 'Ludicolo' possui a fragilidade 'golpeN'. A força do golpe 'golpeN' de 'Electrode' é 4 e a fraqueza para esse golpe de 'Ludicolo' é 1. Então aplicando o 'golpeN' 25 vezes em 'Ludicolo' gera a conta 25 * (4 * 1) = 100. Logo 25 vezes o 'golpeN' de 'Electrode' em 'Ludicolo' é o suficiente para derrotá-lo.
Formato da Saída
- 23/Ago
As batalhas acontecem na ordem do arquivo de entrada, ou seja, você deve derrotar os inimigos na ordem em que aparecem no arquivo de entrada.
Por exemplo, considerando a entrada definida acima, o seu programa deve imprimir primeiro como você derrota o inimigo "Ludicolo" e depois como derrota o "Klink" depois o "Snover" e por fim como derrotar o "Escavalier".
Uma possível solução é:
Electrode golpeN 25 Clefairy golpeR 7 Electrode golpe35 9 Machoke secreto19 10
Nesse exemplo de solução significa que você usou o 'Electrode' com o golpe 'golpeN' 25 vezes para derrotar o primeiro inimigo, que é o 'Ludicolo'. Depois usou o 'Clefairy' com o golpe 'golpeR' 7 vezes para derrotar o Klink. Depois o 'Electrode' com o 'gople35' 9 vezes para derrotar o 'Snover', e por fim usou o 'Machoke' com o golpe 'secreto19' 10 vezes para derrotar o 'Escavalier'
Execução
- atualização 23/Ago
A entrada e saída do programa devem ser feitas pela entrada e saída padrão ( como se estivesse lendo as informações pelo teclado)
exemplo de execução:
./meuprograma < input-3pokemon-10inimigos.txt
Onde "meuprograma" é o nome do executável do trabalho (pode ser outro nome qualquer), e "input-3pokemon-10inimigos.txt" é o arquivo que contém a descrição da batalha.
Quando executar o seu programa da forma indicada abaixo , o sinal '<' significa que o conteúdo do 'input-3pokemon-10inimigos.txt' será passado ao programa como se ele estivesse sendo lido do teclado.
Exemplo da solução do professor para o exemplo com 3 pokemons e 10 inimigos
brunoribas@winterfell:~$ ./pokemon < input-3pokemon-10inimigos.txt Electrode golpe35 9 Clefairy ember 10 Machoke secreto19 4 Machoke secreto19 5 Clefairy golpeR 12 Electrode golpe35 7 Electrode golpeN 25 Clefairy golpeR 7 Electrode golpe35 9 Electrode secreto7 9
Exemplos de Entrada e Saída
- atualização 19/Setembro
- Exemplo de entrada com 3 pokemons e 10 inimigos
- Exemplo de solução
- Exemplo de entrada com 5 pokemons e 10 inimigos
- Exemplo de solução
- Exemplo de entrada com 10 pokemons e 20 inimigos
- Exemplo de solução
- Exemplo de entrada com 1 pokemons e 10 inimigos
- Exemplo de entrada com 1 pokemons e 15 inimigos
- Exemplo de entrada com 1 pokemons e 64 inimigos
- Exemplo de entrada com 4 pokemons e 10 inimigos
- Exemplo de entrada com 4 pokemons e 15 inimigos
- Exemplo de entrada com 4 pokemons e 64 inimigos
- Exemplo de entrada com 20 pokemons e 10 inimigos
- Exemplo de entrada com 20 pokemons e 15 inimigos
- Exemplo de entrada com 20 pokemons e 64 inimigos
- Exemplo de entrada com 50 pokemons e 10 inimigos
- Exemplo de entrada com 50 pokemons e 15 inimigos
- Exemplo de entrada com 50 pokemons e 64 inimigos
- Exemplo de entrada com 60 pokemons e 100 inimigos
- Exemplo de entrada com 60 pokemons e 200 inimigos
- Exemplo de entrada com 60 pokemons e 300 inimigos
- Exemplo de entrada com 70 pokemons e 100 inimigos
- Exemplo de entrada com 70 pokemons e 200 inimigos
- Exemplo de entrada com 70 pokemons e 300 inimigos
- Exemplo de entrada com 80 pokemons e 100 inimigos
- Exemplo de entrada com 80 pokemons e 200 inimigos
- Exemplo de entrada com 80 pokemons e 300 inimigos
- Exemplo de entrada com 90 pokemons e 100 inimigos
- Exemplo de entrada com 90 pokemons e 200 inimigos
- Exemplo de entrada com 90 pokemons e 300 inimigos
Não se limite a esses exemplos, crie seus próprios exemplos!
Importante notar que o conteúdo gerado pelo seu programa como solução de um problema deve obedecer rigorosamente a especificação, não deve imprimir nada a mais nem a menos que o especificado.
Teste seu arquivo de solução
Teste o seu arquivo de solução para os exemplos de entrada definidos acima.
Esse testador verifica se o arquivo enviado está dentro dos padrões da especificação, conforme determina a saída do seu programa, bem como se a solução é factível.
Ranking
- 24/Set
O ranking será feito por disputas diárias. Para participar basta enviar o código compactado em .tar que o sistema copilará e executará.
Para participar do Ranking o seu código deve funcionar em LINUX, recomendamos o uso do Ubuntu. Se o sistema não conseguir compilar seu programa apenas será avisado que não conseguiu e nada mais.
- A tabela de execuções pode ser vista em: RANK
---
Last Modified: Wed Oct 3 20:51:14 2012.