407N/Atype Punkt = (Double,Double)
0N/Atype Kreis = (Punkt,Double)
0N/A-- Bestimmt den euklidischen Abstand zweier Punkte
0N/AabstandEuklid :: Punkt -> Punkt -> Double
0N/AabstandEuklid (x1,y1) (x2,y2) = sqrt (((x1-x2)^2)+((y1-y2)^2))
0N/A-- Pr�ft, ob sich ein Punkt im Kreis oder auf der Kreislinie befindet
0N/ApunktImKreis :: Punkt -> Kreis -> Bool
0N/ApunktImKreis p (m,r) = abstandEuklid p m <= r
0N/A-- Restmenge jener a's, die mit allen b's eine Beziehung r eingehen
0N/Arestmenge :: ((a,b) -> Bool) -> Set a -> Set b -> Set a
0N/Arestmenge r as bs = filterSet (\a -> allSet ((curry r) a) bs) as
0N/A-- Restmenge der Punkte, die in keinem der gegebenen Kreise liegen
154N/AfreiePunkte :: Set Punkt -> Set Kreis -> Set Punkt
0N/AfreiePunkte = restmenge (not . (uncurry punktImKreis))
0N/A-- Restmenge der Kreise, die keinen der gegebenen Punkte enthalten
0N/AleereKreise :: Set Kreis -> Set Punkt -> Set Kreis
154N/AleereKreise = restmenge (not . (uncurry (flip punktImKreis)))