Hatena::ブログ(Diary)

菊やんの雑記帳

2006-11-07 記号ゴルフ

[] 05:05 を含むブックマーク

なんか答えきぼんぬされたので、

StackError

load$0
{}[$*<<$*]

quine

_=';$><<["_=",_,_]*(""<<-~?&)';$><<["_=",_,_]*(""<<-~?&)

引用符が二種類あるからCより楽だね(たぶん。

と思ってたんだけど、改行ありなら

$><<[__=<<_,__,'_']
$><<[__=<<_,__,'_']
_

で書ける。0H41B。

と思ったら全部`_'でいいんじゃん。全然気づいてなかった。

簡単に歴史。最初はCの有名なquine

char*p="char*p=%c%s%c;main(){printf(p,34,p,34);}";main(){printf(p,34,p,34);}

そのままRubyで書くと

_="_=%c%s%c;printf _,34,_,34";printf _,34,_,34

「%c%s%c」のとこが記号ゴルフ的に問題なので、安直に

_="_=!;_[/!/]=''<<34<<_<<34;$><<_";_[/!/]=''<<34<<_<<34;$><<_

ここがスタート地点で、がりがり削っていくと上のコードになる。

[]Switchboard 12:47 Switchboardを含むブックマーク

m9(^Д^)プギャー!!

1st  kik    70  Ruby  10,000 (v8) 

shinichiro_hshinichiro_h 2006/11/07 12:22 回答ありがとうございました。すごいなぁという感です。
flagitious 氏の考えていた quine は puts 2*2,2 の *2 のかわりに $. を使うというようなものでした。ですが本質とあまり関係ないところで 2B だけ kik さんのより短かったです。内容はおそらくご自身で気付かれるでしょうしとりあえず伏せておきますね。