2008年11月29日土曜日

Knuth先生の小切手

8月の米国出張の際, オークランドのFranz社を訪問した. 鉄道マニアの私のことゆえ, 往きは当然Bartで行ったが, 帰りはFranzの小俣さんがサンフランシスコまで車で送ってくれた. その途中サブプライム問題による売り家の看板をいくつも見かけ, 金融危機をいささか実感した.

ところでこの度, Knuth先生がTAOCPのエラー発見者に対する小切手発行を止めるというので, 金融危機が急遽身近かになった. 完全主義者のKnuth先生は, 自著のエラーを最初に報告した人に十進法で2.56ドル(十六進法で1.00ドル)の小切手を贈ることにしてきた. 小切手は通常は1ヶ月以内に振出人に戻って来るが, Knuth先生の小切手は殆んど現金化されないので(「cashedは僅かで残りはcached」だそうだ), 多くの小切手が世界中に残留しており, 口座番号が知られる危険性があり, 10010年に1度の金融危機の現状では放置出来ない仕儀と相なった.

その代りとして, Pincus惑星に支店のある, San Serriffe銀行に, 小切手受取人の口座を開き, そこに支払い証明(certificate)を積み立てることにしたというのだ. もちろんこれは架空の銀行で, われわれLisperならfoo銀行のbar支店というところである.

PincusとかSan Serriffeは, Knuth先生は好きらしく, TAOCP分冊0には, Pincus惑星の論理学者がどうのこうの(演習問題7.1.1-2)とか, San Serriffe島にはm羽の鳩がいる(演習問題7.1.1-41)とか, 出てくる. 私は漫画やSFには暗いので, これらの名詞がそういうものと何か関係があるかは存ぜぬ.

さて, その新システムの支払い証明がコンピュータ屋には面白い. いろいろ新機軸が見らる.

米国で暮した人は知っているように, ある受取人に2.56ドル渡す場合, 小切手には

Pay to the order of の次に受取人を書き, その右の方に $2.56 と書く.

中央の枠には綴りで Two and 〜〜〜〜〜〜〜〜 56/100 Dollars

のように書く. 従ってHundredとかThousandの綴りも知らなければならない. ドル以下は100分のなんとかと書くことになっている.

新システムにはKnuth先生の趣味がふんだんに見られ,

まず受取人の右の金額は十六進法で 0x$ 1.00 となる.

中央の枠は

One and 〜〜〜〜〜〜〜〜〜 no/256 Hexadecimal Dollars

と変った.


これは実は私として, 大変気持ちが悪い. Knuth先生のホームページなどに, $2.56の由来が書いてあるが, 「256 pennies is one hexadecimal dollar」 がその理由だ.

私に言わせれば, 1は十進でも十六進でも1であり, one hexadecimal dollarはすなわち one decimal dollar である. 10016¢なら25610¢ = $2.5610で, これが理由なら納得出来る. 10016¢ !=10010¢なのだ.

エラー発見は$2.56であるが, 改良案を示すと32¢頂ける. つまり0x$0.20 である. 改良案2件なら 0x$0.40, 5件なら 0x$0.a0, 7件なら 0x$0.e0というわけだ. そこで新システムの中央の枠だが, 改良案1件の場合

Zero and 〜〜〜〜〜〜〜〜 32/256 Hexadecimal Dollarsとなるのだろうか?

Zero and 〜〜〜〜〜〜〜〜 20/100 Hexadecimal Dollarsではないかと思うのだが.

さらに仮りにエラーを1210件見つけたら,

Twelve and なのかな. まさか C and とか書かないであろう.

問題は十六進の桁の読み方, A,B,...,Fの綴り方がないことである. 私は私なりの提案を持つが, それはまたいずれ.

追記 その後Knuth先生から32¢の支払い証明が送られてきた. 確かに0x$0.20とあり, 中央の枠には案の定

Zero and 〜〜〜〜〜〜〜〜 32/256 Hexadecimal Dollars

と書いてあった. 32¢を送る航空便には94¢の切手が貼ってあった.

0 件のコメント: