====== Dilema dos prisioneiros ====== {{ prison.jpg|}} **G. Bauer** foi convocado pelo **C. Nascimento** para ajudar no interrogatório de dois supostos terroristas. Quando se apresentou, G. Bauer perguntou "Esta linha é segura? Quero 24 horas", C. Nascimento foi logo dizendo: "//24 horas, seu G. Bauer? Então o senhor quer 24 horas... o senhor é um fanfarrão, seu G. Bauer. O senhor tem é 24 minutos!//" O tempo passa e G. Bauer, apesar de usar técnicas avançadas de interrogatório como quebra de falanges e afogamento sustentado, depois muito tempo de entrevista com os dois, não conseguiu obter nenhuma confissão. O tempo já está em 21min! Temendo a reação de C. Nascimento, G. Bauer, apesar de relutar a essas modernidades, concordou, finalmente, em usar uma técnica mais psicológica, depois de consultar a [[wp>Prisoner's_dilemma|Wikipedia]] Os prisioneiros foram separados e oferecido um acordo a cada um deles: se aceitassem depor contra o outro, teriam liberdade imediata e o outro, se não confessasse, pegaria 10 anos de prisão em Bangu 1. Se ambos ficarem em silêncio, cada um deles será condenado a 1 ano de prisão. Se ambos confessarem, os dois pegam 5 anos. A decisão tem que ser tomada sem saber a decisão do outro. Qual é a melhor decisão? A situação pode ser resumida no quadro seguinte: | ^Prisioneiro B fica em silêncio^Prisioneiro B trai| ^Prisioneiro A fica em silêncio|Cada um pega 1 ano|A fica preso 10 anos. B fica livre| ^Prisioneiro A trai |A fica livre.B fica preso 10 anos|Ambos ficam 5 anos na prisão| Considere que este problema é proposto diversas vezes aos prisioneiros. Faça um programa que simule uma série de decisões dos prisioneiros para tentar avaliar qual a melhor estratégia. ===== Estratégias ===== O computador deve escolher uma estratégia aleatória. Você entra sua decisão pelo teclado, sem saber qual estratégia o computador está usando ^Estratégia do Computador|| ^1| sempre trair| ^2| sempre cooperar| ^3| trair e cooperar alternativamente| ^4| cooperar e trair alternativamente| ^5| cooperar até ser traído, então trair sempre| ^6| cooperar na primeira jogada e depois repetir a última decisão do outro| ^7| Usar a estratégia 6, mas com uma probabilidade aleatória entre 1% e 5% perdoar a traição do outro e cooperar| ^n| invente outras estratégias| A sua entrada será pelo teclado, sendo interativa com o computador, ou seja, entrando **0** você trai, entrando **1**, permanece em silêncio. A cada entrada, o computador coloca as duas respostas, sua e dele, e dá o resultado em anos de prisão para cada um, além do acumulado dos diversos jogos. Quando entrado o valor 9, o program pára. Cada rodada deve ser guardada numa lista encadeada. Quando entrado o valor 3, deve ser mostrada na tela a seqüência anterior de jogadas, percorrendo esta lista do primeiro ao último lance. Quando decidida uma estratégia a ser seguida pelo computador, deve-se usar um ponteiro para função e não um switch para chamar a função (item 5.11 do livro texto). ===== Linha de comando ===== O programa deve poder ser chamado com um parâmetro -h, que fornece as regras do jogo, e/ou um parâmetro -n, onde n é o número da estratégia que ele vai usar. O parâmetro -e mostra as estratégias programadas e seus números de referência. ===== Bônus ===== Use o parâmetro -p para escolher uma das estratégias numeradas. Assim, se for digitado -p o programa usa uma estratégia de sua escolha (que não sabemos qual é) para jogar. Serão feitas entre 20 e 100 rodadas numa disputa entre todos os alunos da turma, num esquema cada por si e contra todos. Aquele que conseguir a estratégia mais eficiente na disputa com a turma ganha 0,5 pt na média final. Se você não tem idéia sobre onde começar... Deve estudar o livro. Não adianta chorar pelo leite derramado. A não ser que o leite seja do G. Bauer... Aí você está ferrado! ===== Resultado ===== **Lys** ganhou meio ponto na média, por escolher a estratégia vencedora da turma. **Classificação final depois de 20 rodadas**: **Lys**: 256 anos. (colaborar até ser traído, então trair sempre) Patrick e Rodrigo Ferreira com 347 anos. (colaborar e repetir última jogada do adversário com chances de perdão) Wellington com 385 anos. (Trair sempre) Rodrigo Soares com 622 anos e (Trair e colaborar, alternativamente) Uillas com 659 anos. (Colaborar e trair, alternativamente). Outros ou erraram na programação de sua estratégia, preferiram não participar ou simplesmente escolhiam uma estratégia sem executar nenhum código.