Hatena::ブログ(Diary)

菊やんの雑記帳

2006-10-30 記号ゴルフ

[] 03:26 を含むブックマーク

無限ループ

id:shinichiro_h:20061030#1162211956

はまあこんな感じでしょう。

いろいろ考えててふと思いついたのだが

「stack level too deep (SystemStackError)」

このエラーを発生させるコードを書くというお題は面白いかも。

記号ゴルフ・通常ゴルフどちらでも問題にできそう。


とりあえず、どっちかは秘密だけど11Bになった。

とか思ってたら10Bになった。

とか思ってたら、メモリ食わずに3Hで無限ループできるじゃん。とりあえず3H28Bになった。

とか思ってたら、id:shinichiro_h 氏は6Bか…どうやったんだろう。

記号でも通常でも10Bだと信じていたのに…

quineの1Hはたぶん「p」なんでしょうが「p」なんてぶっちゃけ必要ないので、0H69Bを安直に作った。たぶんまだまだ縮む。

[] 00:32 を含むブックマーク

というわけで、

  • StackError
    • 記号だと0H10Bが最小?
    • 全てだと6B (これは使っていい関数なのか?)
  • 無限ループ
    • 記号でメモリ食いはk.inaba氏の0H10B
    • 記号でメモリ食わずはk.inaba氏の3H?B
    • 私が考えてたメモリ食わずは、(" ".."_").all?{|_|_[/./]=$/} なループ変数を勝手に書き換えるものでしたが、最初から進まないのがあるのには気づかなかった…
  • quine
    • 結局0H56Bまで縮んだ。
    • mameは0H0Bが最小だといっている。

k.inabak.inaba 2006/11/01 00:54 0H0B...(笑)
(””..”_”).min の3H13Bが今のところ思いついた記号メモリ食わずです。

mamemame 2006/11/02 00:58 ruby を segv させる。0H5B

2006-10-29 らいふげえむ

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

新しい問題であるところのライフゲームに手を出した。

最初に書いたコードはスピードが遅すぎてあちょーだったので、真面目に考えて書き直す。

とりあえず100倍スピードアップした。

途中で、誘惑に負けて状態を一個のBigIntegerに放り込んでみるとどうなるか実験してみたが、あまりに遅くて耐えられなかった。

テストで

http://codegolf.com/competition/run/19/1

この問題ばかり解かせていると、これの結果がJavaのアレに見えてくるようになってしまった…

だめよだめだめでっどろーっく♪

2006-10-28 線型代数

なんかcodegolfしか内容がないとかいわれてる気がするので、

[] 21:27 を含むブックマーク

四元数を使って三次元の回転を計算できるわけだが、なんかの講義で四元数体はなんとか群の二重被覆で〜、随伴表現が〜、とかそういう話を聞いた記憶がある。

微分幾何はすでに終わった学問らしく、講義もあまりなかったのでさっぱり勉強してないわけで、簡単そうな本を読んでみた。

古典的コンパクトリィ群とか中身はほとんど線型代数の話なのだが、計算むずー。

2006-10-26 抜かれたー

[]Switchboard 00:34 Switchboardを含むブックマーク

だめだ。さっぱりわからん。方針が全然違うのか?

2006-10-25 しゃー

[] 02:43 を含むブックマーク

とりあえず適当に実装したら520Bだったのをこつこつ縮めた。

最後につけるビット数を半分にけちったらテスト通らなかった。

なんでこんなとこだけ真面目にテストされるんだくそぅ。

2006-10-24 記号ゴルフ

[] 10:04 を含むブックマーク

id:shinichiro_h:20061024#1161643404 のとこの記号ゴルフ

安直に Hello World! 92バイト、アルファベットなし

