N88-BASIC,Cでハノイの塔 (7回目)

202 5 / 1 /22 (水 ) N88-BASIC ,C で ハノイの塔 ( 7 回目 ) 途中経過の移動の分離と表示の分離 (hanoi) Cで書く ■ 前提 ▼ 参照 https://ulprojectmail.blogspot.com/2024/12/hanoi-3.html ハノイの塔 ( 3 回目 ) ▼ 前提 3本(A,B,C)の棒とn枚の円盤(小さい順に1~nとする)がある Aに1~nの円盤が上から順に積まれている ▼ 目標 1~nの円盤全てをCに移動させる ▼ ルール 小さい円盤の上に大きい円盤は置けない 1度に動かせる円盤は1枚のみ ▼ 定義 A,B,Cの一番上の円盤をpA, pB, pCとし、円盤が無い時は最大値とする 円盤を AからCに移動する事をA->Cと書くことにする ▼ 円盤の移動回数 N(n) = 2 n - 1 ▼ 分離 hより小さい円盤の移動はhの移動からhの移動まで N(h-1) = 2 (h-1) - 1回続く この塊を別の関数で一括処理することで表示判定を省略できる 更に N(a)を一括処理すると更に速くなる 実際の実装は han007.cを参照して下さい ■ 動作 変数名など内部では A,B,Cを(pole)1,2,3と表現しています nを入力し 1:A->Cの様に円盤の番号1~n(小~大)と棒A,B,C間の移動を表示する 今回の手順は再帰を使用していません h以上の円盤の移動のみ表示 VL,NL,XL-BASICとdlg~.zip( han 00 7 . c )は このブログ (以下のリンク)から ダウンロードできます https://ulprojectmail.blogspot.com Readme.txtを読んで遊んで下さい