[Rio-pm] Mudando de formato

Tiago Peczenyj tiago.peczenyj em gmail.com
Sábado Março 31 06:21:23 PDT 2012


Outra dica é exercitar

se vc não entendeu parte do codigo abra um editor de texto, coloque o
trecho e de valores as variaveis, vendo o que acontece no final
rodando o programa. enche de print num primeiro momento, depois vc
refina conforme vai aprendendo.

On Sat, Mar 31, 2012 at 10:13 AM, Blabos de Blebe <blabos em gmail.com> wrote:
>> Desculpa, floodar, mas aqui nesse trecho
>> ...
>> como ele pega de cada linha os valores como esse
>> 0303 0303 0101 1011 0304
>
> Errado.
>
> Quem separa a linha em 'peças' é a linha:
>
> my @pieces = split /\s+/, $line;
>
> ...que perldoc -f split, quebra a linha nos 'espaços':
>
> @pieces = ( '001,', '0303', '0303', '0101', '1011', '0304' );
>
>
>> 0303 0303 0101 1011 0304
>>
>> e seleciona que a cada 2 digitos primeiro é do $first e o segundo do
>> $second.
>>
>> sei que esta exatamente nessa linha
>>
>>
>> my ( $first, $second ) = ( $piece =~ /\d{2}/g );
>>
>> a resposta, mas nunca teria pensado que isso era de certa forma automatico.
>
> Não existe mágica, existe perldoc perlre.
>
> Procure por contexto. Na verdade foi a primeira vez que eu usei isso
> na vida real.
>
>
>> você me explicaria o que quer dizer essa linha:
>>
>> say join( ' ', map { 0 + $_ } @first );
>
> perldoc -f map
> perldoc -f join
>
> No modern perl ele fala sobre 'casting';
>
> ...
>
> Você deve notar que eu não estou respondendo diretamente. É porque as
> respostas são bizarramente óbvias pra quem *leu a documentação*.
>
> Fica a dica visite as docs dos itens:
>
> perlio, perlre,
> perldoc -f split
> perldoc -f map
> perldoc -f join
>
>
>> Eu to aqui tentando entender seu codigo, e fazer o meu proprio,
>
> Suas perguntas são típicas de quem está completamente perdido. Nesse
> ponto, não tente entender o código, você até pode conseguir, mas vai
> levar muito mais tempo do que se parar pra aprender o básico da
> linguagem.
>
>
> Leia a documentação, leia o modern perl. Depois volte e pergunte.
>
> Bônus (eu to muito bonzinho :) ):
>
> https://metacpan.org/module/POD2::PT_BR
>
>
> []'s
>
>
> 2012/3/31 Aureliano Guedes <guedes_1000 em hotmail.com>:
>> Desculpa, floodar, mas aqui nesse trecho
>>
>>
>>  my ( @first, @second );
>>     foreach my $piece ( @pieces ) {
>>         my ( $first, $second ) = ( $piece =~ /\d{2}/g );
>>
>>         push @first, $first;
>>         push @second, $second;
>>     }
>>
>> se eu tenho esse arquivo
>>
>>
>> Pop
>> 001,    0303 0303 0101 1011 0304
>> 002,    0303 0003 0101 0410 0405
>> 003,    0303 0305 0101 1013 0304
>> 004,    0103 0304 0102 0207 0104
>> Gra,    0203 0304 0202 0207 0105
>>
>> como ele pega de cada linha os valores como esse
>>
>>
>> 0303 0303 0101 1011 0304
>>
>> e seleciona que a cada 2 digitos primeiro é do $first e o segundo do
>> $second.
>>
>> sei que esta exatamente nessa linha
>>
>>
>> my ( $first, $second ) = ( $piece =~ /\d{2}/g );
>>
>> a resposta, mas nunca teria pensado que isso era de certa forma automatico.
>>
>> ________________________________
>> From: guedes_1000 em hotmail.com
>> To: rio-pm em pm.org
>> Date: Sat, 31 Mar 2012 11:34:43 +0000
>>
>> Subject: Re: [Rio-pm] Mudando de formato
>>
>> Valeu mesmo, monges.
>> Blabos, obrigado mesmo, mas na verdade a parte que eu pedi era so a mais
>> dificil, mas
>> por que aind atem o topo dos arquivos.
>>
>> Eu to aqui tentando entender seu codigo, e fazer o meu proprio,
>> você me explicaria o que quer dizer essa linha:
>>
>> say join( ' ', map { 0 + $_ } @first );
>>
>>> From: blabos em gmail.com
>>> Date: Fri, 30 Mar 2012 14:18:45 -0300
>>> To: rio-pm em pm.org
>>> Subject: Re: [Rio-pm] Mudando de formato
>>>
>>> Hum,
>>>
>>> O segundo link foi colado errado. O certo seria:
>>>
>>> http://norvig.com/21-days.html
>>>
>>> 2012/3/30 Nuba Princigalli <nuba em fastmail.fm>:
>>> > Olá Aureliano,
>>> >
>>> > Você também pode levar seu problema quando fizermos o próximo hackathon
>>> > +
>>> > code clinic! Agora, tanto num code clinic quanto aqui na lista, a
>>> > expectativa é que você pelo menos tente quebrar o problema antes, e peça
>>> > ajuda no que tiveHumr dificuldade.
>>> >
>>> > Esse processo de sair duma descrição em linguagem natural de um problema
>>> > e
>>> > chegar numa implementação em linguagem de programação, tomando decisões
>>> > de
>>> > ferramentas, paradigmas, etc. no caminho, nem sempre é trivial, e
>>> > obviamente
>>> > esse "trivial" depende também da sua bagagem. Se está difícil dar o
>>> > passo
>>> > largo de uma vez só, tente dar um passo intermediário, por exemplo,
>>> > escrevendo em pseudo-código, fazendo diagramas, ou qualquer outra
>>> > técnica
>>> > que te ajude a organizar o pensamento.
>>> >
>>> > Acho os links que o Blabos te indicou bons pontos de partida. Também
>>> > sugiro
>>> > ler e dissecar pacientemente a solução que o Blabos te enviou, até você
>>> > entender o que está acontecendo ali. Perldoc perlfunc são seus amigos, e
>>> > pode perguntar aqui também.
>>> >
>>> > Sucesso na jornada! Precisando de ajuda, estamos aqui! :)
>>> >
>>> > Nuba Princigalli
>>> >
>>> >
>>> > On Fri, Mar 30, 2012, at 12:43 PM, Blabos de Blebe wrote:
>>> >
>>> > Aureliano, querido amigão, o tio Blabos está de bom humor hoje e vai te
>>> > ajudar.
>>> >
>>> > Pelo que eu sei que você não é da área de informática, e não foi
>>> > treinado
>>> > para resolver o que você está tentando resolver, ponto pra você.
>>> >
>>> > Mas pelo que eu sinto, você também não está fazendo o dever de casa. É
>>> > comum
>>> > que pessoas de outras áreas, ao se deparar com programação, saiam
>>> > desesperadamente 'caçando' tutoriais sobre 'como programar da noite pro
>>> > dia'. Esquece, isso não vai acontecer.
>>> >
>>> > A sua dúvida não é um problema de linguagem, mas sim de como dar os
>>> > passos
>>> > necessários para resolver o problema. Isso leva mais tempo pra aprender,
>>> > do
>>> > que descobrir os comandos necessários.
>>> >
>>> > Sugiro fortemente que vc leia
>>> >
>>> > http://www.modernperlbooks.com/mt/index.html
>>> >
>>> > http://www.modernperlbooks.com/mt/index.html
>>> >
>>> > http://www.catb.org/~esr/faqs/smart-questions.html
>>> >
>>> > ...antes de continuar com qualquer código.
>>> >
>>> > Nós estaremos aqui pra te apoiar e te ajudar, mas vc ainda não sabe nem
>>> > quais são as perguntas. Não adianta a gente dar as respostas.
>>> >
>>> >
>>> > Segue abaixo um naco de código que ilustra mais ou menos como resolver
>>> > esse
>>> > problema (deve ter uns erros no meio), de uma forma mais ou menos
>>> > didática
>>> > (foco nos passos).
>>> >
>>> > Provavelmente os outros monges resolvem isso em menos de 50 caracteres.
>>> > Golf? :)
>>> >
>>> >
>>> > Não se assuste. Não desista. Mas comece a construir a sua casa pelo
>>> > alicerce.
>>> >
>>> >
>>> > []'s
>>> >
>>> >
>>> > <code>
>>> > open my $fh, '<', 'filename' or die 'cannot open file';
>>> >
>>> > while ( my $line = <$fh> ) {
>>> >     chomp $line;
>>> >     my @pieces = split /\s+/, $line;
>>> >
>>> >     say '#' . ( 0 + $pieces[0] );
>>> >
>>> >     my ( @first, @second );
>>> >     foreach my $piece ( @pieces ) {
>>> >         my ( $first, $second ) = ( $piece =~ /\d{2}/g );
>>> >
>>> >         push @first, $first;
>>> >         push @second, $second;
>>> >     }
>>> >
>>> >     say join( ' ', map { 0 + $_ } @first );
>>> >     say join( ' ', map { 0 + $_ } @second );
>>> > }
>>> > </code>
>>> >
>>> >
>>> >
>>> > On Friday, March 30, 2012, Aureliano Guedes wrote:
>>> >
>>> > Bom dia,
>>> > Monges.
>>> >
>>> > Sem enrolar muito vou ser direto na minha duvida.
>>> >
>>> > Tenho dois formatos de arquivo, no qual devo converter do primeiro
>>> > formato
>>> > para o segundo,
>>> > e no BioPerl não encontro nada que me ajude.
>>> >
>>> > O primeiro formato, ou melhor, o formato de entrada segue o padrão
>>> > abaixo:
>>> >
>>> > ################################
>>> > Pop #Aqui indica inicio dos dados
>>> > 001, xywz abcd ...
>>> > ... #o padrão se repete ate o final
>>> > Gra, qwer jkld ... #o ultimo individuo se chama "Gra" sempre
>>> > #essas letras são numeros e no exemplo ficara mais claro
>>> > ################################
>>> >
>>> > O segundo formato, e no caso formato de saida segue o padrão abaixo:
>>> >
>>> > ###############################
>>> > #1
>>> > x w a c
>>> > y z b d
>>> > ...
>>> > #x #x é o ultimo numero, que como não sabemos qual é deixei assim
>>> > q e j l
>>> > w r k d
>>> > ##############################
>>> >
>>> > Agora facilitarei tudo com um exemplo
>>> >
>>> > Formato de entrada, exemplo:
>>> >
>>> > #############################
>>> > Pop
>>> > 001,    0303 0303 0101 1011 0304
>>> > 002,    0303 0003 0101 0410 0405
>>> > 003,    0303 0305 0101 1013 0304
>>> > 004,    0103 0304 0102 0207 0104
>>> > Gra,    0203 0304 0202 0207 0105
>>> > #############################
>>> >
>>> > Formato de saida, exemplo:
>>> >
>>> > #############################
>>> > #1
>>> > 3 3 1 10 3
>>> > 3 3 1 11 4
>>> > #2
>>> > 3 0 1 4 4
>>> > 3 3 1 10 5
>>> > #3
>>> > 3 3 1 10 3
>>> > 3 5 1 13 4
>>> > #4
>>> > 1 3 1 2 1
>>> > 3 4 2 7 4
>>> > #5
>>> > 2 3 2 2 1
>>> > 3 4 2 7 5
>>> > ##############################
>>> >
>>> > Observem duas coisas:
>>> >
>>> > - No primeiro formato os valores estão lado a lado, e de uma coordenada
>>> > para
>>> > outra
>>> > temos um espaço, as unidades sempre são 2 numeros. No segundo formato os
>>> > valores estão um em baixo do outro, logo se
>>> > temo no primeiro formato
>>> > #############################
>>> > 001,    1213 2720
>>> > #############################
>>> > vai sair
>>> > #############################
>>> > #1
>>> > 12 27
>>> > 13 20
>>> > #############################
>>> >
>>> > - Caso tenha um 0 na frente, o formato de saida elimina ele
>>> > #############################
>>> > 001,     0103 0202
>>> > [/PHP]
>>> > #############################
>>> > #1
>>> > 1 2
>>> > 3 2
>>> > #############################
>>> >
>>> >
>>> > Bem gente, toda ajuda possivel será muito bem vinda.
>>> >
>>> > Desde já, grato.
>>> >
>>> > Att,
>>> > Aureliano Guedes
>>> >
>>> > _______________________________________________
>>> > Rio-pm mailing list
>>> > Rio-pm em pm.org
>>> > http://mail.pm.org/mailman/listinfo/rio-pm
>>> >
>>> >
>>> > --
>>> > Nuba R. Princigalli nuba em pauleira.com http://pauleira.com @nprincigalli
>>> > Discipline is not an end in itself, just a means to an end. - King
>>> > Crimson
>>> >
>>> > _______________________________________________
>>> > Rio-pm mailing list
>>> > Rio-pm em pm.org
>>> > http://mail.pm.org/mailman/listinfo/rio-pm
>>> _______________________________________________
>>> Rio-pm mailing list
>>> Rio-pm em pm.org
>>> http://mail.pm.org/mailman/listinfo/rio-pm
>>
>> _______________________________________________ Rio-pm mailing list
>> Rio-pm em pm.org http://mail.pm.org/mailman/listinfo/rio-pm
>>
>> _______________________________________________
>> Rio-pm mailing list
>> Rio-pm em pm.org
>> http://mail.pm.org/mailman/listinfo/rio-pm
> _______________________________________________
> Rio-pm mailing list
> Rio-pm em pm.org
> http://mail.pm.org/mailman/listinfo/rio-pm



-- 
Tiago B. Peczenyj
Linux User #405772

http://pacman.blog.br


Mais detalhes sobre a lista de discussão Rio-pm