tsucchiさんの記事に影響を受けてみたったー

-2000 から -10000 の数字を 10 おきに改行つきで出力するコードを書いて下さい

自分なりに試行錯誤した結果を結構、あえてそのままに書いてます!

るびまゴルフになぜか Perl で参戦してみた
に対して今更のエントリ
Rubyスゲェェェェェと思ったり、オイラ、ラメェェェェ
思ったりと幸せで難しいひと時でしたーw

とりあえず、ここまでやってみて詰まってるびまごるふの解答例を見てみる

print-$_,1>$_%10&&"\n"for 2000..10000;

最初の気付き

あー、1e3で1000とかあったね、すっかり忘れてたわ…OTL
よしよし、3Bytesほど削れたな

print-$_,1>$_%10&&"\n"for 2e3..1e4;

ゴルフから遠ざかりすぎていたことの気付き

@hide_o_55氏から$/でクォート分削れると御指摘を頂きました
特殊変数で改行分のスコアを稼ぐとかもスッカリ忘れてた
ありがたや、ありがたや

print-$_,$_%10?'':$/for 2e3..1e4;

更に

三項演算子使わなくても数値比較で出来んじゃなどと考えてみる
そして、削れなかったけど、こっちのがクールな気はしている

print-$_,1>$_%10&&$/for 2e3..1e4;

これで32Bytes、パーは27Bytesなので未達成なう

Rubyで実行してみたところ…想定結果と違う!?

想定してた結果


-2001-2002-2003-2004-2005-2006-2007-2008-2009-2010
-2011-2012-2013-2014-2015-2016-2017-2018-2019-2020
-2021-2022-2023-2024-2025-2026-2027-2028-2029-2030
 ・
 ・
 ・

求められていた結果

2000
2010
2030
 ・
 ・
 ・

でけったー

Σ(゚Д゚|| ... 何で間違えて難易度を上げてるんだ…

ておいうことで難易度がダダ下がりになってくれたので余裕でパー達成

say版

say-$_,0 for 200..1e3 #21B||<

print版

print-$_,0,$/for 200..1e3 #25B

ムダに再起とか使ってみる

&{$f=sub{($_||=2e2)<=1e3&&{say($_++,0),&$f}}}

数値を2つ引数にして、その間にある数を出力する

入力はコンマで区切られて標準入力から与えられるものとします

$ARGV[0]=~s/(.+),(.+)/print for$1..$2/e

自分なりに試行錯誤した結果を結構、あえてそのままに書いてます!

一行の英単語が標準入力から与えられて、その末尾から 1Byte ずつ伸ばしていく形で文字数分の行を出力

print$s=$c.$s,"\n" while($c=chop)

うん、自分でも筋が悪いと思う。。。

標準入力から複数の行を受け取って、同じ内容の行は捨てつつ標準出力に出力するプログラム(パー:30B)

print$t{$_}++<1&&$_ while(<>) 

@lestrratさんことJPAの牧さんから御指摘を頂きました

コマンドラインスイッチ使っちゃいけないんですか?

だったら perl -ne '$t{$_}++||print'でperl -neを抜かして15Bでいける

$t{$_}++||print

さすがっス…ありがたや、ありがたや

Perlでフィボナッチ

久々に(ヘタなりに)ゴルフを頑張ってみようと思ったきっかけがコレ

sub{print"$i\n"while*1[0]<$_[0]}->(20);

yet anotherな@Maki_Daisukeさんに教えて頂きました!

それにしても
すごいよPerl!さすがRubyのお兄ちゃん!!

*1:$i,$j)=($j+0,$i+$j||1