domingo, 23 de novembro de 2008

Shell Script Euromilhões

Estava eu estudando um pouco de shell script, lendo a"man page" do comando Randon, que gera números aleatórios randonicos. E para consolidar o aprendizado, eu tento sempre, criar algum script que ponha a teoria em pratica.
Para o Random a ideia que me ocorreu na altura foi fazer um script que "sorteava" uma sequência de números. Por isso fiz um script que "sorteava" 5 números e 2 "estrelas" para o Euromilhões. Só que o script tinha um problema. Ele não descartava os números que já tinham saido. E as vezes, saiam números repetidos na mesma "chave". O certo é que o script já estava a ficar um pouco longo, e aí eu me lembrei que o comando sort poderia dar uma ajuda. E o script que já tinha algumas linhas acabou por se transformar em apenas uma :P E o curioso é que não usei o comando Random, mas sim a opção -R (random) do sort :P

A sorte poderá estar no seguinte comando:


seq 50 | sort -R | head -5 | sort -g; echo ""; seq 9 | sort -R | head -2 | sort -g


O seq 50 cria uma sequência de números de 1 até 50.
sort -R "baralha" a ordem dos números
head -5 como é lógico selecciona apenas o 5 primeiros números
sort -g é opcional, serve apenas para os números ficarem por ordem crescente
Depois é so repetir o comando para as estrelas, alterando apenas o seq para 9, e o head para 2.

Aqui fica um script mais indicado para os que não dispensam uma GUI (KDE ou Gnome)


#!/bin/sh
#tuxmind.blogspot.com
#seq 50 | sort -R | head -5 | sort -g; echo ""; seq 9 | sort -R | head -2 | sort -g
clear
echo "##############################################"
echo "######### Euromilhões ###########"
echo "##############################################"
echo "Numeros:"
NUM=`seq 50 | sort -R | head -5 | sort -g | fmt`
echo $NUM
echo ""

echo "Estrelas:"
EST=`seq 9 | sort -R | head -2 | sort -g | fmt`
echo $EST
echo ""

echo "Boa Sorte :)"
echo "##############################################"

gdialog --title Euromilhões --msgbox "Numeros: \n \n $NUM \n \n Estrelas: \n \n $EST \n \n Boa Sorte :)" ||
kdialog --title Euromilhões --msgbox "Numeros: \n \n $NUM \n \n Estrelas: \n \n $EST \n \n Boa Sorte :)"

exit


E não se esqueca de mim, se o script acertar no primeiro prémio :P

Um comentário :

carlos disse...

Muito bom , espero ganhar e dividir com você também .

Seu blog ficou fenomenal parabéns .

Só passei pra dar um oi .

Então OI !!!!!!!!!!!1