__=?(+_=?"+?";$><<(''<<?$+?$<<_+?!<<__<<__<<_+?+<<?\ <<?<+?;<<_+?+<<_+?.<<__<<_+?\ <<"!#$/")

必要なアルファベットの上限は4文字かなあ。それより減らせそうな気がしない。

とりあえず、無限ループで終了しないプログラムはアルファベット何文字だろう?

試したところ、3文字っぽい。

[]Switchboard 17:13 Switchboardを含むブックマーク

1stkik72Ruby10,000 (v5)
2ndkinaba72Ruby10,000 (v7)

ついに追いつかれた。三日間考えていたところによると、もう縮まないので抜かれることはあるまい。

[] 20:24 を含むブックマーク

うわっ、ここだけ右シフトだった。すげー時間無駄にした。

2006-10-23 パスカルの三角形

[] 18:56 を含むブックマーク

パスカルの三角形

いつのまにか43Bが登録されている。しかし、これはさっぱり思いつかんのう。出力部分の小細工ではなさそうなので、配列のまわし方を考え直すかなあ。

Switchboard

二日たっても抜かれていない。みんな77Bで止まってる!

77Bの壁を越えると、この問題の素晴らしさが分かるよー

2006-10-21 Switchboard

[] 10:46 を含むブックマーク

SwitchBoard

新しい問題が追加された。

とりあえず、解いてみると77バイトのコードができたので登録しておく。

朝見たら、k.inaba氏の74バイトに抜かれていたので、75バイトまでは追いついておくが、これ以上縮むとは思えん…

と思っていたら、72Bまで縮んでトップに

Oblongular Number Spirals

今までは再帰で考えてた関数をループに展開して書いてたのだが、mame再帰のほうが縮むというので、再帰で書き直してみたところ 117B まで縮む。

素因数分解

83バイトになるかなあ?そうしたらk.inaba氏のPerlに追いつけるのだが。

2006-10-18 気づいたら

[] 02:23 を含むブックマーク

素因数分解

いつのまにかshinh氏に抜かれていたので、追いついておく。通る可能性がどんどん低くなっていく…

でもこれ以上は縮まないよね。

2006-10-16 codegolf

[] 09:41 を含むブックマーク

Oblongular Number Spirals

最初に配列に渦を作ってから書こうとしてたんだけど、それよりもっといい方法があった。

素因数分解

もう縮まないと思っていたのにmameの思わぬ発言が…

2006-10-15 codegolf

[]例によって 07:37 例によってを含むブックマーク

今日もcodegolf

Home on Range

適当に書いてたコードを少し真面目に書き直して提出。でも最短には程遠い。これ難しいって。

2006-10-14 codegolf

[]codegolf 08:25 codegolfを含むブックマーク

素因数分解

なんか全然最適化されてない部分を発見したので、さっくり90バイトを切る。

これに到達できる人ははたしているかな?

カレンダー

めんどくさいけどやってみる。一応できる。

カレンダーのパターンは14通りしかないので、2000年近辺の14年にマップしてTime.gmを使う作戦でいったのだが、いまいち縮まなかった。Rubyじゃ点数稼げないし後回し。

Total Triangles

少し意外な代入でとりあえずトップに並ぶ。特に難しくはない。

2006-10-13 codegolf

[]codegolf 06:07 codegolfを含むブックマーク

最近、一部ではやっている codegolf に参戦中。言語は今のところ Ruby オンリー。

一位を目指すことはあきらめてるので、とりあえず二位を目標にする。

素因数分解

Rubyの神が降りてきて、素因数分解のコードを一気に短縮してくれた。

Rubyで1位

Vigenere Cipher

これを Ruby で解くと、おぞましいコードができあがる。50byte前半に到達した人は知っているだろう。

Rubyで2位

円周率

これは公式の選択がまず重要だ。

¥pi-3 = 4¥sum_n ¥frac{1}{2n(2n+1)(2n+2)}

は-3がポイント高いんだけど、いかんせん収束が遅すぎる。

Rubyで19位

パスカルの三角形

どうしても、あと2byteが縮まないせいで、11位。

今の方法だとこれ以上縮まないと思うんだけど、他の方法は思いつかないし。

Home On The Range

適当に書いて提出。とりあえず動くだけ。

Numeric Diamonds

これはまだまだ最適化の余地がありそうだけど、9位なので後回し。

99 Bottles Of Beer

がんばって最適化したのでRubyで1位。これより縮むかどうかはっきりしない。

2006-10-12 めっさやるきないけど

mixiより広く公開したいことはここに書くことにする。

以下、実験

見出し 05:55 見出しを含むブックマーク

ここに何か書く。*1

さらに見出し

その次の見出し

リスト 05:55 リストを含むブックマーク

Wizardry#4だが、Nethackでも同じだね。

数式も書ける 05:59 数式も書けるを含むブックマーク

 ¥int_¥Omega |f(x)| dx = 0 ¥Rightarrow f(x) = 0 ¥qquad¥mathrm{a.e.}

あまりきれいじゃないけど。

*1:これは脚注