10進法の話

本題に入る前に、小噺を。

2XXX年、M28星雲を旅行していると、本を読んでいる宇宙人を見つけた。その本の表紙には多面体の絵が描かれており、どうも数学書のようである。人を待っていて手持ち無沙汰であったので、向こうの数学の話を聞かせてもらおうと話しかけることにした。

色々話してみると、n進法という概念も向こうの星にあることがわかった。

地球人「俺たちは10進法を使っているんだ。」

宇宙人「奇遇ですね。私たちも10進法をつかっているんです。」

宇宙人の手は8本指であるので、少し不思議に思った。10進法の10は、人間が両手の指の数に関連しているという説を、かなり信じていたからだ。

地球人「へぇ、意外だ。俺たちは両手で指が10本あるから10進法を使うようになったとされているんだ。君は16本あるからてっきり16進法を使っているのかと思ったよ。」

宇宙人「何を言っているんですか!私の指は10本ですよ。それにあなたの指はA本しかないじゃないですか。」

HAHAHA

はい。大して面白くない話だと思いますが、この話で言いたかったのは、「『n進法』のnて何進法なんだ。」ということです。

(以降混乱を避けるため、(9+1)進法で表記されていることを数字を"10"のように""で囲んで明示します。)

この宇宙人は「10進法を使っている」と言っていますが、決して嘘をついたわけではありません。彼らが使っている"16"進法においては"16"は10なのです。そして、彼らからすると、私たちはA進法を使っている生命体として映っていることでしょう。

地球上では"10"進法がベースとして使われているという前提があるため、10進法という言葉で通じますが、その前提が崩れたとき10進法という言葉には何の意味もありません。

"2"進法で"2"は10ですし、"8"進法でも"8"は10で、これは一般化できます。

 

ではどうすればよいのでしょうか。ということで、後者関数の利用を提唱したいです。

後者関数はペアノの公理の文脈で見ますが、要は suc(a) = a + 1となる関数です。

10進法はsuc(9)進法、16進法はsuc(E)進法、2進法はsuc(1)進法というように表わせます。

 

そもそも、位取りの定義に位取りに依存した数字を使うのがおかしいのです。

9までの数を使うという意味で9迄数みたいに呼んでいれば・・・。

 

 

量子オセロというゲームを作りました。

はじめに

はじめまして。eduidlといいます。

量子オセロというゲームを作ったので、ひっそりとここで発表しようと思います。

最初の投稿にしてはかなり奇抜かもしれませんが、むしろこれを投稿するためにブログを開設したといっても過言ではありません。こちら

量子人狼や量子将棋を知っているでしょうか。量子人狼であれば役職や生死を、量子将棋であれば駒を重ね合わせとして扱うような新しいゲームです。詳しくは、各自調べていただくとして、こんな感じの""量子ゲーム""を作りたいなと思いました。

そして一つの可能性に気付きました。オセロです。量子大富豪も考えたのですが、「マスクメン」の劣化にしかならなかったので、諦めました。

量子オセロのルール

基本は通常のオセロ同じです。大きく違うのは、石の色が重ね合わせの状態にあることです。

まず、初期配置を考えます。オセロのルールをあまり弄りたくなかったので、中央に4つ石を置くというルールはそのままです。ただ石は量子化されているので、

f:id:educated_idler:20170322202529p:plain f:id:educated_idler:20170322202536p:plain f:id:educated_idler:20170322202539p:plain f:id:educated_idler:20170322202543p:plain f:id:educated_idler:20170322202544p:plain f:id:educated_idler:20170322202549p:plain f:id:educated_idler:20170322202554p:plain f:id:educated_idler:20170322202556p:plain f:id:educated_idler:20170322205744p:plain f:id:educated_idler:20170322205809p:plain f:id:educated_idler:20170322202602p:plain f:id:educated_idler:20170322205825p:plain f:id:educated_idler:20170322202607p:plain f:id:educated_idler:20170322202608p:plain f:id:educated_idler:20170322202611p:plain f:id:educated_idler:20170322202612p:plain

の16通りの状態があります。先手が、右上の石のさらに右上の位置に石を打つとします。

f:id:educated_idler:20170322202529p:plain f:id:educated_idler:20170322202536p:plain f:id:educated_idler:20170322202554p:plain f:id:educated_idler:20170322202556p:plain f:id:educated_idler:20170322205744p:plain f:id:educated_idler:20170322205809p:plainf:id:educated_idler:20170322202611p:plain f:id:educated_idler:20170322202612p:plain

の8通りの場合、石を返すことができないため、石を置けませんが、以下の8通りは石を返すことができ、石を置けます。ここで注意しておきたいのは、持ち石も量子化されているため、相手の色を置いて返すことができる場合も含むということです。

f:id:educated_idler:20170322202539p:plain f:id:educated_idler:20170322202543p:plain f:id:educated_idler:20170322202544p:plain f:id:educated_idler:20170322202549p:plain f:id:educated_idler:20170322202602p:plain f:id:educated_idler:20170322205825p:plain f:id:educated_idler:20170322202607p:plain f:id:educated_idler:20170322202608p:plain

そして、実際に置いた結果が次の通りです。

f:id:educated_idler:20170322211115p:plain f:id:educated_idler:20170322211150p:plain f:id:educated_idler:20170322211155p:plain f:id:educated_idler:20170322211204p:plain f:id:educated_idler:20170322211207p:plain f:id:educated_idler:20170322211211p:plain f:id:educated_idler:20170322211214p:plain f:id:educated_idler:20170322211218p:plain

先ほど持ち石が量子化されていると書きましたが、自分の色と相手の色が等確率だと勝負がつかないので、自分の色が相手の色より1.2倍でやすいことにし、対称性を崩しています。(盤の確率比は左上から、5:5665566となります。)

そして、このような複数の状態の重ね合わせを表わす手段として、それぞれの石が黒である確率(%)を用いています。例えば先ほど置いた石について計算する(存在比をそれぞれ足して比をとる)と、黒:白 = 24:20 = 6:5となることがわかります。つまり黒である確率は、6÷11×100≒55%となるので、55が表示されます。実際、下の図のようになります。グレーの丸は50を意味し、黒と白が22:22=1:1であることと合致します。

表記は0は白丸、1~49は数字をそのまま白色で、50はグレーの丸、51~99は数字をそのまま黒色で、100は黒丸で表わすことにしました。

f:id:educated_idler:20170322213609p:plain

次に後手が、白が1.2倍で表になりやすい量子石を置き、といった感じで手番を交代し、ゲームを進めていきます。

試合終了時、黒である確率が51以上の石を黒石、49以下の石を白石として扱い、石の数が多い方が勝ちです。

説明を読むより実際にやってみるとわかりやすいと思います。現実のオセロ盤では当然できないので、JavaScriptでプログラミングしてみました。こちらで遊べます。