• 締切済み

ビブリボンに登場する自然数の見慣れぬ表記法について

プレイステーション用のゲームに「ビブリボン」というものがあります。 音楽用CDを読み込んで遊ぶリズムゲームで、画面上部にスコアらしき物が表示されて(漂って)いるのですが、その数の規則がなかなか不思議なのです。 自然数のビブリ記法(と、勝手に名付けます)の特徴は ・アラビア数字ではなく幾何学的図形が数字として使われている ・桁数は7桁で固定でありそれ以上減りも増えもしない ・使われる数字の種類はおそらく無数にある ・それまでに現れた数字で全ての桁がいっぱいになると新たな数字が現れる ・n桁目の数字が"x"であるとするとn桁目よりも下の桁に"x"よりも小さな数字は現れない これだけでは分からないと思うので3桁の場合で実際に書き並べてみます。 数字にはアルファベット(a,b,c,d,...)を使います   1=aaa , 2=baa , 3=bba , 4=bbb , 5=caa   6=cba , 7=cbb , 8=cca , 9=ccb , 10=ccc   11=daa , 12=dba , 13=dbb , 14=dca , 15=dcb   16=dcc , 17=dda , 18=ddb , 19=ddc , 20=ddd   21=eaa , 22=eba , 23=ebb , 24=eca , 25=ecb   26=ecc , 27=eda , 28=edb , 29=edc , 30=edd   31=eea , 32=eeb , 33=eec , 34=eed , 35=eee すぐに分かる事ですが、このビブリ表記はその桁数に強く依存します。 (例えば4桁で13を書き換えるとcccaになる) 一般の10進数表記からn桁ビブリ表記に書き換える簡単な方法はあるでしょうか? 逆に、n桁ビブリ表記から10進数表記に書き換える簡単な方法はあるでしょうか? 自分でも考えてみたのですが、 2桁の場合には自然数の和Σ[k=1~n]{k}に関係しそうな事くらいしかわからず、n桁表記の場合まで規則を記述するには至りませんでした。

みんなの回答

  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.2

#1です。追記 a=1,b=2,c=3,・・・とし、 (111),(211),(221)のように表すことにします。 と書きましたが、 a=0,b=1,c=2,・・・とし、 (000),(100),(110)・・・ としたほうが後々の式がきれいになりますね。

  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.1

最後のほうに書かれてますが、2桁の場合でn個の記号で表せられる数は、Σ[i=1~n]{i} これは組合せの数の記号Cを使えば、(n+1)C2 重複組合せの数の記号Hを使えば、nH2 と表現できます。 同様に、3桁の場合でn個の記号で表せられる数は、 nH3 (示されている3桁5文字の例では、5H3=7C3=35) 一般解は、 k桁n個の記号で表せられる数は、nHk 組合せ記号を使わないで表すと、 nHk=(n+k-1)Ck=(n+k-1)(n+k-2)・・・(n+1)(n)/(1*2*3*・・・*k) 文字のままでは計算できないので、ビブリ表記を、 a=1,b=2,c=3,・・・とし、 (111),(211),(221)のように表すことにします。 また、ビブリ表記の右側からi番目の数字をb(i)とします。 k桁ビブリ表記から10進数表記への変換式は、 1+Σ[i=1~k]{H(b(i)-1,i)} (ただし、H(n,k)=nHk) 変換例 12=dba=(421) 1+H(0,1)+H(1,2)+H(3,3)=1+C(0,1)+C(2,2)+C(5,3)=1+0+1+10=12 29=edc=(543) 1+H(2,1)+H(3,2)+H(4,3)=1+C(2,1)+C(4,2)+C(6,3)=1+2+6+20=29 10進数表記からk桁ビブリ表記への変換は、ちょっと厄介です。 10進数をmとしたとき、まず始めに、 H(b(k)-1,k)<m≦H(b(k),k) となるb(k)を求めます。 つぎに、m'=m-H(b(k)-1,k)として、 H(b(k-1)-1,k-1)<m'≦H(b(k-1),k-1) となるb(k-1)を求めます。 つぎに、m''=m'-H(b(k-1)-1,k-1)として、 H(b(k-2)-1,k-2)<m''≦H(b(k-2),k-2) となるb(k-2)を求めます。 これを繰り返して、b(k),b(k-1),b(k-2),・・・,b(1) を定めていきます。 変換例 12=dba=(421) H(3,3)=10<12≦H(4,3)=20 なので、b(3)=4 H(1,2)=1<2≦H(2,2)=3 なので、b(2)=2 H(0,1)=0<1≦H(1,1)=1 なので、b(1)=1 29=edc=(543) H(4,3)=20<29≦H(5,3)=35 なので、b(3)=5 H(3,2)=6<9≦H(4,2)=10 なので、b(2)=4 H(2,1)=2<3≦H(3,1)=3 なので、b(1)=3

関連するQ&A

専門家に質問してみよう