Acerte a carta
Publicado por Xerxes (última atualização em 01/06/2016)
[ Hits: 3.635 ]
Homepage: -
Na sua frente há três cartas viradas. Duas delas tem estrelas brancas e apenas uma tem estrela preta.
Você deve adivinhar onde está a carta com a estrela preta.
Após escolher sua carta, uma carta de estrela branca será revelada. Cabe a você, então, escolher se continua com a sua primeira escolha ou se troca de carta.
Sim, esta é uma variação do problema de Monty Hall. Mostra na prática se é mais vantajoso, ou não, trocar de carta.
#!/bin/bash # # ---------------------------------------------------------------------- # Na sua frente há três cartas viradas. Duas delas tem estrelas brancas e # apenas uma tem estrela preta. # # Você deve adivinhar onde está a carta com a estrela preta. # # Após escolher sua carta, uma carta de estrela branca será revelada. # Cabe a você, então, escolher se continua com a sua primeira escolha ou # Se troca de carta. # # Sim, esta é uma variação do problema de Monty Hall. # Mostra na prática se é mais vantajoso, ou não, trocar de carta. # # ---------------------------------------------------------------------- # # Autor: Xerxes Lins (xerxeslins@gmail.com) vivaolinux.com.br/~xerxeslins # # Versão 1.0b - 25/04/2016 # # ---------------------------------------------------------------------- # # Define qual das três é a carta certa function _certa { CERTA=$(( ( RANDOM % 3 ) + 1 )) } # "Redesenha" as cartas function _atualiza_cartas { DESENHO=" $FIG_CARTA1 $FIG_CARTA2 $FIG_CARTA3" } # Vira todas as cartas para baixo function _vira_cartas { FIG_CARTA1="🂠" FIG_CARTA2="🂠" FIG_CARTA3="🂠" } # Vira todas as cartas para cima function _vira_cartas2 { FIG_CARTA1="🃟" FIG_CARTA2="🃟" FIG_CARTA3="🃟" } # Ao final do jogo exibe sua taxa de sucesso function _stats { # Com contribuição do Lcavalheiro para obter casas decimais VIT_PERCENT=$(bc -l <<< "scale=2 ; $WIN_TROCA / $TOTAL_ROLLS * 100 ") #LOS_PERCENT=$(( ( $LOSE_TROCA / $LOSE ) * 100 )) clear echo "De todas as suas tentativas ($TOTAL_ROLLS), $VIT_PERCENT% dos acertos ocorreram quando você trocou de carta." #echo "De todas os seus erros, $LOS_PERCENT% ocorreram quando você trocou de carta." } # Fim do jogo function _finalizou { clear echo "" echo "$FRASE_FINAL" echo "" echo "A carta certa era a de número $CERTA!" _atualiza_cartas echo "" echo "$DESENHO" echo "" ERRADA=0 echo "Continuar? (S/*)" read CONT case $CONT in s|S) NOVO_JOGO=0 && TROCA=0 && _vira_cartas && _jogo ;; *) _stats && exit;; esac } # Verifica se a carta escolhida é a certa function _checa { # Contador de tentativas TOTAL_ROLLS=$(( $TOTAL_ROLLS + 1 )) # Verifica se houve troca if [ $OLD_CARD != $ESCOLHIDA ] then TROCA=yes fi # Desvira todas e "pinta" a certa _vira_cartas2 if [ $CERTA = 1 ] then FIG_CARTA1="🃏" elif [ $CERTA = 2 ] then FIG_CARTA2="🃏" else FIG_CARTA3="🃏" fi # Acertou ou errou? if [ $ESCOLHIDA -eq $CERTA ] then FRASE_FINAL="Você acertou!!!" WIN=$(( $WIN + 1 )) # Se teve troca, lembra disso if [ $TROCA == yes ] then WIN_TROCA=$(( $WIN_TROCA + 1 )) fi else FRASE_FINAL="Você errou!!!" LOSE=$(( $LOSE + 1 )) # Se teve troca, lembra disso if [ $TROCA == yes ] then LOSE_TROCA=$(( $LOSE_TROCA + 1 )) fi fi _finalizou } # Após escolher a carta, pergunta se quer trocar function _escolha1() { clear _vira_cartas # Se o jogo for "novo" então lembra se houve troca if [ $NOVO_JOGO -eq 1 ] then OLD_CARD=$1 fi # carta escolhida pelo jogador ESCOLHIDA=$1 # Carta errada ERRADA=1 while [ "$ERRADA" = "$ESCOLHIDA" ] || [ "$ERRADA" = "$CERTA" ]; do ERRADA=$(( ( RANDOM % 3 ) + 1 )) done # Carta que "sobra" SOBRA=1 while [ "$SOBRA" = "$ESCOLHIDA" ] || [ "$SOBRA" = "$ERRADA" ]; do SOBRA=$(( ( RANDOM % 3 ) + 1 )) done # Desvira a carta errada if [ $ERRADA = 1 ] then FIG_CARTA1="🃟" elif [ $ERRADA = 2 ] then FIG_CARTA2="🃟" else FIG_CARTA3="🃟" fi _atualiza_cartas echo " Você escolheu a carta $ESCOLHIDA. Revelação: A carta certa NÃO É a carta $ERRADA $DESENHO Gostaria de trocar para a carta $SOBRA? (S/N)" read RESPOSTA case $RESPOSTA in s|S) ESCOLHIDA=$SOBRA && _checa ;; n|N) _checa ;; *) clear && echo "Opção inválida. Saindo..." && exit ;; esac } # Jogo principal function _jogo { # Contador para saber se é novo NOVO_JOGO=$(( $NOVO_JOGO + 1 )) clear _atualiza_cartas echo " Onde está a carta certa (🃏)? Cartas (1, 2 e 3): $DESENHO Escolha uma carta... ________________________________ Acertos totais $WIN Acertos após trocar de carta $WIN_TROCA Erros totais $LOSE Erros após trocar de carta $LOSE_TROCA (X e Enter para sair)" read CARD case $CARD in 1|2|3) _escolha1 $CARD ;; x|X) _stats && exit ;; *) clear && echo "Opção inválida. Escolha 1, 2 ou 3." && sleep 2 && _jogo ;; esac } # Função do começo function _start { _vira_cartas NOVO_JOGO=0 TOTAL_ROLLS=0 ERRADA=0 ESCOLHIDA=0 WIN=0 LOSE=0 WIN_TROCA=0 LOSE_TROCA=0 _certa _jogo } # Começa o jogo _start
BKP Completo Sem compactação (com exclusao)
infonow - all system information
arcade.sh - front-end para AdvanceMAME
Ajustando resolução do monitor
Nenhum coment�rio foi encontrado.
O que é o THP na configuração de RAM do Linux e quando desabilitá-lo
Comparação entre os escalonadores BFQ e MQ-Deadline (acesso a disco) no Arch e Debian
Conciliando o uso da ZRAM e SWAP em disco na sua máquina
Servidor de Backup com Ubuntu Server 24.04 LTS, RAID e Duplicati (Dell PowerEdge T420)
Como unir duas coleções de ROMs preservando as versões traduzidas (sem duplicatas)
Como instalar o Telegram Desktop no Ubuntu 24.04
Overclocking Permanente para Drastic no Miyoo Mini Plus
Problemas de chaves (/usr/share/keyrings) no Debian
Converter os repositórios Debian para o novo formato com as chaves
Problema com audio apos upgrade (2)
eu preciso saber uma coisa sobre os games no linux (3)
eu preciso saber uma coisa sobre os games no linux (1)