2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【共通テスト 2025】情報Ⅰ のコードをRPGで書くと

Last updated at Posted at 2025-01-21

共通テストで情報Ⅰが新たに

2025年の共通テストから新たに「情報Ⅰ」が追加されて、興味がてら会社のみんなでやってみました。
勝手に想像していたのは、暗記問題やプログラミングだったのですが、意外や暗記問題などは少なく、文章や資料の読解に重きをおいたり、難しくない数学よりな内容に思えました。
初めての試みですし、業務フロー的な問題は情報っぽくて私は好きでした。なかなか楽しかったです:grin:

その中で、問題3では少しプログラミング的な要素があり(ネストから見るにPythonベースでしょうか?)とても簡単なプログラムですが、ネタでRPGを使って記述しました。

RPGで書くと

共テでは Akibi = [5,3,カ] と記載されている初期化処理は、昔のRPGだと以下の様な記述となりましたが
※ カは問題の答えです

昔のRPG
Akibi(1) = 5 ;
Akibi(2) = 3 ;
Akibi(3) = カ ;

この様な記述は現在では %LIST 組み込み関数を使う事ができますのでそちらを使います。

問3-2(キ)Q25KT01
~~~中略~~~
//   D*-‚********************************************************************
//   D*-‚* 変数等宣言                                                    **
//   D*-‚********************************************************************
DCL-C  buinsu        CONST(3)                        ;       // 部員の合計人数
DCL-S  Akibi         PACKED(003 : 00  ) DIM(buinsu ) ;       // 部員の空き日(配列
DCL-S  tantou        PACKED(003 : 00  )              ;       // 担当の部員コード
DCL-S  buin          PACKED(003 : 00  )              ;       // 部員コード(ループ用
//   C*-‚********************************************************************
//   C*-‚* メインルーチン                                                **
//   C*-‚********************************************************************

//空き日の初期化
Akibi    = %LIST(5 :3 :4)                     ;

tantou   = 1                                  ;

//部員変数を2~部員の合計人数まで1ずつ増やしながら繰り返す
for buin = 2 to buinsu                        ;
  //もし現在部員の空き日が担当部員より前なら担当部員を現在部員とする
  if Akibi(buin) < Akibi(tantou)                ;
    tantou = buin                                 ;
  endif                                         ;
endfor                                        ;

//次の担当部員を表示する
DSPLY ('次の工芸品担当は部員' + %CHAR(tantou) + 'です。')       ;

*INLR       = *ON                             ;
RETURN                                        ;

問3-2(ケ~シ)Q25KT11
~~~中略~~~
//   D*-‚********************************************************************
//   D*-‚* 変数等宣言                                                    **
//   D*-‚********************************************************************
DCL-C  buinsu        CONST(3)                        ;       // 部員の合計人数
DCL-S  Akibi         PACKED(003 : 00  ) DIM(buinsu ) ;       // 部員の空き日(配列
DCL-S  tantou        PACKED(003 : 00  )              ;       // 担当の部員コード
DCL-S  buin          PACKED(003 : 00  )              ;       // 部員コード(ループ用
//
DCL-C  kougeihinsu   CONST(9)                        ;       // 工芸品の数
DCL-S  Nissu         PACKED(003 : 00  ) DIM(kougeihinsu) ;   // 工芸品の制作日数(配列
DCL-S  kougeihin     PACKED(003 : 00  )              ;       // 工芸品コード(ループ用
//   C*-‚********************************************************************
//   C*-‚* メインルーチン                                                **
//   C*-‚********************************************************************

//制作日数の初期化
Nissu    = %LIST(4 :1 :3 :1 :3 :4 :2 :4 :3 )  ;

//空き日の初期化
Akibi    = %LIST(1 :1 :1)                     ;

//工芸品を1~工芸品数まで1ずつ増やしながら繰り返す
for kougeihin = 1 to kougeihinsu              ;

  tantou = 1                                    ;

  //部員変数を2~部員の合計人数まで1ずつ増やしながら繰り返す
  for buin = 2 to buinsu                        ;
    //もし現在部員の空き日が担当部員より前なら担当部員を現在部員とする
    if Akibi(buin) < Akibi(tantou)                ;
      tantou = buin                                 ;
    endif                                         ;
  endfor                                        ;

  //工芸品の担当部員を表示する
  DSPLY ('工芸品' + %CHAR(kougeihin)
         + '…部員'   + %CHAR(tantou   ) + ':'
         + %CHAR(Akibi(tantou)) + '日目~'
         + %CHAR(Akibi(tantou) + Nissu(kougeihin) -1 ) + '日目'
         ) ;

  //担当の空き日を設定する
  Akibi(tantou) = Akibi(tantou) + Nissu(kougeihin)  ;

endfor                                        ;

*INLR       = *ON                             ;
RETURN                                        ;

結果

こんな感じで出力されます (^^)

スクリーンショット 2025-01-21 192511.png

学生さんが情報に興味を持ってくれると良いですね!:grin:

2
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?