CadetAnswer2017

カデット問題解説(中学1年生・2年生)

  • A

    2017-繰り返しのある音楽-解説

    • 考案国:スウェーデン
    • 正解
      • 「B A B A B B A A A C A C A」
    • 説明
      • 繰り返しの部分を分けて書くと、次のように書くことができます。
        B + A B A B + B + A A + A C A C + A
        他の選択肢はどこかが違っています。
      • 実際のコンピュータでは
        この問題の繰り返し記号はプログラムのループを表しています。ループは繰り返しや反復とも呼ばれます。多くのプログラミング言語には命令の並びを一定回数だけ繰り返す構文があります。また、一定回数ではなく、条件を満たす間、または条件を満たすまで繰り返しを行う形のループも使われています。

    2017-カード暗号-解説

    • 考案国:チェコ
    • 正解
      • 「11010」
    • 説明
      • この絵は「11010」が「16 + 8 + 2 」で 26個のハートを表すことを示しています。
        画像の説明
        これはただひとつの正解です。右の4枚のカードではすべてを表にしても「8+4+2+1」で15しか作れないため、いちばん左のカードを使う必要があります。いちばん左を表にすると、26のうち16を表しましたので、「26-16」の10を残る4枚で作る必要があります。右の3枚を表にしても「4+2+1」で7しか作れませんので、8を表にする必要があります。このようにして、「10-8」の2を残りの3枚で作っていきます。
      • 実際のコンピュータでは
        カードに描かれたハートの数は、右端は1個で、左の数は右の数の2倍になっています。そこで、右から左に見ていくと、1,2,4,8,16という並びになります。これらの5枚を使うと、0から31のすべての数を表すことができます。
        このハートのような数の並びは2進表現と呼ばれ、それぞれの桁の表と裏(1と0)でコンピュータの情報を表現します。文字、画像、動画、音楽などもこのような数で表現されています。

    2017-壁を壊せ-解説

    • 考案国:スロバキア
    • 正解
      • 画像の説明
    • 説明
      • 左下の角(かど)から右上の角まで移動できるようにするのに壊す壁(かべ)の最小値は 3 です。
        下の図で赤で囲まれた3つの壁を壊せば、左下のかどから右上の角まで移動できるようになります。
        緑の線は、左下の角から右上の角まで移動する道順です。
        画像の説明
        この問題を必ず解ける手順の一つは、左下の角から順に「その場所に左下の角から到達するのに壊さないとならない壁の最小値」を記録していくことです。
        まず、左下の角からスタートして、一番左の列の下から順に移動していきます。
        左下の角はスタート地点なので、'0' を記録します。
        続いて、同じ列で隣の場所に移動していきます。
        その際に壁を壊すと記録する値を1増やします。
        壁を壊さない場合は同じ値を記録します。
        画像の説明
        次に、右隣の列に移動します。また、一番下の場所から始めます。
        ただ、今度は、下の場所から移動するだけでなく左の場所から移動できるので、下から移動してくる場合と左から移動してくる場合の小さい方の値を記録します。
        壁なら1を加えた値を、そうでなければ同じ値を記録するのは同じです。
        画像の説明
        注意しないとならないのは、反対の方向(上から下や、右から左)から来た方が小さな値を記録できる場合があることです。
        値を記録したときに、下の場所や左の場所の値をみて、今いる場所から行った方が値が小さくできるときは、書き換えないとなりません。
        書き換えた場所の下や左にも影響が及ぶ場合は、書き換えを繰り返さないとなりません。
        次の図で、書き換えられた場所を黄色で強調しています。
        画像の説明
        すべての場所に値が記録されると
        最終的に、どの場所にも、左下の角からその場所まで移動できるようにするのに壊さないとならない壁の最小値が記録されています。
        (右上の角の左隣の場所は、最終的には 4 に書き換えられます。)
        右上の角に記録された値は 3 なので、
        左下の角から右上の角まで移動できるようにするのに壊さないとならない壁の最小値は 3 となります。
      • 実際のコンピュータでは
        迷路の脱出経路探索は、情報科学でよく扱われる問題の一つです。
        この問題は、壊さないとならない壁をなるべく小さくするという制約が加えられています。
        この問題は、左下のかどからその場所までに移動できるようにするのに壊さないとならない壁の最小値を記録しながら、適した方法で探査していくことで解くことができます。
        例えば、まず壁を壊さないで行ける場所すべてに 0 を記録し、次に壁を1つ壊せば行ける場所すべてに 1 を記録し、さらに壁を2つ壊せば行ける場所すべてに 2 を記録するということを繰返します。

    2017-壊れた散水システム-解説

    • 考案国:オーストリア
    • 正解
      • 「2と3」
    • 説明
      • 正解は「2と3」です。散水システムには壊れた部分が1つだけであることがわかっていますので、どちらも壊れた部品を見つけるための正しい方法です。
        1)部品の重要度は、故障を見つけるためのヒントになりません。
        4)この方法を使っても、1個ずつ部品を交換するよりも調べる回数が少なくなることはありません。
      • 実際のコンピュータでは
        複雑なシステムはプログラムの不具合(バグ)を避けられないため、デバッグは最も重要な作業の1つになります。プログラムの中から1つの誤りを見つけるのも難しい作業ですが、2つのエラーを見つけることはさらに難しい作業になります。そこで、プログラマは重要な変更のたびにコードを実行し、誤りがないことを確認しながらプログラムを開発しています。このようなやり方で、プログラマは一度にたくさんの誤りを見つけなくて済むように開発を進めています。
  • B

    2017-泳いでどこに行く?-解説

    • 考案国:スイス
    • 正解
      • 「(a)と(d)」
    • 説明
      • マリアは3枚のカードを引きます。1枚目はダイヤだったので家の左に動きました(図の赤い枠の場所)。この状態で2枚目を引くと、図の赤い丸の場所に動けます。さらに3枚目を引くと、図の青い丸の場所に動けます。
        画像の説明
      • 実際のコンピュータでは
        この問題では、ランダムな動きを扱っています。空気中の酸素や液体の拡散など、粒子の数が非常に多い動きのシミュレーションに使われます。

    2017-かぎかっこ-解説

    • 考案国:オーストリア
    • 正解
      • 画像の説明
    • 説明
      • 正解のブレスレットは、最初にペアを置き、その間にペアを置いて、さらにその間にペアを置いています。他のブレスレットは、規則に従っていません。
      • 実際のコンピュータでは
        ブレスレットの規則は、プログラムの文法を表しています。プログラムの中の"("と")"や、"{"と"}"は、ブレスレットと同様の規則でペアになって使われる必要があります。このような状態を「構文的に正しい」と言い、そうでない場合は構文エラーになってしまいます。

    2017-ビーバートーナメント-解説

    • 考案国:クロアチア
    • 正解

      画像の説明

    • 説明
      • いちばん下の最初の対戦で、勝った人の番号は混ざってしまったカードの中にあるはずです。
        負けた人は、トーナメントの上位には現れません。なので、ゲームの結果を戻すには、最初のゲームの2人ずつのうち、どちらが残りのカードの中にあるかを調べればよいでしょう。
      • 実際のコンピュータでは
        注意深い観察と必要な条件を守ることは、適切な論理的な問題解決と異なるアルゴリズムの解法を構築するための基礎となります。条件が成り立つことを確認すること(ブランチ構造)に加えて、反復(繰り返し構造またはループ)は、一般的にコンピュータによる解法を設計する時に使われています。

    2017-さかな-解説

    • 考案国:日本
    • 正解
      • 画像の説明
    • 説明
      • この問題を解くためのよいやり方のひとつは、変更をわかりやすく表すために、簡単な表記法を作ることがあります。魚の代わりに矢印を使うと、わかりやすく簡単に表現することができます。
        画像の説明
        そして、すべての操作の中で、2番目の操作が左下と右上のさかなに影響与えることに気づくと、この問題はすぐに解決できるでしょう。 
      • 実際のコンピュータでは
        コンピュータのプログラムは命令の並びで作られています。
        手で命令の動作を確認することは、プログラミングを学ぶ最初の1歩になります。
  • C

    2017-おばあさんのジャム-解説

    • 考案国:ロシア
    • 正解
      • 次の2種類の正解パターンがあります。
        画像の説明
         
        画像の説明
      • 3人の役割は入れ替わっても良いので、上の正解パターンには3つの正解が、下の正解パターンには6つの正解が、つまり、合計で9つの正解があります。
    • 説明
      • 1個の瓶詰を作るには、3分と2分と1分で合計6分かかります。使える時間は3人で10分間の合計30分ですので、5個より多くは作れません。
        そして、瓶を洗う前にジャムを入れることはできませんし、ジャムを入れる前に蓋をすることはできません。
    • 全員が次の方針で作業をすることを考えましょう。
      • 洗った空(から)の瓶がないときは、瓶を洗う
      • 洗った空の瓶があるときは、ジャムを入れる
      • ジャムの入った蓋の開いた瓶があるときは、蓋をする
    • この方針で作業すると、上の正解を作れます。
    • 下の正解は、瓶を2個洗った2人うち一人が、瓶にジャムを入れる作業の前に蓋をした場合です。
      瓶を2個洗い終わった時点では、ジャムが入った瓶は1つしかないので、瓶にジャムをいれる作業の前に蓋をできるのは1人だけです。
    • 3人がうまく協調しないと、3人で10分間で5個の瓶詰を作れません。 
      • たとえば3人が独立して仕事をすると、次の図のように10分間で3個しか作れません。
        画像の説明
         
        2人が担当する仕事を2種類ずつに減らしてしまうと、やはりうまく行きません。次の図のように、一番下の役割の人が2番目と3番目の蓋をする作業をしようとすると、まだジャムが入っていないので作業できず、10分間で3個しか作れません。
        画像の説明
    • 実際のコンピュータでは
      この問題は、作業計画問題と作業の並列性を扱っています。

    2017-盾と矛-解説

    • 考案国:日本
    • 正解
      • 画像の説明
    • 説明
      • 実際のコンピュータでは
        この問題は一見簡単そうに見えますが、実際にはとても複雑なパズルです。数枚の絵であっても、並べ方の組み合わせがあっという間に増えてしまいます。たとえば6枚の絵に1枚を加えて7枚にすると、6枚のときより6倍も組み合わせが増えてしまいます。式で書くとn枚のときは「(n-1)!」になり、7枚のときは「1×2×3×4×5×6」で720通りになってしまいます。(そして、ほとんどの組み合わせは不正解です)
        バックトラックというアルゴリズムを使うとすべての組み合わせを調べることができますが、調べるための作業量が膨大になってしまいます。そこで、組み合わせを減らすように論理的に考えます。たとえば、剣を下に向けているビーバーは上の段にいるはずですし、盾の上にいるビーバーは1人だけです。

    2017-お掃除ロボット-解説

    • 考案国:セルビア
    • 正解
      • 「4(8(c)U)8(C)4(D)」
    • 説明
      • 同じ階の8つのすべての部屋を掃除し、次の階へ行くためには「8(C) U 」と命令します。また、これらすべてを4回繰り返す必要があります。ロボットは5階にあるので「4(8(C) U)」と命令します。最後の「U」が屋根に行くように指示するので、お掃除ロボットに5回繰り返すことを命令することはできません。5階では8つの部屋を掃除する必要があるので、「8(C)」と命令します。すべての部屋を掃除した後、ロボットを1階に戻したいので「4(D)」と命令します。
      • 実際のコンピュータでは
        すべてのプログラミング言語は、ある種のループ構造が必要です。”for”や"while"は典型的なループ構造です。この想像上の小さなプログラミング言語には、単純なループ構造をもっています。forループのように複数回(繰り返し)実行することもできます。

    2017-迷路脱出-解説

    • 考案国:スイス
    • 正解
      • 画像の説明
    • 説明
      • 次の動きを2回繰り返すと出口に行くことができます。
        画像の説明 画像の説明
      • 実際のコンピュータでは
        プログラムは一連の命令で構成され、ときには一連の命令を繰り返す必要があります。これを簡単に可能にするために、プログラミング言語には「ループ」と呼ばれる特別な命令が提供されます。ループに入れられた命令は、開発者が決めた回数だけ繰り返すことが出来ます。

カデット問題に戻る

powered by Quick Homepage Maker 5.0
based on PukiWiki 1.4.7 License is GPL. QHM

最新の更新 RSS  Valid XHTML 1.0 Transitional