第18講 対角線法による魔方陣自動生成速度の1万倍加へ
第2話 課題の困難性
n=7のとき
0 | 13 | 14 | 15 | 16 | 17 | 7 |
18 | 1 | 19 | 20 | 21 | 8 | 22 |
23 | 24 | 2 | 25 | 9 | 26 | 27 |
28 | 29 | 30 | 3 | 31 | 32 | 33 |
34 | 35 | 10 | 36 | 4 | 37 | 38 |
39 | 11 | 40 | 41 | 42 | 5 | 43 |
12 | 44 | 45 | 46 | 47 | 48 | 6 |
番号付けでさえ難しそうだというのはお分かりですよね。
実はそれに更に、もう一つ大きな壁が立ちはだかっています。
壁とは、
0 | 1 | 2 | 3 | 4 | 5 | 6 | |
0 | 0 | 13 | 14 | 15 | 16 | 17 | 7 |
1 | 18 | 1 | 19 | 20 | 21 | 8 | 22 |
2 | 23 | 24 | 2 | 25 | 9 | 26 | 27 |
3 | 28 | 29 | 30 | 3 | 31 | 32 | 33 |
4 | 34 | 35 | 10 | 36 | 4 | 37 | 38 |
5 | 39 | 11 | 40 | 41 | 42 | 5 | 43 |
6 | 12 | 44 | 45 | 46 | 47 | 48 | 6 |
白い数字とy座標である紺の数字やx座標である赤の数字とを
いかに関連づけるです。
番号付けが
0 | 1 | 2 | 3 | 4 | 5 | 6 | |
1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
2 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |
3 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
4 | 21 | 22 | 23 | 24 | 25 | 26 | 27 |
5 | 28 | 29 | 30 | 31 | 32 | 33 | 34 |
6 | 35 | 36 | 37 | 38 | 39 | 40 | 41 |
7 | 42 | 43 | 44 | 45 | 46 | 47 | 48 |
であったときは、
簡単でしたから、
y=g/n;
x=g%n;
でよかったわけですが、
実は、第10講の魔方陣自動生成アプリは、
少し無駄がありました。
座標は決まっているのですから、
毎回計算させるのは時間の無駄です。
配列を用意しておいて、
y[0]=0,y[1]=0,・・・としておいて利用する方が利口です。
0 | 1 | 2 | 3 | 4 | 5 | 6 | |
0 | 0 | 13 | 14 | 15 | 16 | 17 | 7 |
1 | 18 | 1 | 19 | 20 | 21 | 8 | 22 |
2 | 23 | 24 | 2 | 25 | 9 | 26 | 27 |
3 | 28 | 29 | 30 | 3 | 31 | 32 | 33 |
4 | 34 | 35 | 10 | 36 | 4 | 37 | 38 |
5 | 39 | 11 | 40 | 41 | 42 | 5 | 43 |
6 | 12 | 44 | 45 | 46 | 47 | 48 | 6 |
であると、
y[0]=0,y[1]=1,y[2]=2,y[3]=3,y[4]=4,y[5]=5,y[6]=6
x[0]=0,x[1]=1,x[2]=2,x[3]=3,x[4]=4,x[5]=5,x[6]=6
まではいいのですが、
y[7]=0,y[8]=1,y[9]=2,y[10]=4,y[11]=5,y[12]=6
x[7]=6,x[8]=5,x[9]=4,x[10]=2,x[11]=1,x[12]=0
となり複雑になり、さらに、
y[13]=0,y[14]=0,y[15]=0,y[16]=0,y[17]=0,y[18]=1,y[19]=1,y[20]=1,・・・
x[13]=1,x[14]=2,x[15]=3,x[16]=4,x[17]=5,x[18]=0,x[19]=2,x[20]=3,・・・
となっては手を付けられない!!!
という状態になります。
しかし、私はこの複雑にして奇妙奇天烈な課題を、
高校2年生で習う数Bの数列の手法を使って解明しました。
とはいえ、もちろんかなり複雑な答になっていました。
いくら丁寧に説明しても、高校2,3年生でも理解は難しいでしょう。
ところが、読者の仮屋崎さんから
天才的な番号付けと座標の関連づけのアイデアが寄せられました。
この方法なら、
高校生どころか、小学生の皆さんにも理解できるでしょう。
お陰で、「小学生からエンジニアまでのc言語入門講義」
のまな板にのせることが出来たのです。
天才的方法とは何か。
次話では、座標作成関数をどのようにしたら作れるのか、
考え方を説明しましょう。
初心者のための excel 2016 マクロ VBA 入門講義 基礎から応用まで
vc++ c言語 c++ 入門 初心者 基礎から応用まで
eclipse c++ 入門
魔方陣 数独で学ぶ VBA 入門
数独のシンプルな解き方・簡単な解法の研究
VB講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 C++ 入門 基礎から応用まで第1部
eclipse java 入門
java 入門 サイト 基礎から応用まで
本サイトトップへ