[Rio-pm] Mudando de formato

Aureliano Guedes guedes_1000 em hotmail.com
Sábado Março 31 08:50:44 PDT 2012


Eu sei que o split que separou tudo, mas "my ( $first, $second ) = ( $piece =~ /\d{2}/g );" é que joga automaticamente o primeiro digito para um e o segundo para outro...
achei isso imprecionante.

Bem join e split eu conheço bem, ja os usei a uns 4 meses atras, logo depois de ter começado a "Perlgramar" ^^.

mas esse map, ja li na perldoc aqui -> http://perldoc.perl.org/functions/map.html e apesar de bem explicado não entrou na minha cabeça.

bem mas to tentando fazer o programa aqui de outra forma, ja entendi algumas coisas vendo o seu, mas o seu gera umas coisas desnecessaria no output.

Bem, vou tentando, qualquer coisa eu posto aqui esperando ajuda...

> From: tiago.peczenyj em gmail.com
> Date: Sat, 31 Mar 2012 10:21:23 -0300
> To: rio-pm em pm.org
> Subject: Re: [Rio-pm] Mudando de formato
> 
> 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
> _______________________________________________
> Rio-pm mailing list
> Rio-pm em pm.org
> http://mail.pm.org/mailman/listinfo/rio-pm
 		 	   		  
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/rio-pm/attachments/20120331/027699ea/attachment-0001.html>


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