マルチスレッド版数独自動生成ソフトC++コードを題材とする超初心者のためのVisual Studio C++講義
第8章 ポインタの学習

第14話 エクセルをダウンロードして 4 * n + 2 次魔方陣のつくり方を学ぼう

エクセルファイル

    ↑

クリックしてダウンロードしてください。


ファイルのダウンロードをクリック

ファイルを開くをクリック


編集を有効にするをクリック

右側の×でファイルを閉じてください。
エクスプローラーをクリックしてダウンロードを選びます。


dai8syo14waはブロックされていますので以下の手順でブロックを外します。

dai8syo14waを右クリック
プロパティを選びます。


許可するにレ点を入れてOKします。

これでブロックは外れました。
ダウンロードに戻りdai8syo14waをダブルクリックします。

E3に7などの数字を入力して実行ボタンを押します。

もうお馴染みの画面ですね。

要するに魔方陣のつくり方を教えてくれるのです。

これはエクセルのVBA(Visual Basic for Applications)を使って作ったマクロです。

マクロはプログラミングを知らなくても組めますが、

プログラミングを知っていると応用範囲が極めて広がります。

キーボードのAlt + F11(Altを押しながらF11を押す操作をこの記号で表します)してください。
Sheet1をクリック!


赤枠がプログラム編集ソフトエディタです。

VBAによるプログラミングも本講義第2部で学びます。

C++のマルチスレッド版数独自動生成ソフトが生成した数独をエクセルシートに取り組むためにです。

実は数独自動生成ソフトは最初はすべてVBAで作っていましたが、

ヒント数22ぐらいまでは数秒以内で数独が生成されましたが、

ヒント数20ぐらいになるとなんと18時間も生成に要しました。

それで十八番のC++にマルチスレッドプログラミング(本講義基礎編第11章で学びます)をして、

生成させたら、なんと数秒でエクセルシートに数独を生成してきたときには大変驚いたものです。

いくらC++マルチスレッドと言えども、精々15倍程度速くなる程度だと予想していたからです。

実際には3000倍以上速くなりました。

C言語とC++のマルチスレッドプログラミングは化け物です。

1972年に開発されたC言語は、

その当時からマルチスレッドプログラミングができて化け物のような言語です。

VBAは残念ながらシングルスレッドプログラミングしかできません。

C++は1990年代にC言語を拡張したものです。

ですから、皆さんは化け物言語を学んでいるのです。

脱線は以上にしまして本論に戻ります。

プログラミングに入る前に是非ともやっていただきたい課題があります。

手作業で10次魔方陣を作るということをやっていただきたいのです。

そのためにエクセルに戻ってE3に5を入力してから実行ボタンを押していただきたいのです。


答が下に載っていますので、

ファイル→新規を選び

空白のブックを選びます。
当然空白の新規のエクセルができます。

に戻りの部分をコピーします。

新規に戻り、B2で右クリック
赤枠を選び

となります。



の指示の下に黄色は中心の点に対して点対称移動、

明るい紫は中央の直線に対して左右線対称移動

緑は中央の直線に対して上下線対称移動

をひと升ずつ交換していってほしいわけです。

80升もあり大変な作業ですが、是非ともすべて交換してから、

すべての行・すべての列・2本の対角線の合計を計算してください。










第8章第13話へ 第9章第15話へ

本講義トップへ