64:<br><br>sub drop{($a,$b)=@_;$a=0if$a&lt;0;ref$b?@$b[$a..$#$b]:substr$b,$a}<br><br clear="all">Just another Perl Hacker,<br>Fernando (SmokeMachine)<br><a href="http://perl-e.org">http://perl-e.org</a><br>Sent from Rio De Janeiro, RJ, Brazil<br>


<br><br><div class="gmail_quote">Em 3 de fevereiro de 2010 18:33, Nilson Santos Figueiredo Jr. <span dir="ltr">&lt;<a href="mailto:acid06@gmail.com">acid06@gmail.com</a>&gt;</span> escreveu:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

Eu tenho certeza que vai dar pra alguém melhorar, ainda tá grande.<br>
Mas se eu ficar mais tempo aqui tentando... vou ter meus dias inteiros<br>
pra ficar brincando de Golf ao invés de ter um trabalho. ;-)<br>
<div><div></div><div class="h5"><br>
-Nilson<br>
<br>
2010/2/3 breno &lt;<a href="mailto:breno@rio.pm.org">breno@rio.pm.org</a>&gt;:<br>
&gt; Nilson, o final deveria dizer &quot;mas é igual à versão do Nilson&quot;. Como<br>
&gt; eu fiz um monte de edições e contagens, acabou q foi enviado sem e eu<br>
&gt; nao percebi. O crédito e a menor tacada ainda são seus :-)<br>
&gt;<br>
&gt; []s<br>
&gt;<br>
&gt; -b<br>
&gt;<br>
&gt; 2010/2/3 Nilson Santos Figueiredo Jr. &lt;<a href="mailto:acid06@gmail.com">acid06@gmail.com</a>&gt;:<br>
&gt;&gt; Breno,<br>
&gt;&gt;<br>
&gt;&gt; Essa que você mandou é exatamente igual a minha anterior, mas ao invés<br>
&gt;&gt; de $a,$b eu uso $n,$w.<br>
&gt;&gt; Tem 65 chars fora e 55 dentro. Eu estava contando tudo.<br>
&gt;&gt;<br>
&gt;&gt; Mas essa tem um problema que retorna undef em alguns casos. Aí o<br>
&gt;&gt; Mantovani que tem que falar se é certo ou não.<br>
&gt;&gt;<br>
&gt;&gt; -Nilson<br>
&gt;&gt;<br>
&gt;&gt; 2010/2/3 breno &lt;<a href="mailto:breno@rio.pm.org">breno@rio.pm.org</a>&gt;:<br>
&gt;&gt;&gt; fernando, nao pode funcionar pra valores negativos, vai entender :-)<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; acredito que assim funcione:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; sub drop{($a,$b)=@_;$a=0if$a&lt;0;ref$b?@$b[$a..$#{$b}]:substr$b,$a}<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; 55 chars (dentro da sub).<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; 2010/2/3 Fernando Oliveira &lt;<a href="mailto:fernandocorrea@gmail.com">fernandocorrea@gmail.com</a>&gt;:<br>
&gt;&gt;&gt;&gt; 54:<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; sub drop{($a,$b)=@_;ref$b?@$b[$a..$#{$b}]:substr$b,$a}<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Just another Perl Hacker,<br>
&gt;&gt;&gt;&gt; Fernando (SmokeMachine)<br>
&gt;&gt;&gt;&gt; <a href="http://perl-e.org" target="_blank">http://perl-e.org</a><br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Em 3 de fevereiro de 2010 17:54, Nilson Santos Figueiredo Jr.<br>
&gt;&gt;&gt;&gt; &lt;<a href="mailto:acid06@gmail.com">acid06@gmail.com</a>&gt; escreveu:<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; Pronto, 80 caracteres (sem strict).<br>
&gt;&gt;&gt;&gt;&gt; Estou satisfeito, agora é com vocês:<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; sub<br>
&gt;&gt;&gt;&gt;&gt; drop{($n,$w)=@_;$n=0if$n&lt;0;ref$w?@$w[$n..$#{$w}]:$n&gt;length$w?&#39;&#39;:substr$w,$n}<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; -Nilson<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; 2010/2/3 Nilson Santos Figueiredo Jr. &lt;<a href="mailto:acid06@gmail.com">acid06@gmail.com</a>&gt;:<br>
&gt;&gt;&gt;&gt;&gt; &gt; Melhorando a minha solução anterior, 85 caracteres (83 tirando o my):<br>
&gt;&gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt; sub drop{my($n,$w)=@_;$n=0<br>
&gt;&gt;&gt;&gt;&gt; &gt; if$n&lt;0;ref$w?@$w[$n..$#{$w}]:$n&gt;length$w?&#39;&#39;:substr($w,$n)}<br>
&gt;&gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt; -Nilson<br>
&gt;&gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt; 2010/2/3 Nilson Santos Figueiredo Jr. &lt;<a href="mailto:acid06@gmail.com">acid06@gmail.com</a>&gt;:<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; Uma solução, warnings and strict compliant:<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; sub drop {<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;    my ($n, $w) = @_;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;    $n = 0 if $n &lt; 0;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;    return ( $n &gt; length $w ? &#39;&#39; : substr($w,$n) ) if !ref $w;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;    @$w[$n..$#{$w}];<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; }<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; Se colocar tudo em uma linha:<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; sub drop{my($n,$w)=@_;$n=0<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; if$n&lt;0;return($n&gt;length$w?&#39;&#39;:substr($w,$n))if!ref$w;@$w[$n..$#{$w}];}<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; 96 caracteres. Deve dar pra melhorar bastante ainda. Se tirar o &quot;my&quot;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; pra deixar de ser strict compliant, cai pra 94.<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -Nilson<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; 2010/2/3 Daniel de Oliveira Mantovani<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &lt;<a href="mailto:daniel.oliveira.mantovani@gmail.com">daniel.oliveira.mantovani@gmail.com</a>&gt;:<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt; Olá pessoal, o desafio envolve a função drop do Haskell:<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt; &lt;haskell&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt; ghci&gt; myDrop 2 &quot;foobar&quot;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt; &quot;obar&quot;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt; ghci&gt; myDrop 4 &quot;foobar&quot;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt; &quot;ar&quot;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt; ghci&gt; myDrop 4 [1,2]<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt; []<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt; ghci&gt; myDrop 0 [1,2]<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt; [1,2]<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt; ghci&gt; myDrop 7 []<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt; []<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt; ghci&gt; myDrop (-2) &quot;foo&quot;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt; &quot;foo&quot;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt; &lt;/haskell&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt; Eu fiz em Perl, para ficar claro:<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt; &lt;perl&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt; sub drop {<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt;    my ( $n, $xs ) = @_;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt;    if ( ref $_[1] ne &#39;ARRAY&#39; ) {<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt;        $n &lt;= 0 ? return $_[1] : return substr( $_[1], $n );<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt;    }<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt;    if ( $n &lt;= 0 || !@_ ) {<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt;        return @{$xs};<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt;    }<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt;    else {<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt;        shift @{$xs};<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt;        drop( ( $n - 1 ), $xs );<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt;    }<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt; }<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt; &lt;/perl&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt; Exemplos:<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt; mantovani@mantovani-desktop:~/Perl/Funcional$ perl -MHaskell -E &#39;say<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt; $_ for drop(3,[1,2,3,4,5,6])&#39;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt; 4<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt; 5<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt; 6<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt; mantovani@mantovani-desktop:~/Perl/Funcional$ perl -MHaskell -E &#39;say<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt; $_ for drop(1,&quot;ofernandoagoragolf&quot;)&#39;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt; fernandoagoragolf<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt; mantovani@mantovani-desktop:~/Perl/Funcional$ perl -MHaskell -E &#39;say<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt; $_ for drop(2,[&quot;mantovani&quot;,&quot;garu&quot;,&quot;fernando&quot;,&quot;blabos&quot;])&#39;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt; fernando<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt; blabos<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt; mantovani@mantovani-desktop:~/Perl/Funcional$ perl -MHaskell -E &#39;say<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt; $_ for drop(-1,[&quot;mantovani&quot;,&quot;garu&quot;,&quot;fernando&quot;,&quot;blabos&quot;])&#39;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt; mantovani<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt; garu<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt; fernando<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt; blabos<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt; mantovani@mantovani-desktop:~/Perl/Funcional$ perl -MHaskell -E &#39;say<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt; $_ for drop(-1,&quot;mantovani&quot;)&#39;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt; mantovani<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt; mantovani@mantovani-desktop:~/Perl/Funcional$ perl -MHaskell -E &#39;say<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt; $_ for drop(10,&quot;mantovani&quot;)&#39;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt; --<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt; &quot;If you’ve never written anything thoughtful, then you’ve never had<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt; any difficult, important, or interesting thoughts. That’s the secret:<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt; people who don’t write, are people who don’t think.&quot;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt; _______________________________________________<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt; Rio-pm mailing list<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt; <a href="mailto:Rio-pm@pm.org">Rio-pm@pm.org</a><br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt; <a href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt;&gt;&gt; _______________________________________________<br>
&gt;&gt;&gt;&gt;&gt; Rio-pm mailing list<br>
&gt;&gt;&gt;&gt;&gt; <a href="mailto:Rio-pm@pm.org">Rio-pm@pm.org</a><br>
&gt;&gt;&gt;&gt;&gt; <a href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; _______________________________________________<br>
&gt;&gt;&gt;&gt; Rio-pm mailing list<br>
&gt;&gt;&gt;&gt; <a href="mailto:Rio-pm@pm.org">Rio-pm@pm.org</a><br>
&gt;&gt;&gt;&gt; <a href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; _______________________________________________<br>
&gt;&gt;&gt; Rio-pm mailing list<br>
&gt;&gt;&gt; <a href="mailto:Rio-pm@pm.org">Rio-pm@pm.org</a><br>
&gt;&gt;&gt; <a href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>
&gt;&gt;&gt;<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; Rio-pm mailing list<br>
&gt;&gt; <a href="mailto:Rio-pm@pm.org">Rio-pm@pm.org</a><br>
&gt;&gt; <a href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>
&gt;&gt;<br>
&gt; _______________________________________________<br>
&gt; Rio-pm mailing list<br>
&gt; <a href="mailto:Rio-pm@pm.org">Rio-pm@pm.org</a><br>
&gt; <a href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>
&gt;<br>
_______________________________________________<br>
Rio-pm mailing list<br>
<a href="mailto:Rio-pm@pm.org">Rio-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>
</div></div></blockquote></div><br>