|
From: | Fabiano Caixeta Duarte |
Subject: | Re: [shell-script] 1/2 OFF TOPIC Embaralhar sequência de números |
Date: | Thu, 14 Feb 2008 21:14:10 -0200 |
User-agent: | Thunderbird 2.0.0.0 (X11/20070326) |
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 ${arr[@]} | 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
[Prev in Thread] | Current Thread | [Next in Thread] |