Problem 228
228 Minkowski Sums
Problem 228 - Project Euler
ミンコフスキー和を求める問題.
一般の図形のミンコフスキー和を求めるのは難しいが…
今回は,凸な図形でしかも,かなり,かたちが綺麗.
整数演算で大丈夫なので,計算誤差も心配ない.
import Data.Set (unions, size, fromAscList) import Data.Ratio ((%)) p228 :: (Integral a) => a -> a -> Int p228 m n = size.unions.map polygon $ [m..n] where polygon k = fromAscList [ l % k | l <- [0..k - 1]] main :: IO () main = print $ p228 1864 1909
もう少し効率化できそうな気配があるが,十分はやいので良しとする.