先日受けた応用情報技術者試験の「出典:令和元年度 秋期 応用情報技術者試験 午後 問8」の設問はアルゴリズムの学習に有用な設問だった。
そのままでも有用だが、設問を追加すれば、アルゴリズムを学習するうえでより有用に使えるのではないかと思い、書くことにした。
「出典:令和元年度 秋期 応用情報技術者試験 午後 問8」
信号機のシステム仕様は以下のとおりである。
主道路信号と歩行者信号は、
・主道路信号は"赤→青→黄→赤→右→黄"の繰り返しで状態が遷移する
・歩行者信号は"赤→青→青点滅"の繰り返しで状態が遷移する
・歩行者用押しボタンが押された場合、主道路信号が"青"の時間が短くなり、特定のタイミングで歩行者信号が"赤"から"青"になる
という仕様がある。
設問には明示されていない
・歩行者信号が"青"や"青点滅"の時は主道路信号が"赤"以外になってはいけない
という仕様も存在する。
設問1の(2)
状態遷移図と仕様を見ながら計算をさせる設問。
仕様を読み取り、歩行者信号が"青"になるまでの時間を単純な足し算で計算させる設問となっている。
設問2の(1)
アルゴリズムの理由を説明させる設問。
一部のアルゴリズムを変更した際に、
・歩行者信号が"青"や"青点滅"の時は主道路信号が"赤"以外になってはいけない
という、設問に直接記載されていない仕様に違反してしまうことに気づけるか、という設問になっている。
設問2の(2)
アルゴリズムの理由を選ぶ設問。
・ボタンが押された場合、主道路信号が"青"になる時間が短くなり、特定のタイミングで歩行者信号 が"赤"から"青"になる
という仕様がなぜ必要なのかを選択肢で答えさせる設問となっている。
アルゴリズムの設問を解かせる上で重要なことは、見落としがちなパターンや、複雑なパターンの時に、どのような処理になるのか正しく把握させることだと考える。
設問2の(1)はその点でいうと有用だ。
・歩行者信号が"青"や"青点滅"の時は主道路信号が"赤"以外になってはいけない
という、仕様だけを考えると見落としやすい間違いを答えさせる設問だからだ。
しかし、設問1の(2)は、複雑なパターンではなく、仕様に記載されている時間の足し算を行うだけで、解けてしまう。
よりアルゴリズムの学習に役立つ設問にするには、より複雑なパターンになる設問※を追加するのがよいのではないだろうか。
※例
「主道路信号が"青"の状態になった直後から35秒経過した場合、歩行者信号が最初に"青"になるのは〇秒後になる」など
このような設問を追加すれば、「歩行者信号のボタンを押したとき、主道路信号が"青"になる時間がどれだけ短くなるか」という「主道路信号の"青"の残り時間によって異なる処理」について考えさせることができる。
令和元年度 秋期 応用情報技術者試験 午後 問8」の設問2の(1)がアルゴリズムを学習するうえでとても有用と感じた。
令和元年度 秋期 応用情報技術者試験 午後 問8」の設問1の(2)に、より複雑なパターンになる設問を追加すればさらにアルゴリズムの学習に役立つと感じた。