[Rio-pm] Mudando de formato

Nuba Princigalli nuba em fastmail.fm
Sexta Março 30 09:30:13 PDT 2012


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 tiver 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



[1]http://www.modernperlbooks.com/mt/index.html



[2]http://www.modernperlbooks.com/mt/index.html



[3]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

[4]Rio-pm em pm.org

[5]http://mail.pm.org/mailman/listinfo/rio-pm

References

1. http://www.modernperlbooks.com/mt/index.html
2. http://www.modernperlbooks.com/mt/index.html
3. http://www.catb.org/~esr/faqs/smart-questions.html
4. mailto:Rio-pm em pm.org
5. 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

-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/rio-pm/attachments/20120330/70bdd1a6/attachment.html>


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