Cristiano Ferrari escreveu:
> Pessoal, boa noite.
>
> A dúvida talvez seja mais matemática do que relativa a shell, mas como
> diz o velho deitado: "não pergunte de dá para fazer em shell, pergunte
> como fazer em shell", pergunto:
>
> Tenho uma seqüência de 999 números, que vão de 1 a 999.
>
> Preciso de embaralhar estes números e gerar uma nova sequência numa
> ordem aleatória em que a diferença entre cada número e seu anterior
> não seja menor que 7.
>
> Entretanto, na nova seqüência é necessário que existam todos os 999
> números, sem repetições nem omissões.
>
> Como fazer?
Já que não é "dever de casa", segue o script de mão beijada ;)
Aceito sugestões de melhoria... vivendo e aprendendo :)
#!/bin/bash
count=0
anterior=$((RANDOM%999+1))
arr=()
while [ $count -lt 999 ]; do
atual=$((RANDOM%999+1))
diferenca=$((anterior - atual))
if [ $diferenca -gt 7 -o $diferenca -lt -7 ]; then
if ! echo [EMAIL PROTECTED] | grep -w $atual > /dev/null; then
arr[$count]=$atual
anterior=$atual
((count++))
echo $atual
fi
fi
done
--
Fabiano Caixeta Duarte
Especialista em Redes de Computadores
Linux User #195299
Ribeirão Preto - SP