Acerte a carta
Publicado por Xerxes (última atualização em 01/06/2016)
[ Hits: 3.341 ]
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
Regula o horário de uso do computador pelos filhos
arredonda - arredondando valores decimais quebrados
Script estavel e confiável para verificar o seu IP REAL e lhe enviar um email.
Nenhum comentário foi encontrado.
Agora temos uma assistente virtual no fórum!!! (247)
Manutenção de sistemas Linux Debian e derivados com apt-get, apt, aptitude e dpkg
Melhorando o tempo de boot do Fedora e outras distribuições
Como instalar as extensões Dash To Dock e Hide Top Bar no Gnome 45/46
Como Atualizar Fedora 39 para 40
Instalar Google Chrome no Debian e derivados
Consertando o erro do Sushi e Wayland no Opensuse Leap 15
Instalar a última versão do PostgreSQL no Lunix mantendo atualizado
Flathub na sua distribuição Linux e comandos básicos de gerenciamento
Agora temos uma assistente virtual no fórum!!! (247)
iso de sistema 32 bit em atividade (12)
Como adicionar módulo de saúde da bateria dos notebooks Acer ao kernel... (27)