ノート・プリント・参考書などは持ち込み可である。
携帯電話などの通信機能を持つものは持ち込み不可である。
ネットワークに接続して WWW を閲覧しても良いが、掲示板、チャット、 メールなどで生身の人間と通信することは禁じる(授業の Teams の会議は除く)。 また、人間と区別のつかないもの(対話型の AI など)と通信することも禁じる。
テストの配点は 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.
出力例
meroL muspi rolod tis ,tema rutetcesnoc gnicsipida ,tile des od domsuie ropmet tnudidicni tu erobal te erolod angam .auqila tU mine da minim ,mainev siuq durtson noitaticrexe ocmallu sirobal isin tu piuqila xe ae odommoc .tauqesnoc siuD etua eruri rolod ni tiredneherper ni etatpulov tilev esse mullic erolod ue taiguf allun .rutairap ruetpecxE tnis taceacco tatadipuc non ,tnediorp tnus ni apluc iuq aiciffo tnuresed tillom mina di tse .murobal
| (必須) | (12 点) |
入力文字列から、母音字 (AaEeIiOoUu) が 3 つ以上含まれている単語のみを抜き出して出力する。
注意: 通常は “単語” には「,」や「.」 などの句読点は含まれないが、この問では、空白(タブ、改行を含む)以外の文字が連続するものと 解釈せよ。
入力例
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.
出力例
consectetur adipiscing eiusmod incididunt labore dolore aliqua. veniam, exercitation ullamco laboris aliquip commodo consequat. aute irure reprehenderit voluptate dolore fugiat pariatur. Excepteur occaecat cupidatat proident, officia deserunt laborum.
Ⅱ. (記述問題)
| (必須)語句: | (13 × 2 点) |
プログラミング言語(やその処理系)で用いられる次の 6 つの語句のう 2 つを選択し説明せよ。その際、実際に動作するソースコードなど、 具体的な例を挙げよ。ただし、講義プリントにのっている例 やネットで見つかる例そのままではなくオリジナルの例を考えること。
高階関数 (higher-order function)
遅延評価 (lazy evaluation)
参照透明性 (referential transparency)
非決定性 (nondeterminism)
CPS (continuation passing style)
多相 (polymorphism)
| (ボーナス問題)自由記述: | (最高 20点) |
むかしむかし、一つ前の人工知能ブームのときは Prolog という言語が流行し、 個人がコンピューターを所有できるようになったころは BASIC がはやり、 インターネット (WWW) が一般化したころは Java が人気を集めた。 現在は、機械学習やデータサイエンスといった分野ともに Python や R といった言語が注目を集めている。 今後、どのようなコンピューティングの要請が生まれ、どのようなプログラミング言語が必要とされるようになるか、大胆に予測してみよ。