09/06/03 00:53:48
>>64のsolveを差し替えで
solve :: [String]
solve = nub $ do
-- ちょうど一万円札・千円札・百円玉・十円玉があるわ。今からこのお金を・・・
let money = [10000, 1000, 100, 10]
-- 髪の中、胸のポケット、スカートのポケット、靴の中に・・・それぞれ一つずつ隠します
(position, content) <- mappings money [Hair, Chest, Skirt, Shoe]
-- 1) 髪の中かスカートのポケットのどちらか一万円札が入っている
let h1 = content Hair == 10000 || content Skirt == 10000
-- 2) 胸のポケットに入っているお金はスカートに入ってるお金の10倍
let h2 = content Chest == 10 * content Skirt
-- 3) 百円玉は千円札より上の位置にある
let h3 = position 100 > position 1000
-- 4) 靴の中のお金は髪の中のお金の100倍
let h4 = content Shoe == 100 * content Hair
-- そして、1)..4)のうちどれかが嘘。
guard $ length (filter not [h1, h2, h3, h4]) == 1
-- それでは、靴の中のお金は?
return $ show $ content Shoe