[HOME] > [高II情報B] > [アルゴロジック ヒント]
アルゴロジック ヒント

"アルゴロジック"のメッセージについて

問題をクリアしたときのメッセージが,That's Great !であれば,一番無駄のないアルゴリズムが完成したということで,の評価がもらえます。

それに対して,クリアしたときのメッセージが,one more challenge !の場合は,アルゴリズムのどこかにまだ改良できる(=少ない手順で目的を達成できる)余地があるということです。評価はがもらえます。言い換えれば,あと一歩でをゲットできるということです。

すべての問題でゲットして,スーパープログラマーの仲間入りを目指しましょう。

Jr.編

アルゴロジックJr.は新たに設けられたカテゴリーで,入門編よりも簡単な問題が並んでいます。しかし,侮ることなかれ。ここで学んだ考え方が後で役立ちます。入門編をいきなりやる前に,焦らず解いてみましょう。

  1. 移動
    (1)まっすぐ移動
    (2)横に移動
    (3)横とまっすぐ
    (4)四角
    [Simple is BEST.]
  2. 組み合わせ
    (1)ななめ移動
    (2)左右にななめ
    (3)横とななめ
    (4)ギザギザ
  3. 方向転換
    (1)逆さのコップ
    (2)右に回転
    (3)?
    (4)城門
  4. ループを使う
    (1)縦の旗 (Ver.1.5で「ななめの旗」から変更されました)
    (2)縦2列の旗
    (3)縦3列の旗
    (4)四角の旗
    [旗取り問題は,必ず旗のあるマスで一度止まる必要があります。]
  5. 応用問題
    (1)小判
    [騙されてはいけません。"マスの個数"が進む距離です。]
    (2)四つの円
    [入門編以降で頻繁に登場する"繰り返し"をうまく使います。]

入門編

次の7つの問題があります。
「入門編」の問題は,この先の問題を解決するために,是非とも知っておかなければならない必須問題です。(これを全部クリアしないと「初級編」に進めません。)
これらの問題を通して,コマンドブロックの意味と,それを組み合わせるとどのようにロボットを動かせるのかをつかんでおきましょう。

  1. 旗を取れ
  2. 方向転換
    アルゴロジックの世界では,[後退]の概念がありません。
  3. ナナメに進む
    「コマンドブロックを2枚横に並べる」という「並列接続技」の練習です。
  4. ループ
    「繰り返し」処理の基本問題です。
  5. 三本の旗
    一瞬,「回転」コマンドブロックがない!って焦りますよね。
  6. 簡単なトレース
    マスに描かれているラインどおりにロボットを動かします。
  7. トレース(八角形)
    見た目は「正八角形」ではないのですが,「マス」を基準に考えれば「正八角形」です。

▲このページの最初に戻る

初級編

初級編には次の14個の問題があります。[2011.11.01追記]

初級編には次の13個の問題があります。[2011.10.02追記]

初級編には次の12個の問題があります。[2011.07.31追記]

初級編には次の11個の問題があります。[2011.07.03追記]

  1. 十字
  2. 廊下の奥
  3. 十字の池
  4. 回廊と階段
  5. 八つの頂点
  6. かざぐるま
  7. 四角いメガネ
  8. 風車
  9. 組木
  10. ベース
  11. ジグザグ迷路
  12. 左右に並ぶ部屋

1.十字

「十字」だから,「4回同じ処理を繰り返せばよい」ということに気付くのは簡単です。

しかし,最初に[前進]するのがよいとは限りません。


2.廊下の奥

ロボットにすべての旗を「最短距離」で取りに行かせる必要はありません。

ロボットを同じ動き方にして,それを「繰り返す」ことですべての旗を取ることが大切です。

「斜め」の動き方は,[移動コマンドブロック]を2枚横に並べて配置(=並列接続)します。


3.田

「同じ動き」を「繰り返す」ことが大事です。一度旗を取ってしまったところを,何度もロボットを通らせるのは手順が増えてしまうので×です。

