N88-BASIC,Cでハノイの塔 (7回目)
2025/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) = 2n - 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(han007.c)は
このブログ(以下のリンク)から
ダウンロードできます
https://ulprojectmail.blogspot.com
Readme.txtを読んで遊んで下さい
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) = 2n - 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(han007.c)は
このブログ(以下のリンク)から
ダウンロードできます
https://ulprojectmail.blogspot.com
Readme.txtを読んで遊んで下さい