Workshop/StartHaskell2/exercise13
『モナドがいっぱい』 練習問題
Bさんの好きな男子を探せ!
AさんとBさんはいわゆる恋バナをしていました。 一通り盛り上がったところで、 「ねぇ、ぶっちゃけBは誰が好きなの?」 と尋ねたところ、 「うちのクラス唯一の身長180cmの子の出席番号をnとして、 Hogeマンションの2号棟の200+n号室に住んでいる男の子の お姉ちゃんの親友の元カレだよ」という、 極めて回りくどい答え方をしました。 要するにBは恥ずかしがり屋なので知られたくないのです。 ところがそれにもめげなかったAは クラスの男子を中心とした人間関係などを調べ上げ、 下記のような表を作って、Haskellで扱いやすくしました。 これを参考に、Aさんの探偵のごとき調査能力を讃えつつ、 Bさんの好きな男子を求める関数を書きなさい。 ただし、Aさん・Bさんのそれぞれの性別はご想像にお任せする。
-- クラスの男子の身長
[(161, "たかし")
,(174, "あつし")
,(200, "きよし")
,(156, "なおや")
,(180, "こうじ")
,(177, "かずお")
,(169, "ゆうや")
,(184, "かずき")
,(163, "みつを")
,(149, "じろう")]
-- 出席番号順に並べたクラスの男子
[("あつし", 1)
,("かずお", 3)
,("かずき", 4)
,("きよし", 7)
,("こうじ", 8)
,("じろう", 10)
,("たかし", 13)
,("なおや", 15)
,("みつを", 18)
,("ゆうや", 22)]
-- Hogeマンション2号棟2階に住んでいる男の子とその年齢。
-- n番目のリストにある名前が200+n号室に住んでいる男の子の名前をそのまま表す。
-- Nothingである場合はもちろん部屋に男の子が住んでいないということ。
-- 注:nは0ではなく1から数えてください。
[Nothing
,Just ("だいざぶろう", 12)
,Just ("こうじろう", 7)
,Just ("でんじろう", 11)
,Just ("しゅうべえ", 3)
,Nothing
,Just ("とうきちろう", 19)
,Just ("ちょうすけ", 9)
,Just ("じゅんいちろう", 70)
,Nothing]
-- Hogeマンション2号棟2階に住んでいる女の子とその年齢。
-- 男の子と同様。
[Just ("はなこ", 17)
,Nothing
,Just ("よしこ", 13)
,Just ("みつこ", 11)
,Just ("たかこ", 1)
,Nothing
,Just ("とうきちこ", 20)
,Just ("じゅんこ", 21)
,Just ("きくこ", 14)
,Just ("きょうこ", 15)]
-- Hogeマンション2号棟2階に住んでいる女の子とその親友
[("はなこ", "かずえ")
,("みつこ", "よしこ")
,("よしこ", "みつこ")
,("とうきちこ", "じゅんいちこ")
,("じゅんこ", "じょんこ")
,("きくこ", "さえ")
,("きょうこ", "ようこ")]
-- Aさんの調べた女の子とその元カレ
[("かずえ", "きくお")
,("みつこ", "じゅんいちろう")
,("まつこ", "じょん")
,("ようこ", "ようた")
,("よしこ", "みつを")
,("じょんこ", "きよし")
,("たかこ", "じゅんいちろう")
,("さえ", "たかし")]