最近のあなごる

全然最近でもないけどとりあえずまとめたものを。

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

kurimuraさんは神

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())

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
なにかあれば下記メールアドレスへ。
shinichiro.hamaji _at_ gmail.com
shinichiro.h