最近のあなごる
全然最近でもないけどとりあえずまとめたものを。
permutater から invert case まで。
- permutater.rb
http://golf.shinh.org/p.rb?permutater#Ruby
permutater は面白い問題だと思うけどあまり人気が無い
f=proc{|$_,v|/./?gsub(/./){f[$`+$',v+$&]}:v+$/} $><<f[gets,'']
3B くらい縮みそうなものだが。
- permutater.pl
解いてみてたけど全然 Perl でやりやすく無い気がして放棄。なんていうか Ruby の gsub みたいに文字列のコピー作りたい時にどうして良いかわからんのだよな。 kSasさん (cf: http://d.hatena.ne.jp/niha/20070216#1171638657) がすごいので困る。
- permutater.ml
http://golf.shinh.org/p.rb?permutater#OCaml
OCaml 自信無いのでアルゴリズムで勝ってるんじゃないかと。 sub がどうとか長いので正規表現とか使えば減るのかなぁ。
open String let rec f s v=let rec l=length s and g s i v=l>i&g s(i+1)v=f((sub s 0 i)^(sub s(i+1)(l-i-1)))(v^(sub s i 1))in 0=l&()=print_endline v||g s 0 v;;f(read_line())""
- permutater.hs
http://golf.shinh.org/p.rb?permutater#Haskell
やる気無くダントツ最下位。 Haskell むずかしいなぁ。
f v""=v++"\n" f v s=concat$map(\z->f(v++[z])$filter(/=z)s)s main=getLine>>=putStr.f""
- blank.rb
http://golf.shinh.org/p.rb?delete+blank+lines#Ruby
うーん。上の方は exec って理解でいいんだっけ。
puts$<.map-[$/]
- blank.ml
http://golf.shinh.org/p.rb?delete+blank+lines#OCaml
1B 足りない。
let rec f s=s<>""&()=print_endline s;f(read_line());;f""
- blank.hs
http://golf.shinh.org/p.rb?delete+blank+lines#Haskell
わからない。
main=interact$unlines.filter(/="").lines
- blank.bf
http://golf.shinh.org/p.rb?delete+blank+lines#Brainfuck
にはさんにやる気はあるのだろうか。
,+[-[-<+<+>>] <----------[<.>>>>] <<[>.>>] >>,+]
- e.rb
http://golf.shinh.org/p.rb?e#Ruby
まぁ普通に。
a=2*v=10**?d a+=v/=$.+=1while 0<v p a+36
- e.pl
http://golf.shinh.org/p.rb?e#Perl
同上。使うモジュールはこれでいいのかな。
use bigint;$a=$v=10**100;$a+=$v/=$.+=1while$v;print$a+36
- even.rb
http://golf.shinh.org/p.rb?even+lines#Ruby
気付くかどうか。
#!ruby -p
gets
- even.c
http://golf.shinh.org/p.rb?even+lines#C
main(i){for(;gets(&i);)puts(gets());}
- even.d
http://golf.shinh.org/p.rb?even+lines#D
kurimuraさんと同じなのかな? なんかこのコードが一致するってイヤなんだけど。
import std.stdio;char i;void main(){for(;gets=&i;)puts=gets=&i;}
- even.ml
http://golf.shinh.org/p.rb?even+lines#OCaml
引数にすると let 無しで関数を渡せて素敵。ちなみに私は while と for をほとんど考慮してません。何故ならそれは関数型じゃないからだ!というか使いかた最近まで知らなかった。
let rec f v=v();print_endline(v());f v;;f read_line
- even.bf
http://golf.shinh.org/p.rb?even+lines#Brainfuck
最短かは微妙だけど、綺麗なコード。みんなもっと Brainfuck を愛そうよ。
+[[,----------]+[,.----------],+]
- even.bef
http://golf.shinh.org/p.rb?even+lines#Befunge
BF と似たような。
_55+-v0 |\0:~_~:,55+-1 @
- csort.rb, csort.pl
http://golf.shinh.org/p.rb?sort+characters#Ruby
これしか無い。
$><<gets.scan(/./).sort
print sort<>=~/./g
- csort.c
http://golf.shinh.org/p.rb?sort+characters#C
kurimuraさんはおかしい。
strcmp();main(i){puts(qsort(&i,strlen(gets(&i)),1,strcmp));}
- csort.d
http://golf.shinh.org/p.rb?sort+characters#D
ふつうのこーど。どう縮むんだろ。 toString あたりかな。
import std.cstream;void main(){dout.writef=din.toString.sort;}
- csort.ml
http://golf.shinh.org/p.rb?sort+characters#OCaml
あまり書いた覚えがないという。
let rec f i s=String.iter(fun x->x=Char.chr i&()=print_char x;())s;f(i+1)s;;f 0(read_line())
- csort.sed
sed でソートする狂気。でも全然 eban さんにボロ負け情けない。
h s/^/ / :l s/@.*// /^\(.\)\1*$/{s/.// H be} s/^\(\(.\)\2*\)\(.*\)\2/\1\2\3@/ tl :e s/\(.\).*/\1/ y/ !,.\/:<Habcdefghijklmnoprstuvwy/!,.\/:<Habcdefghijklmnoprstuvwy@/ G s/\n// s/\n.*// /@/!bl g s/^[^\n]*\|\n//g
- sqrt.rb
http://golf.shinh.org/p.rb?Square+root#Ruby
細ごまといじってたらトップになったけど。
puts /e/?17.087871761:/-[^0]|N/?:nan:/n/?:inf:"%.9f"%(/-/?-0.0:eval($_)**0.5)while gets
- prime.rb
http://golf.shinh.org/p.rb?prime+numbers#Ruby
正規表現で素数判定ができることを知っていますか、という。マジメにやった方が縮むかも。あと 1until はダサいとか。
'1'.upto(gets){ 1until/^(NN+)\1+$/!~"N"*$.+=1 p$. }
- prime.pl
http://golf.shinh.org/p.rb?prime+numbers#Perl
tybalt89 さんキター、という。
map{1while("N"x++$.)=~/^(NN+)\1+$/;print$..$/}1..<>
- prime.ml
http://golf.shinh.org/p.rb?prime+numbers#OCaml
頑張ったけど私ではこんなもん。
let rec p l i t=t<1||List.exists(fun x->i mod x<1)l&p l(i+1)t||p(i::l)(Printf.printf"%d "i;i+1)(t-1);;p[]2(read_int())
- inv.pl
http://golf.shinh.org/p.rb?invert+case#Perl
これしかない。 $" が Ruby の人にはうらやましかろう。
print<>^$"x6
- inv.c
http://golf.shinh.org/p.rb?invert+case#C
これに気付かないのは kurimura さんらしくないような気がしつつ、でも頭おかしい。
main(){for(;~putchar(getchar()^32)&16;);}
- inv.ml
http://golf.shinh.org/p.rb?invert+case#OCaml
色々ダメみたいだ。 Obj.magic は Char.code でもいい。
while()=print_char(Char.chr(32 lxor Obj.magic(input_char stdin)))do()done