ノート・プリント・参考書などは持ち込み可である。
携帯電話などの通信機能を持つものは持ち込み不可である。
ネットワークに接続して WWW を閲覧しても良いが、掲示板、チャット、 メールなどで生身の人間と通信することは禁じる(授業の Teams の会議は除く)。 また、人間と区別のつかないもの(対話型の AI など)と通信することも禁じる。
テストの配点は 50 点である。 合格はレポート(締切 2/19)の得点 (50 点) を加点して、100 点満点中 60 点以上とする。
以下の問に答えよ。
Ⅰ. (Haskell プログラミング問題)
IO モナドを利用して、main 関数を持つ、以下のような Haskell プログラムを作成せよ。
ヒント: getContents
を、lines, unlines, words, unwords
などと組み合せて使う。
| (必須) | (12 点) |
入力文字列の行ごとに奇数番目の単語のみ出力するプログラム
注意: 通常は “単語” には「,」や「.」 などの句読点は含まれないが、この問では、空白(タブ、改行を含む)以外の文字が連続するものと 解釈せよ。
入力例
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
出力例
Lorem dolor amet, adipiscing sed eiusmod incididunt labore dolore aliqua. enim minim quis exercitation laboris ut aliquip ea consequat. aute dolor reprehenderit voluptate esse dolore fugiat pariatur. sint cupidatat proident, in culpa officia mollit id laborum.
| (必須) | (12 点) |
入力文字列中の、母音字 (aiueoAIUEO) から始まる単語のみを出力する。
注意: 通常は “単語” には「,」や「.」 などの句読点は含まれないが、この問では、空白(タブ、改行を含む)以外の文字が連続するものと 解釈せよ。
入力例
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
出力例
ipsum amet, adipiscing elit, eiusmod incididunt ut et aliqua. Ut enim ad exercitation ullamco ut aliquip ex ea aute irure in in esse eu Excepteur occaecat in officia anim id est
Ⅱ. (記述問題)
| (必須)語句: | (13 × 2 点) |
プログラミング言語(やその処理系)で用いられる次の 6 つの語句のう 2 つを選択し説明せよ。その際、実際に動作するソースコードなど、 具体的な例を挙げよ。ただし、講義プリントにのっている例 やネットで見つかる例そのままではなくオリジナルの例を考えること。
抽象構文 (abstract syntax)
動的束縛 (dynamic binding)
カプセル化 (encapsulation)
非決定性 (nondeterminism)
接続 (あるいは継続) (continuation)
多相 (polymorphism)
| (ボーナス問題)自由記述: | (最高 20点) |
AI(人工知能)技術の進化により、プログラミング(コーディング)作業の一部、あるいは大部分を AI に任せることが可能になった。 バイブコーディング (vibe coding) という、自然言語で「こんな感じ」「こんな雰囲気」と伝えるだけで、アプリを開発する手法も広まっている。 このように AI がソースコードの大部分を生成することが可能になった中で、その問題を最大限抑える、あるいは逆に長所を最大限伸ばすために、 どのようなプログラミング言語が必要とされるようになるか、大胆に予測してみよ。