Acerte a carta
Publicado por Xerxes (última atualização em 01/06/2016)
[ Hits: 3.440 ]
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
PC Report - Coleta lista de dispositivos instalados e logs
Script para geração de relatórios do sarg
Removendo primeiras ou últimas linhas do arquivo
Nenhum comentário foi encontrado.
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
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Flatpak: remover runtimes não usados e pacotes
Mudar o gerenciador de login (GDM para SDDM e vice-versa) - parte 2
Estou com sede em aprender sobre o nosso querido Linux. (1)
big linux sem audio como resolver (2)
Como faz para dar um update-grub por shell script [RESOLVIDO] (3)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta