[math][knuth] Surreal Number
上のプログラムで ZeroOrMore と書いていて思い出したのが surreal number (日本語だと超現実数?でもこの言い方オカルト臭くて好きじゃない…)。
クヌース先生の書いた「至福の超現実数」というこれまた怪しい本があるのでおすすめ (血気盛んな若い男女の話です)。
- 作者: ドナルド・E.クヌース,Donald E. Knuth,松浦俊輔
- 出版社/メーカー: 柏書房
- 発売日: 2004/11
- メディア: 単行本
- 購入: 3人 クリック: 38回
- この商品を含むブログ (11件) を見る
追記: haXe で surreal number ごっこ。
enum SurrealNumber { _; cons(f: SurrealNumber, s: SurrealNumber); } class Surreal { public static function backToReal(s: SurrealNumber): Float { return switch (s) { case _: 1; case cons(f, s): (backToReal(s) - backToReal(f)) / 2; } } public static function toOrdered(s: SurrealNumber): Int { var a: Float = backToReal(s); return a == 0 ? 0: (a < 0 ? -1: 1) * -cast(Math.log(Math.abs(a)) / Math.log(2)); } public static function main() { trace(toOrdered(cons(_, _))); trace(toOrdered(cons(cons(_, _), _))); trace(toOrdered(cons(cons(cons(_, _), _), _))); } }