FANDOM

  • Kyodaisuu

    原始数列の順序数を表示するプログラムを作成した。

    • Primitive sequence analyzer 原始数列解析

    ボックスに原始数列を入れて送信ボタンを押すと、対応する順序数が表示される。

    原始数列の入力方法は、たとえば (0,1,2,3) を入れるためには、

    0123

    と、数字をそのまま並べれば良い。

    2桁以上の数を入れるためには、セパレーターとしてスペースまたはカンマを使う。セパレーターを使うと、数字の並びはすべて1つの数として認識される。

    たとえば、

    0123412333

    と入力すると、(0, 1, 2, 3, 4, 1, 2, 3, 3, 3) の順序数が

    \[\omega^{\omega^{\omega^\omega}+\omega^{\omega^3}}\]

    のように表示される。

    なお、原始数列について詳しくは『巨大数論 第2版』の160〜167ページを参照。


    数列は次のように標準化される。

    • 0で始める
    • 1つずつ数が増える
    • 順序数の足し算で、\(\alpha < \beta\) のときに \(\alpha + \beta\) の形のときに \(\alpha\) を取る

    たとえば、(1,3,5,7) は (0,1,2,3) として、(0,1,0,1,2) は (0,1,2) とする。


    ソースコードはMITライセンスで公開されている。

    Python 2 のプログラムであり、通常モードではコマンドラインプログラムとしてターミナルで動かすことができる。環境変数 SCRIPT_NAME が設定されているときには、CGI プログラムとして動作する。

    全文を読む >
  • Kyodaisuu

    Hassiumさんの巨大数問題10

    大グラハム数を11で割った余りを求めよ。

    を考えるついでに、グラハム数を自然数Nで割った余りを計算するプログラムを作りました。

    - グラハム数 mod N の計算

    オンライン版はサーバーに負荷をかけたくないので N = 10^5 までにしています。

    TokusiN さんによるグラハム数1,000,000桁表〈最終巻〉では N=10^10^6 が計算されています。そのように大きな N の値を計算するためには、もっと効率的なアルゴリズムを使う必要があると思います。

    N = 11 として計算すると

    3^n mod 11 = [1, 3, 9, 5, 4] (cycle length = 5) 3^3^n mod 11 = [3, 5, 4, 9] (cycle length = 4) 3^3^3^n mod 11 = [5, 9] (cycle length = 2) 3^3^3^3^n mod 11 = [9] (cycle length = 1)
    G mod 11 = 9

    のように表示されます。Hassiumさんの解答と比べると、同じ結果となっています。

    3^n mod 11 = [1, 3, 9, 5, 4] (cycle length = 5)

    というのは、3^n mod 11 を n=0 から計算すると、このような長さ5のループとなることを示しています。

    N = 109 を計算すると

    3^n mod 109 = [1, 3, 9, 27, 81, 25, 75, 7,..., 105, 97, 73] (cycle length = 27) 3^3^n mod 109 = [3, 27, 63, 1] => 1 Rotation is 3^3 ……
    全文を読む >
  • Kyodaisuu

    ロバート・ムナフォは、6までの自然数はクラス0の数、10^6までの数はクラス1の数、10^10^6までの数はクラス2の数、というように、自然数を使って自然数をクラス分けした、そのオリジナルな定義を急成長階層とすると、上記の定義は急成長階層における関数の集合に属する関数の例を1つずつ取り出すような関数を定義している、と考えられる。

    さて、このようにして急成長階層で関数が階層分けされるのであるから、たとえばグラハム数は「\(\omega+1\)の階層に属するグラハム関数によって定義される巨大数である」と表現すれば、順序数を使ってグラハム数の大きさを評価できる。しかし、この表記法は若干まどろっこしいので、もっと直接的に「グラハム数の大きさは階層\(\omega+1\)である」というように表現したい。そこで、急増加関数を使って、数の大きさを直接的に順序数で階層分けすることを考える。


    順序数\(\alpha\)に対して、\(\mathcal{E}^{\alpha}\) に属する数を

    \[ \alpha < \beta \Rightarrow \mathcal{E}^\alpha < \mathcal{E}^\beta \]

    であるように定義をしたいが、これは原理的に不可能である。そこで、目的を

    ある数\(n\)がある順序数\(\alpha = C(n)\)のクラスに一意に定まり、\( C(m) < C(n) \Rightarrow m < n \)

    とする。


    極限順序数 \(\gamma\) 以下のすべての極限順序数 \(\beta\) に対して、基本列 \(\beta[n]\) が一意に定められているとする。すると、\(\gamma\) 以下のすべての順序数 \(\alpha\) に対し ……




    全文を読む >
  • Kyodaisuu

    ユーザー:Kyodaisuu/F3の展開を見て、ジョセフさんがふぃっしゅ数ver.3の展開プログラムを作っていただいたので、実行してみました。\(X0 = ss(2)^{63}f(3)\) が展開されます。実行結果を貼ります。[ ] の中は ss(n) 変換で、[ ] の中の [ ] は s(n) 変換です。

    \( s(1)^3 s(2)^2 ss(1)^2 ss(2)^{62} f(3)\) は

    [[1,1,1,2,2],1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2] (3)

    と表示され、その次は \( [s(1)^2 s(2)^2 ss(1)^2 ss(2)^{62} f]^3(3) \) ですが、そこで

    Xn = [[1,1,2,2],1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2] (3)

    と表示されます。この Xn= というのは、\(F^3(3)\) の計算で一番内側の \(Xn = F(3)\) を計算しています。

    計算はまだ続いていますが、ここでプログラムを終了しました。

    全文を読む >
  • Kyodaisuu

    「日本語の文章の文頭に英単語があるときに、その単語は小文字ではじめますか、大文字ではじめますか?」という Twitter アンケートの結果は「大文字ではじめる」が32%で「小文字がはじめる」が27%(4択、詳細は本文)と、「大文字ではじめる」の方が若干多かった。文頭を大文字化するという英語の規則は、日本語にもそれなりに取り入れられつつある。


    英語をはじめとするラテン文字を使用する多くの言語では、文章の最初の単語の先頭を大文字にする (capitalization) というルールがある。この規則は日本語にも適用されるのであろうか。

    このことを考えたきっかけは、巨大数論に書いた

    Billion が 1 兆をあらわすロングスケールは、かつてイギリスで使われていましたが、現在はイギリスでもショートスケールが基本です。

    という文章に対して、Billion から billion への修正意見をいただいたことである。文頭なので大文字化するものだと考えていたが、それは英語のルールであって日本語にはそのようなルールはないと言われれば、なるほどと思う。

    まずはネットで検索をしてみたところ、

    • 日本語論文を書く際の英単語の扱いについて (教えて! goo)
    • 日本語は語を借用しているのであって、文頭を大文字で書くという規則を借用しているのではありません (Twitter)

    といったように「小文字のままにするべき」という意見が見つかったが、いずれも個人的な意見であり、出版物の記述を根拠とするようなオーソライズされた記述は見つからなかった。文頭の単語の先頭を大文字化するべきであるという根拠も、してはいけないという根拠もみつからない。そもそもそのようなケースが少なく、そのような場面が生じても、気にする人は文頭の英単語 ……



    全文を読む >