利男

ウラムのスパイラル

出典: 西川利男 JAPLA 2002
論文:ぐるぐる渦巻きーJとExcelで作る楽しいSpiralプログラム
PDF
Script
Spiral_j8.ijs(J8)
オリジナル(J4)
EXCEL_VB(オリジナル)
  1. Excel VBの部分は省略した

スパイラルの作成

Stanislaw Marcin Uram (1909-1984) ポーランド出身の数学者。逃れてアメリカに渡り、 フォン・ノイマンの招きでマンハッタン計画に参画。大戦後もロスアラモス研究所で水爆の 構造決定に貢献した。

モンテカルロ法、セルオートマンなど数学への貢献も多い。(ノイマンの知恵袋) この螺旋は学会中の退屈しのぎに作ったもの。マーチンガードナーがサイエンスアメリカンで 取り上げ広めた。

Example
   0 spiralp 1
6 7 8
5 0 1
4 3 2
   1 spiralp 1
7 8 9
6 1 2
5 4 3
   0 spiralp 3
42 43 44 45 46 47 48
41 20 21 22 23 24 25
40 19  6  7  8  9 26
39 18  5  0  1 10 27
38 17  4  3  2 11 28
37 16 15 14 13 12 29
36 35 34 33 32 31 30

   1 spiralp 2
21 22 23 24 25
20  7  8  9 10
19  6  1  2 11
18  5  4  3 12
17 16 15 14 13

引数
x(左) オリジン(0/1/...)
y(右) 巻き数
Script
spiral =: 3 : 0
S=. 1 1$1
N=: }: 2+i. *: 1+2*y
(north @ west @ south @ east) ^:(y) S
)

east =: 3 : 0
N=: t}. N [ m0=. t{.N [ t=. {. $y
y ,. m0
)

south =: 3 : 0
N=: t}.N [ m0=. t{.N [ t=. {: $y
y , |. m0
)

west =: 3 : 0
N=: t}.N [ m0=. t{.N [ t=. {. $y
(|.m0) ,. y
)

north =: 3 : 0
N=: t}.N [ m0=. t{.N [ t=. {: $y
m0, y
)

spiralp =: 4 : 0
u0=: <: x + *: 1 + 2 * y
r=. >: u0 - x
t=. -: <: %: r
S=. 1 1$x
N =: (>: x) to u0
(north @ west @ south @ east) ^:(t) S
)

to =: 4 : 0
x + i. >: y - x
)

prime =: 1: = #@q:

素数の位置

  1. 素数の分布
    素数を求める
    Example
        1 spiralp 2
    21 22 23 24 25
    20  7  8  9 10
    19  6  1  2 11
    18  5  4  3 12
    17 16 15 14 13
       
       prime  1 spiralp 2
    0 0 1 0 0
    0 1 0 0 0
    1 0 0 1 1
    0 1 0 1 0
    1 0 0 0 1
       
    (prime 1 spiralp 5){' *'
      *        
     *     *   
    * *   *   *
     *   *     
    * * *      
       *  ** * 
        * * *  
     * *   *   
    * *     * *
         * *   
    *   *      
    
    Script
    prime =: 1: = #@q: 
  2. 素数を任意の数に置き換える  
    • 数のままでは着色は出来ず、文字化してグラフィックスで着色することとなる。
    • 西川はVBに写して華麗に着色している。
    • ここでは次の2行で数のまま簡易表示を行う
       index=.  I. , prime  tmp=. 1 spiralp 2
       5 5 $ (999) index } ,tmp
    
       5 5 $ (999) index } ,tmp
     21  22 999  24  25
     20 999   8   9  10
    999   6   1 999 999
     18 999   4 999  12
    999  16  15  14 999
       
    
    
    コンピューターの黎明期の大型機の良い課題だった。
    
    10000個程度のグラフィックスがWIKIで見られる
    
    
       (prime 1 spiralp 10){' *'
    *         * *     *  
         * *   *     *   
    *     *   * *        
       *           *     
      * *     *   *   *  
           *           * 
      *   *     *     * *
     *   * *   *   * *   
          *   *          
         * * *           
        *   *  ** * * *  
             * * *       
    * * * * *   *       *
     *   * *     * * *   
              * *   *    
       * *   *       *   
              * *     *  
       *   * *           
      *     *         * *
             *   * *   * 
    *   *       *     *