「繰り返し」で旗を取り残してしまうときは,思い切ってそれだけを「特別な動き」にする考え方も大切です。

旗の上をロボットが通過しただけでは,「旗を取った」ことになりません。


4.十字の池

左右の動きは,ロボットが正面に向いている方向に対して[左]か[右]です。

「同じ動き」を「繰り返す」ためには,一手順の「動き」が終わったロボットの最後の向きに注意が必要です。


5.回廊と階段

ぱっと見て2つの動きに分けられることが掴めたらしめたもの。

ロボットに無駄な動きをさせないことを心がけてください。


6.八つの頂点

入門編初の「トレース問題」です。
8回繰り返せば描けそうですが,そのためには移動距離を同じかどうか?をマスの数で数えてみてください。


7.梅

典型的な繰り返し処理の問題です。これから先に何度も登場する「八角形問題」の基本となる問題です。


8.かざぐるま

描き方は何通りか考えられますが,◎をゲットするためには工夫が必要です。
1回目の繰り返し処理終了時に,2回目の処理をスムーズに始めるには,最後のロボットの向きをどうするか?がポイントです。


9.四角いメガネ

合計8回の繰り返し処理で描けることが,すぐにわかると思います。しかし,この問題も◎をゲットするためには工夫が必要です。
1回の「移動と回転」をその後の処理にも使える工夫が必要です。


10.風車

最初にどのように動かすかによって,タイルの総数が異なります。これも「8.かざぐるま」と同様,最後のロボットの向きがポイントです。


11.組木

この問題も最初の動きが肝心。タイルの総数を減らすためには,無駄な動きをさせない必要があります。


12.ベース

旗の置かれている位置を縦/横/斜めと探ってみましょう。パターンに気付けば,8回ループで完成ですね。
2011.08.08訂正

隅の1ブロックをどう攻めるかを考えましょう。あとは4回ループで完成です。


13.ジグザグ迷路

ロボットの最初の向きがうまくいかない原因です。正面を向いているロボットは,前/左/右はコマンドタイル1つで自在に動けます。


14.左右に並ぶ部屋

ロボットの動きを細かく分けようとせず,大胆に動かしましょう。


▲このページの最初に戻る

中級編

中級編には次の14個の問題があります。[2011.11.01追記]

この辺りから少しずつ難しくなります。

中級編には次の13個の問題があります。[2011.10.02追記]

中級編には次の12個の問題があります。[2011.07.31追記]

中級編には次の11個の問題があります。[2011.07.03追記]

  1. 十字と旗八つ
  2. スコープ
  3. 旗車
  4. つむじ風
  5. 四つ角の旗
  6. うずまき
  7. トゲトゲ
  8. 四葉
  9. マジックハンド
  10. ペンペン草

1.囲

◎をゲットするためには,タイルの並べ方に工夫が必要となります。うーん,このタイルの並べ方は「Jr.編」や「入門編」に紹介されていないので,気づくのが難しいのではないでしょうか。
気分を盛り上げていきましょう!↑↑[2011.07.10追記]

「初級編」の「3.田」と同じく,一度旗を取ってしまったところを,何度もロボットを通らせるのは×です。 しかし「繰り返し」を考えると,同じ道を通らざるを得ないことも出てきます。
ロボットにどれだけ「無駄のない動き」を「繰り返させるか」がポイントです。


2.十字と旗八つ

「前進」してから[左]または[右]に動くよりも,「前進」と[左]または[右]のコマンドブロックを横に並べて(並列接続して),「斜め」に進むほうが手順を1回減らすことができます。

この問題も「同じ動き」を「4回繰り返す」ことに気付くのは簡単です。一手順の「動き」が終わったロボットの向きに注意するのは,「初級編」の「4.十字の池」と同じです。


3.スコープ

この辺に来ると,そろそろ「同じ動きを繰り返す」ためのコツも飲み込めてきたのではないでしょうか。

問題は,ロボットに「どの程度同じ道を通らせるのか」ということです。

