2026年度「プログラミング言語1」のページ

発展問題

2026年7月6日出題

  1. 標準入力からテキストを入力し、それを元に三つのファイルredとgreenとblueを作るプログラムを書け。

    どんなに長い行にも対応できるプログラムが望ましい。難しければ、行の長さ(改行文字を除く文字数)が1024未満であると仮定しても良い。

    1. 行番号を 3 で割って 1 余る行をファイルredに、 2 余る行をファイルgreenに、割り切れるファイルをblueに書き込む。なお、行番号は 1 から始まるものとする。

    2. 行番号が 2n の形で書ける行をファイルredに、 2n⁢p の形で書ける行をファイルgreenに、その他の行をファイルをblueに書き込む。ただし、 n は非負整数、 p は 2 以外の素数とする。なお、行番号は 1 から始まるものとする。

      ヒント
      ある正整数 x が 2n であるか 2n⁢p であるかそれ以外であるかは、次のようにして判定できる。
      • x を 2 で割れるだけ割る。その結果を y をする。
        • y が 1 ならば、 x は 2n の形である。
        • y が素数ならば、 x は 2n⁢p の形である。
        • y が上記二項のいずれでもなければ、 x は 2n でも 2n⁢p でもない。
    3. #で始まる行をファイルredに、%で始まる行をファイルgreenに、その他の行をファイルblueに書き込む。

      ヒント
      いまいる行の先頭の文字が何であったかを覚えておくようにすれば良い。
    4. アルファベットで始まる行をファイルredに、数字で始まる行をファイルgreenに、その他の行をファイルblueに書き込む。

    5. [やや難]  #で始まりその次の文字がアルファベットである行をファイルredに、%で始まりその次の文字が数字である行をファイルgreenに、その他の行をファイルblueに書き込む。

  2. 二つのテキストファイルgoldとsilverがあるとする。以下を行うプログラムをそれぞれ書け。

    1. まず、ファイルgoldの中身を標準出力に出力し、その後、ファイルsilverの中身を標準出力に出力する。

    2. ファイルgoldの中身とファイルsilverの中身を行ごとに交互に標準出力に出力する。すなわち、ファイルgoldの1行目、ファイルsilverの1行目、ファイルgoldの2行目、ファイルsilverの2行目、ファイルgoldの3行目、ファイルsilverの3行目、……のように標準出力に出力する。どちらかのファイルが先に尽きたら、残りはそのまま出力するものとする。

  3. 標準入力からテキストを入力し、各行ごとに以下の処理を行って標準出力に出力するプログラムを書け。ただし、各行は以下の書式であると仮定して良い。

    • 1行は1023文字以下である。(改行文字は数えない)
    • アルファベット1文字と1個以上8個以下の整数が空白区切りでこの順に並んでいる。
    • それ以外の余計な文字は一切含まれない。
    1. 最初の文字が A のときはその行に最初に出現する整数を、a のときは最後に出現する整数を、M のときはその行の整数の最大値を、m のときは最小値を出力する。それ以外のときは * だけからなる行を出力する。

  4. (ここにあった問題は次回に移動しました)

奈良女子大学生活環境学部文化情報学科生活情報通信科学コース