[一覧に戻る]
下の図は n = 3 の場合の例である.
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
目標は,この開始状態から,次のような終了状態に蛙を動かすことである.
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
右向きの蛙は右に,左向きの蛙は左にしか動かせない.また,一度に1匹の蛙しか動かすことができない.動かすための操作は次の2つのいずれかである.
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
↓ (1) ↓
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
↓ (2) ↓
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
「蛙跳びパズル」の操作を模倣するプログラムを以下のように作成せよ.
まず,盤面は要素数 2n+1 の配列で表現する.空白のマスは0,右向きの蛙は1,左向きの蛙は2で表す. 盤面を表す配列は広域変数 \$board とする.
そして,次のメソッドを用いて \$board の内容を変更する.
irb> initialize_board 2 => [1, 1, 0, 2, 2] irb> move 1 => [1, 0, 1, 2, 2] irb> move 3 => [1, 2, 1, 0, 2] irb> move 4 => [1, 2, 1, 2, 0] irb> move 2 => [1, 2, 0, 2, 1] irb> move 0 => [0, 2, 1, 2, 1] irb> move 1 => [2, 0, 1, 2, 1] irb> move 3 => [2, 2, 1, 0, 1] irb> move 2 => [2, 2, 0, 1, 1] irb> move 4 => [2, 2, 0, 1, 1] irb> initialize_board 3 => [1, 1, 1, 0, 2, 2, 2]
「Submission successfully completed.」と表示されれば,提出が完了したことになる.% /ced-home/staff/enshu1p/checker_d5.rb ファイル名
[一覧に戻る]