ここでも「斜め」をうまく活用しましょう。


4.旗車

中級編で初めての「トレース問題」です。マスに描かれている図形が,ロボットの動いた軌跡になるようにコマンドブロックを配置しなければなりません。

ポイントは「斜め」を向いたロボットが前進するときのことです。「距離」を考えると失敗します。あくまでもロボットは「マス」の個数分動きます。これは「入門編」の「7.トレース(八角形)」でやりました。

「初級編 10.風車」と似て非なるものです。
問題の図に示された旗の大きさが違うように思えますが,マスの個数で考えてみると...。


5.つむじ風

続いての「トレース問題」です。

横移動ブロックが足りないと思ったら,その時点でハマっています

中心部分に注目してください。必ず45度の回転が必要だとわかります。 これも「中級編 4.旗車」同様,マスの個数にだまされそうになります。


6.花

移動距離に注意です。等しい移動距離は長さではありません。あくまでもマスの個数です。


7.四つ角の旗

素直に旗のある位置までロボットを動かしてみましょう。
しかしそれだけでは◎がゲットできないのが「中級編」の難しさ。
初級編「8.かざぐるま」で学んだ,次の移動を考えてロボットを動かす必要があります。


8.うずまき

よく見てみると,卍のような図柄に見えます。この図柄をくるくる回して眺めて,大局をとらえてみてください。
ロボットの動きを細かく分断するのは,うまいやり方といえません。


9.トゲトゲ

初級編「9.四角いメガネ」と同様です。1回分の「移動と回転」をその後にも使える工夫が必要です。


10.T

異なるサイズの2つのTがありますが,マスの個数で考えてみると,アルゴロジックの世界では同じ大きさです。(「中級編 4.旗車」と同じです。)
「初級編 10.風車」と同じように,一手順の最後のロボットの向きを意識してみてましょう。
回転は,2回で済むはずです。


11.卍

基本的な考え方は「中級編 10.T」と同じです。これもロボットの回転回数を減らすために,どういう動きをさせるのが良いのかに注目です。
意外とシンプルに考えるほうがよいのかも。


12.四葉

ここまでの問題のように,回転回数を減らそうとして単純にコマンドブロックを追加していくと,左右移動のブロックが足りなくなります。

11ブロック全部を埋めてしまうと,"That's great!"がもらえないのが悔しいですね。


13.マジックハンド

この形を見れば,すぐに階段状にロボットを進めて右下で反転させたくなりますが,それでは◎の"That's great!"にはなりません。
どのような動作パターンの繰り返しでこのトレースを表せるかを考えているうちに,解決するでしょう。


14.ペンペン草

ここまでくれば,8方向回転系の問題も見慣れたものとなっているはず。
上手に斜め移動を利用しようとすると,かえって失敗します。
シンプルに正攻法で行くのが良いと思います。


▲このページの最初に戻る

上級編

上級編には次の14個の問題があります。[2011.11.01追記]

上級編には次の13個の問題があります。[2011.10.02追記]

上級編には次の12個の問題があります。[2011.07.31追記]

上級編には次の11個の問題があります。[2011.07.03追記]

このレベルになると,1回ではなかなかロボットが思ったように動いてくれません。
諦めずに何度か挑戦してみると,「どういう動きを繰り返せばよいのか」が見えてきます。
何度も試行錯誤してみてください。

  1. 四隅の回廊
  2. ピーナッツ
  3. 線香花火
  4. 複雑な紋様
  5. 輪の輪
  6. キャンディ
  7. 太陽
  8. 二つの三日月
  9. 発電所風
  10. 回転のこぎり
  11. メガネ
  12. 四角い花びら
  13. 手裏剣
  14. 全部

1.四隅の回廊

[Ver.1.2]
「初級編」の「3.田」でやったように,繰り返し処理に向かないところは,別の動きをさせてみるとよいのでは?
一歩踏み出す勇気が大切です。

