巨大数研究 Wiki
Advertisement

ローダー数 (Loader's number) は、Ralph Loader が巨大数ベイクオフ大会で作成して優勝したC言語プログラム loader.c によって出力される数字である。巨大数ベイクオフ大会の目的は、512文字以内のC言語プログラムで、最大の数を出力することである。

loader.c は、Thierry Coquandcalculus of constructions を対角化する。その出力は親しみを込めて ローダー数 (Loader's number) と名付けられ、D5(99) で定義される。ここで、 D(k) は calculus of constructions の表現で最初のk個の表現で表記出来るすべてのビット列の合計である。ここで、すべてを2進数に変換することとする。

David Moews は D(99) は 2↑↑30419より大きいとしており、さらに D2(99) は急増加関数の fε0 + ω3(1000000) よりも大きいとしている。これは Marxen.c の出力の上限であるため、 D2(99) はこれよりも大きい。

D5(99) の最終的な出力は、2021年9月現在全く未知であるが、プログラムで書かれている以上計算可能であるため、 ビジービーバー関数 との比較では Σ(n) > D5(99) は小さなn (例えばn=100) でも成り立つ。

このコードは実行することを意図として作られてはいない。もし実行するとすれば、'int' はもちろん、物理的に実現可能なものよりはるかに大きい、計算されたすべての値をオーバーフローすることなく保持できるほどのメモリがあることを前提としている。

ローダー数の数式的定義はKawamoYurase(通称:川面)によって与えられた。[1]なお、川面による定義はcalculus of constructionsの対角化というloader.cの意図を自然な方法でやり直したものであって、ローダー数と正確に一致する数を与えないことに注意せよ。

コード[]

#define R { return
#define P P (
#define L L (
#define T S (v, y, c,
#define C ),
#define X x)
#define F );}

int r, a;
P y, X
   R y - ~y << x;
}
Z (X
   R r = x % 2 ? 0 : 1 + Z (x / 2 F
L X
   R x / 2 >> Z (x F
#define U = S(4,13,-4,
T  t)
{
   int
      f = L t C         
      x = r;
   R
         f - 2 ?
         f > 2 ?
         f - v ? t - (f > v) * c : y :
         P f, P T  L X  C 
                          S (v+2, t  U y C  c, Z (X )))
         :
         A (T  L X  C 
                T  Z (X ) F
}
A (y, X
   R L y) - 1
      ? 5 << P y, X 
      : S (4, x, 4, Z (r) F
#define B (x /= 2) % 2 && (
D (X 
{
   int
      f,
      d,
      c = 0,
      t = 7,
      u = 14;
   while (x && D (x - 1 C  B 1))
      d = L L D (X ) C
         f = L r C
         x = L r C
         c - r || (
            L u) || L r) - f ||
            B u = S (4, d, 4, r C 
                   t = A (t, d) C
            f / 2 & B  c = P d, c C 
                              t  U t C 
                              u  U u) )
             C
         c && B
            t = P
               ~u & 2 | B
                  u = 1 << P L c C  u) C 
               P L c C  t) C
            c = r  C
         u / 2 & B 
            c = P t, c C 
            u  U t C 
            t = 9 );
   R a = P P t, P u, P x, c)) C 
                                a F
}
main ()
   R D (D (D (D (D (99)))) F

関連項目[]

外部リンク[]

参考文献[]

Advertisement