1/18(土)~19(日)に行われた大学入学共通テスト。新教育課程で「情報I」が必修になった今回、教科「情報I」でどんなプログラミング問題が出るのか、楽しみにしていました。
問題と解答は、新聞社などのサイトで見られます。
今回のプログラミング問題(問3)は、工芸品を作る担当を部員に割り当てる問題でした。IchigoJam BASICで挑戦してみます。
図4:次の工芸品の担当部員を表示する
Image may be NSFW.
Clik here to view.
10 LET [1],5,3,4 20 C=3 30 T=1 40 FOR B=2 TO C 50 IF [B]<[T] T=B 61 NEXT 70 ?"TANTOU=";T
- 問題文では行番号が「(01)、(02)…」と振られていますが、BASICプログラムでは「10、20…」と10刻みにしています。
- 61行はBASIC独自のNEXTを追加しています。
図5:工芸品の担当部員一覧を表示する
Image may be NSFW.
Clik here to view.
10 LET [11],4,1,3,1,3,4,2,4,3 20 H=9 30 LET [1],1,1,1 40 C=3 50 FOR K=1 TO H 60 T=1 70 FOR B=2 TO C 80 IF [B]<[T] T=B 91 NEXT 100 ?"K";K;"=";"BUIN";T;":";[T];"DAY-";[T]+[10+K]-1;"DAY" 110 [T]=[T]+[10+K] 111 NEXT
- IchigoJam BASICでは配列変数が1種類しかないので、10行の工芸品の製作日数の配列は[11]から割り当てています。
- 100行の日程表示での終了日は「+[10+K]-1」と-1しないといけないのですが、110行の空き日程をずらす所では「+[10+K]」にするのが引っかけ問題です。
まとめ
全体に、これまでの「情報基礎」のプログラミング問題よりは易しい内容です。
ただ、「部員・工芸品の各配列をスキャンする」「割り当てた日数だけ空き日程をずらす」など、それぞれの方法・意味を理解していないと解答できません。
(一度でもこうしたプログラムを組んだ経験があれば理解できるのですが)
問題としてはいい問題だと思います。