[Ver.1.0]
同じ動きを「繰り返す」ことを考えるときに,1回の「同じ動き」を「同じ動き」の「繰り返し」で表せないかを考えてみましょう。

アルゴリズムを考えるときは「手順を減らす」ことが大切です。


2.ピーナッツ

旗のある位置を観察してみると,右斜め上と左斜め下(第1,第3象限)と左斜め上と右斜め下(第2,第4象限)が同じことがわかります。

「手順を減らす」ためには,あえてロボットを無駄に動かすことも大切です。「一手順の中では無駄に思えても,全体の処理から考えるとそうではない」ところが,アルゴリズムを考えるときの難しさではないでしょうか。


3.線香花火

簡単そうに見えて,なかなかをゲットしにくい問題です。

「上級編」の「1.四隅の回廊」で扱ったように,どこまで「同じ動き」の「繰り返し」でロボットの動きを表現できるかがポイントです。


4.複雑な紋様

この図からは,とても複雑なトレースを解決しなければならないように思えます。コマンドブロックを並べるスペースが絶対足りないのではないか?と,さじを投げてしまいそうです。

しかし,試行錯誤していくうちに,先ほどから何度も登場している1回の「同じ動き」を,「同じ動き」の「繰り返し」で表現できそうだというところに気付けば,しめたものです。
以外にシンプルなのでは?と思えた瞬間が,ゲットの瞬間です。


5.輪の輪

八角形を二分割して描くことを考えて,内側と外側を意識しすぎると◎ゲットには至りません。

Ver.1.2になって登場した,初級編「5.回廊と階段」の「3回繰り返し」を上手に使って,どれだけ無駄な動きを少なくするかがポイントです。


6.キャンディ

トレースする図形は,今まで何度も登場している「八角形」が基本です。この問題も中級編で散々登場した,次の動きを意識したコマンドの並べ方を考えてみましょう。


7.太陽

タイトルのイメージに引っ張られてしまい,旗の取り方の軌跡は
 幼稚園児の描く「ギラギラした太陽」だ!
と想像してしまったため,なかなか完成しませんでした。
上級編「1.四隅の回廊」で学んだことを活かしてみましょう。


8.二つの三日月

六角形の半分ではなく,八角形の半分の動きを狙って組み立てましょう。
左右に動くため,ループは2回必要です。


9.発電所風

これも何度も登場している,次の動きを意識したコマンドの並べ方がポイント。
今までの経験からタイルを並べると,左右の移動タイルの枚数が足りないことに気付くはず。ここは発想の転換です。
(結果的に,左か右の移動タイルは余ります。


10.回転のこぎり

形の上では「中級編 9.トゲトゲ」に通じる問題です。しかし,当然「トゲトゲ」よりも複雑です。
当然無駄な動きをしないためには,一歩目が肝心。


11.メガネ

メガネのレンズにあたる部分は正八角形ではないので,それをどう描くかがポイント。
これは中級編「8.うずまき」とは逆で,ロボットの動きをいかに分断するかです。タイルを並べられる11個のスペースは,1個も無駄にできません。
もちろん,ここまでくれば次の動きを意識したコマンドの並べ方のテクニックは必須でしょう。


12.四角い花びら

中級編「12.四葉」ができれば,あっさり解決すると思います。素直にコマンドを並べましょう。
中級編「12.四葉」のほうが難しいかも。


13.手裏剣

トレース図形をよく見てみると,アルゴロジックお得意の八角形の一部が組み合わせて構成されているのがわかります。
八角形といえば,「8.二つの三日月」「10.回転のこぎり」で養った繰り返しパターンをうまく使いましょう。


14.全部

初見でびっくりします。(笑)
どうやって旗を全部取ろうか?と考えている間が一番楽しいはずです。
今までの問題でこれの基礎となる問題がありましたよね?
(多分)最後の一問ではないかと思います。じっくり楽しんでください。


▲このページの最初に戻る


Copyright - © Yamamoto Yasushi 2011 All Rights Reserved.