0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【プログラミング初心者】Swift練習問題~ハノイの塔~

Last updated at Posted at 2020-06-12

#ハノイの塔
##ハノイの塔とは

ハノイの塔は、フランスの数学者エドゥアール・リュカが1883年に発売したゲーム『ハノイの塔』がルーツである。
https://ja.wikipedia.org/wiki/%E3%83%8F%E3%83%8E%E3%82%A4%E3%81%AE%E5%A1%94#%E7%94%B1%E6%9D%A5

プログラムとは関係のないパズルの一種でハノイの塔のオモチャもあるようです。
プログラムとは関係ありませんがプログラムで解く題材としてもよく扱われる問題の一種です。

以下のようなゲームです。
3本の棒A、B、Cがあり、棒Aに何枚かの大きさの異なる円盤が下から大きい順に棒を通して重ねられています。
ハノイの塔1.png
これを以下のルールに従って円盤をAからBに移動させます。

  • ルール
    • 1回に一枚の円盤しか動かせない。
    • 移動途中も常に大きい方の円盤が下になるように積む。
    • 棒A、B、C以外の場所に移動させてはいけない

(例)円盤が2枚の場合
ハノイの塔2.png

##問題
以下表示例のような、ハノイの塔でN枚の円盤を移動させる手順を表示する再帰関数を作成してください。
※Nが0以下の場合は何も表示しなくてかまいません。

数字はそれぞれ円盤を表し、小さい円盤から順に1,2,3,...とします。

表示例(N=2の場合)
1の円盤をAからCに移動
2の円盤をAからBに移動
1の円盤をCからBに移動
表示例(N=3の場合)
1の円盤をAからBに移動
2の円盤をAからCに移動
1の円盤をBからCに移動
3の円盤をAからBに移動
1の円盤をCからAに移動
2の円盤をCからBに移動
1の円盤をAからBに移動

回答例はこちら

##ヒント
解き方のヒントを載せているので難しい場合は参考にしてみてください。

【注意】
回答例のページと同じページに掲載しています。
下の方に回答例が書かれているので見たくない人は注意してページをスクロールしてください。

#最後に
別の問題は以下に掲載しています。
また本記事とは別でプログラミング未経験からiOSアプリ開発が行えるようになることを目的とした記事を連載しています。
連載も以下にまとめていますのでそちらも是非もご覧ください。
http://naoyalog.com/

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?