Acerte a carta
Publicado por Xerxes (última atualização em 01/06/2016)
[ Hits: 3.465 ]
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
usando a lixeira em modo texto
Shell Script para Guia Foca Linux
Migrar de MySQL 3.x e 4.x para 5.0 no Debian
Nenhum comentário foi encontrado.
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (15)
Tenho dois Link's ( IP VÁLIDOS ), estou tentando fazer o failover... (0)
Pendrive não formata de jeito nenhum (4)