2008-01-01から1年間の記事一覧

もうさっぱり縮む気がしない

Rubyしか使ってないので、Rubyだけ。 99-bottles-of-beer 1st flagitious 173 Ruby 10,000 (v23) 2nd eban 177 Ruby 9,774 (v13) 6th yowa 181 Ruby 9,558 (v5) 7th ozy4dm 182 Ruby 9,505 (v15) 8th shinh 182 Ruby 9,505 (v18) 10th kik 183 Ruby 9,453 (v…

ふと思い立って

B-CAS に DIRDに保存するEMM暗号化個別メッセージを復号してもらって眺めてたら、あまりに簡単でワロタ。 これ暗号か?6バイト(カードID)+2バイト(たぶんIDのCRC16) = 8バイトを使って、8バイトごとにXORしてるだけじゃん…まあ「ほげほげのお知らせ」とかしかな…

5通りにする

はどんなに頑張ってもだめだったので、 を試してみた。 すなわち match t1, t2, t3, t4, t5, t6, t7 with | Leaf, Leaf, Leaf, Leaf, Leaf, Leaf, Node s1 s2 => f_2 s1 s2 | s1, s2, s3, s4, s5, s6, s7 => Node s1 (Node s2 (Node s3 (Node s4 (Node s5 (N…

次のやり方

とにかく、デフォルトの場合にまとめられるところをまとめるという考えでいくと match t1, t2, t3, t4, t5, t6, t7 with | 特殊な場合 => | s1, s2, s3, s4, s5, s6, s7 => Node s1 (Node s2 (Node s3 (Node s4 (Node s5 (Node s6 s7))))) endとするのがよい…

最初のやり方

最初の場合わけ match t1, t2, t3, t4, t5, t6, t7 with | Leaf, Leaf, Leaf, Leaf, Leaf, Leaf, s1 => f_1 s1 (* T *) | Leaf, Leaf, Leaf, Leaf, Leaf, (Node s1 s2), s3 => f_3 s1 s2 s3 (* T^3 *) | Leaf, Leaf, Leaf, Leaf, (Node s1 s2), s3, s4 => f_…

Seven Trees の解答を公開してもいい時期だそうなので

http://d.hatena.ne.jp/m-hiyama/20081031

コード

Inductive Tree : Set := | Leaf | Node : Tree -> Tree -> Tree. Inductive Tree7 : Set := | T7 : Tree -> Tree -> Tree -> Tree -> Tree -> Tree -> Tree -> Tree7. Definition f (ts : Tree7) : Tree := match ts with | T7 Leaf Leaf Leaf Leaf Leaf Le…

Seven Trees を…

Coq

Require Import ZArith. Open Scope Z_scope. Goal forall t:Z, t = 1 + t^2 -> t^7 = t. intros. ring [H].終わらない…

やたー

5分岐になった!難しかった

5分岐で書けない…

昨日頑張って考えてみた結果。 元のコードはmatchで完全に直和に分解してたので分岐が多かっただけで、圧縮してみたら8ぐらいになった。 その後色々考えてみたんだけど5にはならない…今のところ6分岐。

5種類に分類するのがさっぱり分からん

http://d.hatena.ne.jp/KeisukeNakano/20081024/1224806200には5種類に分類すればいいと書いてあるので、考えてみたのだがさっぱり分からない。その代わり考えるヒントが生まれた。 2〜6の場合に存在しないことを証明するために考えてたので、この問題を解…

机上の計算ではできたものの

http://d.hatena.ne.jp/m-hiyama/20081022/1224640248 http://d.hatena.ne.jp/ku-ma-me/20081023最近はやりの Seven Trees を解いてみた。 机上の計算ではできたっぽいのだが、やはり自信がない。 まめっちはいい加減にテストをしていたみたいだが、やはり総…

クロスワード

k.inabaさんが張ってたクロスワードで遊んでたら、Hardなのにとんでもなく難しいのがでてきた。 ■ 1 ■ 2 3 4 5 ■ 4 6 X 7 6 3 3 ■ 8 ■ 1 ■ 9 ■ ■ 10 ■ 11 12 5 11 13 12 1 14 10 13 4 4 ■ 15 ■ 2 ■ 12 ■ 15 ■ 5 ■ 5 3 14 10 11 6 16 16 2 3 3 ■ 17 ■ 10 ■ 9…

渋谷Googleオフィスいってきたよ!

というわけで、昨日は Google Code Jam で渋谷まで行ってきました。用意されてたPC環境は、会社で使ってるのと同じDELLの24インチ液晶と微妙なキーボードと握りにくいマウスだった。 椅子が無駄にリープチェアだった。家で使ってるのとは違うモデルだけど。A…

コード

wwWWwWWWwWWWWWWw # s2n1 vwwWWwWWWw # s2 vwWWwwwWwwwwwwWWWwWWWWWwwwwWwwWWwWwwwwwwwwwwww # mkwWv vWwwwWWwww # ch_v, ch_W vwwWWWWWWWWww # mkout vWwwwWWwwwwwwwwwwWWWwwww # out_v, out_w, out_W vwWwwwwWwwwwWwwww # tr1 = triplet(out_v, out_w, out…

つづき

(m-n)%3 をどうやって計算するか?

つづき

上の続き

さすがにもう縮まないのでネタバレ

最終的に1525バイトになった。劇的に縮められる新機軸はもうなさそうなのでネタバレ

結局

$ ls -l quine5* -rw-r--r-- 1 kik kik 1856 2008-09-13 08:23 quine5-out.grass -rw-r--r-- 1 kik kik 1856 2008-09-13 08:23 quine5.grass -rw-r--r-- 1 kik kik 2294 2008-09-13 08:20 quine5.rb頑張って最適化して、1856Bになった。これはしばらく抜かれ…

新しい方法があまりに斬新なので

一晩で実装してしまった。 $ ruby grass.rb quine5.grass >quine5-out.grass $ cmp quine5.grass quine5-out.grass $ ls -l quine5* -rw-r--r-- 1 kik kik 2462 2008-09-13 06:19 quine5-out.grass -rw-r--r-- 1 kik kik 2462 2008-09-13 06:19 quine5.grass…

wWvを生成するコードをもらってきた

昨日の続きwWvを生成するコードを短くして、細かい最適化をやったところ $ time ruby grass.rb quine4.grass >quine4-out.grass real 0m0.796s user 0m0.704s sys 0m0.040s $ cmp quine4.grass quine4-out.grass $ ls -l quine4* -rw-r--r-- 1 kik kik 8947 …

コードサイズをmainに比例するようにした

昨日の続き。昨日のはコードサイズがmainの自乗に比例していたので、1MBになった。 今回は定数倍ですむようにした。定数倍にするには let data p1 w W v = v(W(W(w(w(w(W(W(W(...(W(p1))...)))))))を let dat1 w W v = w (dat0 w W v) in let dat2 w W v = W…

Quine作った

みんなQuine作ってるので、作ってみた。 $ time ruby grass.rb quine1.grass >quine1-out.grass real 1m16.528s user 1m13.429s sys 0m3.108s $ cmp quine1.grass quine1-out.grass $ ls -l quine1*.grass -rw-r--r-- 1 kik kik 1087824 2008-09-11 00:54 qu…

問題を作ってみたはいいが…

真面目に考えてみると、最初に適当に実装した解等よりさっぱり縮まない… アプローチはいくつかあると思ったのだが、最初に選んだのが一番だったっぽい。しかたがないので、echo(http://golf.shinh.org/p.rb?echo) をエラーなく実行するコードを書いた。 http…

なんでもできるぞー

チャーチ数を使って計算してみるテスト。810バイト。全然縮んでない。チャーチ数を使うと、掛け算が簡単だ。べき乗はさらに簡単だ。169とか251とか重要な数値が簡単に作れるぞー。頑張れば縮むと思うんだけどなあ。なんつーかかっこいいし require 'compile.…

あなごる

とりあえず面白そうな問題を思いついたので、あなごるに置いといた。 適当にこさえた答えをコミットしておいたけど、たぶん無駄だらけだと思う。

まじめに縮めてみる

上のアプローチで縮めてみた。 require 'compile.rb' compile do let.idt = abs x do end let.pr = abs a, b, c, d do out(d(c(b(a(idt))),ch119)) end # f0 f = f+f let.f0 = abs f, x do f(f(x)) end # f1 f = f+f+1 let.f1 = abs f, x do succ(f0(f,x)) e…

Hello, world!

草アセンブラとHello, world!を書いた。compile.rb やばい。適当に書きすぎてわけわからん。 INIT_ENV = [:out, :succ, :ch119, :inp] class Let def initialize(e) @e = e end def method_missing(name, *args) name = name.to_s raise NameError.new("Unkn…

いつ見ても思うんだけど

http://blog.goo.ne.jp/hosakanobuto/e/a2168106657ebdc9b80ae5c53dc20753 私は、学生たちに問うた。なぜ、日本でテストをやって一番いい点とは「100点」なのかと。その答えは、簡単である。 「100点」とは間違いがなかったということであり、評価方法が「減…

Problem 5

任意の正整数 a と n について、数列 は mod n でいつか定数になることを示せ 証明 あってると思うんだけど、ほんとにこんなんでええんかな…