2024 年度「プログラミング言語論 Ⅱ」テスト

解答上、その他の注意事項

問題

以下の問に答えよ。

Ⅰ. (Haskell プログラミング問題)

IO モナドを利用して、main 関数を持つ、以下のような Haskell プログラムを作成せよ。

ヒント: getContents を、lines, unlines, words, unwords などと組み合せて使う。

  1. (必須) (12 点)
    提出ファイル名: Baz.hs

    入力文字列を単語ごと文字の順番を逆にして出力する。

    注意: 通常は “単語” には「,」や「.」 などの句読点は含まれないが、この問では、空白(タブ、改行を含む)以外の文字が連続するものと 解釈せよ。

    入力例

    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
    
  2. (必須) (12 点)
    提出ファイル名: Qux.hs

    入力文字列から、母音字 (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.
    

Ⅱ. (記述問題)

  1. (必須)語句: (13 × 2 点)
    提出ファイル名: toi0201a.txt, toi0201b.txt

    プログラミング言語(やその処理系)で用いられる次の 6 つの語句のう 2 つを選択し説明せよ。その際、実際に動作するソースコードなど、 具体的な例を挙げよ。ただし、講義プリントにのっている例 やネットで見つかる例そのままではなくオリジナルの例を考えること。

  2. (ボーナス問題)自由記述: (最高 20点)
    提出ファイル名: toi0202.txt

    むかしむかし、一つ前の人工知能ブームのときは Prolog という言語が流行し、 個人がコンピューターを所有できるようになったころは BASIC がはやり、 インターネット (WWW) が一般化したころは Java が人気を集めた。 現在は、機械学習やデータサイエンスといった分野ともに Python や R といった言語が注目を集めている。 今後、どのようなコンピューティングの要請が生まれ、どのようなプログラミング言語が必要とされるようになるか、大胆に予測してみよ。


Koji Kagawa