Algorítmo para gerar números

1. Algorítmo para gerar números

Adriano
dritec

(usa Outra)

Enviado em 04/08/2009 - 16:34h

Olá pessoal.
Preciso fazer um shell scrip para gerar números da seguinte forma.

vamos supor que tenho os seguintes conjuntos.

116370,116371,116372,116373,116374,116375,116376,116377,116378,116379
116380,116381,116382,116383,116384,116385,116386,116387,116388,116389

1ª teria que verificar se na sequência o último número existe de 0 a 9.
2ª teria que excluir o último número se existe uma sequência de 0 a 9.
3ª teria que tirar os números duplicados e deixar apenas um.
4ª teria que ordenar em ordem decrescente.
A sequência então teria que gerar os seguintes números.

11638,11637


Alguém já fez algo parecido em qualquer linguagem?

Obrigado


  


2. Re: Algorítmo para gerar números

Jeferson dos Santos
lordhulk

(usa Ubuntu)

Enviado em 06/09/2009 - 16:49h

Olá,
Eu não sou muito de deixar as coisas de mão beijada, sendo assim, vou te dar toda a base pra vc fazer, pra vc possa entender.

digamos q temos o seguinte
116360,116361,116362,116363,116364,116365,116366,116367,116368,116369
116350,116351,116352,116353,116374,116375,116376,116377,116378
116390,116391,116392,116393,116394,116395,116396,116397,116398,116399
116380,116381,116382,116383,116384,116385,116386,116387,116388,116389
116370,116371,116372,116373,116374,116375,116376,116377,116378,116379


antes de mais nada precisamos tirar quem não bate com o padrão sequencial
egrep .*0,.*1,.*2,.*3,.*4,.*5,.*6.*7,.*8,.*9$
Essa expressão regular com egrep acima procura um padrão de qualquer coisa "." em qualquer quantidade "*" seguido de um 0 e uma "," , seguido de qualquer coisa "." em qualquer quantidade "*" seguido de um 1 e uma "," e assim por diante.


Dessa sequencia vc apenas quer o primeiro grupo de numeros antes da virgula e sem o ultimo numero?

Essa sequencia acima se transformaria em:
11636,11637,11638,11639

Se for isso, primeiro vc usa
cut -d , -f 1
com isso a sequencia acima vira
116360
116370
116380
116390

Depois vc pega o sed e arranca o ultimo numero. Note que cada em shell usamos "$" para definir o fim de cada linha. Dessa forma, .$ representa o ultimo caracter qualquer, seguido do fim da linha. Como todos são "0", poderia ser 0$ tamb

sed -e "s/.$//g"

11636
11639
11638
11637

Depois disso, vc precisa sequeciar, basta usar o comando "sort"


Por fim, basta vc trocar o caracter não imprimível de nova linha por uma virgula
tr \\n ,

Bom, agora é só vc juntar tudo que chega lá.







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts