2007-06-01から1ヶ月間の記事一覧

麻雀プログラムの基本 あがりの形を得る

Gaucheの例。append-map による深さ優先探索。 (use srfi-1) (define (delete-elt x l) (let ([index (list-index (lambda (p) (eq? p x)) l)]) (and index (call-with-values (lambda () (split-at l index)) (lambda (x xs) (append x (cdr xs))))))) (def…

麻雀 役判定の難しさ

あなたの判定プログラムは、大丈夫? このアガリ形には、いくつかの可能性がある。 三連刻 三暗刻 ツモ の 5飜 (111 222 333 123 11) 純全帯 二盃口 平和 ツモ の 8飜 (123 123 123 123 11) 七対子 ツモ の 3飜 (11 11 22 22 33 33 11) よって、正解は、…

不思議なダンジョン自動生成

(追記)javascriptで書き直しました -> id:Gemma:20070816 Gaucheで書いた、ダンジョン自動生成プログラム。http://racanhack.sourceforge.jp/rhdoc/index.html と同じアルゴリズム。 解説を書こうと思いつつも、すでに2週間放置しているので、先にコードだけ…

もし僕らのことばがS式であったなら

という題で、5分間のScheme紹介をしました。 前半は、メタ言語としてのSchemeの話を、後半はDrSchemeについてを中心に話しました。 DrSchemeには、S式でプレゼンが作れるSlideshowというプログラム言語が同梱されているので、使ってみました。 クロスプラッ…

スキスキ☆Scheme

Scheme。第一級の継続。マクロ。 しかし、カッコだらけ、静的型チェックなし、etc... ambで非決定性計算をやれば、「それ、リストモナドで」。 マクロは、自分が極めてないので、なんかすごいらしいとしか言えず。OCamlにはcamlp4やMetaOCamlもあるし。 遅延…

ラグランジュの四平方数再び

id:zyxwv:20070604 の言う通りです。 上限からだけじゃなく、下限からの探索打ち切りができる。これに一瞬で気づける人がICPC行くんだろう。 #include <stdio.h> #include <math.h> int cmp (int a, int b, int c, int d, int n) { int s = a * a + b * b + c * c + d * d; if</math.h></stdio.h>…