|
最初に掲載して頂いたプログラムを、マクマホンの条件に合うように修正して動かしてみようと私なりに試みていましたが、3進法や配置の条件を組むあたりは何とか理解できたのでいろいろ変更しながらスタートしても、範囲を超えてますなどの返事が返ってくるだけで一向に動こうとはしませんでした。
また今度はピースを回転させることも許されるので、どうしたらいいのか検討もつきませんでした。
今度掲載して頂いたプログラム(実際パソコンの能力では結果がでるまでは長時間かかりそう・・・)を拝見し、特に次の部分の構成が凄いと思いました。
DIM F(0 TO 3^4-1) !ピースが重複するかどうか確認する
MAT F=ZER
FOR y=1 TO M*N !ピースの位置
LET v0=B(H(y,1))*27+B(H(y,2))*9+B(H(y,3))*3+B(H(y,4)) !ピース番号 4桁ずつ
LET v1=B(H(y,3))*27+B(H(y,1))*9+B(H(y,4))*3+B(H(y,2)) !90°回転
LET v2=B(H(y,4))*27+B(H(y,3))*9+B(H(y,2))*3+B(H(y,1)) !180°回転
LET v3=B(H(y,2))*27+B(H(y,4))*9+B(H(y,1))*3+B(H(y,3)) !270°回転
LET t=MIN( MIN(v0,v1), MIN(v2,v3) ) !回転対称を除く
IF F(t)=1 THEN EXIT FOR !重複!!!
LET F(t)=1
(実は理解したつもりが、本当はよく分かってないかも・・・)
このように、実際の問題にどのようにプログラムを構成していかれるのかを拝見するのはとっても参考になります。
私も(もうじき退職を迎える年齢になっています。)まとめて勉強する時間がとれる時がきましたら、山中さんが作られた数多くのプログラム(電脳遊戯団よりダウンロード済み)を一つ一つ鑑賞しコンピュータを自由に使いこなす域まで到達したいと密かに計画しております。(現在はコンピュータに使われている状態です。)
重ね重ねプログラムを提供していただいて、ありがとうございます。
山中さんを人生の目標にします。
|
|