プログラミング言語アイコン

アルゴリズム入門編2: 「ハノイの塔」を学ぶ

paizaラーニング画面エリアは左上が動画エリア、左下が補足テキストエリア、右上がコードエリア、左下が入出力エリアとなっています。
paiza会員 になると、 受講状況、進捗度の表示、提出コードの保存、バッジの取得が出来ます。

■学び方手順

  • 下記の各チャプターに進むと左のようなレッスン画面が開きます。
  • 動画エリアには 各チャプター約3分の動画 が配置されています。
  • 補足テキストエリアには動画の補足情報や、解説している問題の問題文等が表示されます。 「演習課題へ進む」ボタン を押すと、そのチャプターの学習内容を元にした 類似問題が出題 されます。
  • コードエリアでは自由にコードの記述、実行が可能です。 動画の内容を実際に試してみましょう。
  • 入出力エリアでは、 コード実行時に標準入力する入力値の設定と、実行後の出力値 が表示されます。
  • 各エリアは、境界線上で ドラッグする事でサイズを変える 事が可能です。
学習ステータスイメージ画像

■学習ステータス

  • 「学習ステータス」では各講座の学習進捗状況が確認できます。
  • 右上に表示されているゲージはその講座の学習が全体の何%まで進んでいるかを表します。

    ※公開中のレッスンすべてを受講することで100%となります。レッスンが追加になった場合は追加された分を含めて100%となるため、ゲージの数値が変動することがありますのでご注意ください

  • 「学習レベル」は各チャプターを完了することでレベルアップします。
  • キャラクター画像は「ジョブ」によって変化します。「ジョブ」は各レッスンの演習問題をすべて正解して★を獲得する(模範解答を閲覧した場合、★は獲得できません)と上級ジョブにレベルアップすることができます。

    ※模範解答を閲覧した問題で★獲得を目指したいときは、そのチャプターの演習問題に最初から再挑戦してください

チャプター一覧

このレッスンでは、アルゴリズムの定番問題である「ハノイの塔」について学習します。 「ハノイの塔」は、paizaスキルチェックのAランク相当の問題です。



ここでは、ハノイの塔のプログラムを作るために、データ構造を考えます。そして、プログラムの初期化部分と、それを表示させる部分を作成しましょう。



ここでは、ハノイの塔で、円盤を1枚移動するメソッドを作成します。先ほどのチャプターでは、このようにハノイの塔を初期化するメソッドと、それを出力するメソッドを作成しました。今回は、この初期化したデータから、1枚の円盤を動かします。



ここでは、円盤の枚数を増やした時に、どのように移動させるのか、いろいろ試してみたいと思います。円盤が1枚や2枚なら簡単ですが、3枚以上の時、どんな手順になるのか、プログラムで記述してみましょう。



ここでは、ハノイの塔をプログラムで実現するため、一般的な解法の手順を考えます。 先ほどのチャプタでは、1枚・2枚・3枚の円盤を動かす手順を、手動でやってみました。ここから、再帰呼び出しで円盤を動かす手順を見つけ出しましょう。



ここでは、ハノイの塔で円盤を動かす手順を、再帰呼び出しで実装します。 大きな問題を解くために、より小さな問題の答えを使っていく 場合、再帰呼び出しで実装できます。



ここからは、応用編として、ハノイの塔プログラムを効率よく実行する方法を考えます。ここでは、移動する円盤の枚数が増えた時、移動回数がどうなるか調べましょう。そのために、円盤の移動回数を表示するカウント変数を追加します。



ここでは、追加したカウント変数を利用して、円盤の枚数が変化した時、その移動回数を調べます。



ここでは、円盤の枚数と回数を指定したとき、その時の円盤の状態を出力するプログラムを作ります。先ほど、追加したカウント変数を利用して、指定回数になった時に、その状態を表示させます。



ここでは、ハノイの塔のプログラムで、再帰処理の回数を減らして、円盤の枚数が多くなっても、状態を出力できるようにプログラムを改良します。



codegym

ページの先頭へ戻る