module Exercise_7 where {- Library DO NOT CHANGE -} toBinary :: Integer -> String toBinary 0 = "0" toBinary x = reverse (aux x) where aux 0 = [] aux x = (if x `mod` 2 == 0 then '0' else '1') : aux (x `div` 2) instance Show IntegerBitSet where show (IntegerBitSet s) = "IntegerBitSet " ++ toBinary s {- End Library -} {-H7.1-} {- Library DO NOT CHANGE -} class BitSet a where empty :: a getBit :: Int -> a -> Bool setBit :: Int -> a -> a unsetBit :: Int -> a -> a data BoolListBitSet = BoolListBitSet [Bool] deriving Show data IntegerBitSet = IntegerBitSet Integer {- End Library -} instance BitSet BoolListBitSet where empty = undefined getBit = undefined setBit = undefined unsetBit = undefined instance BitSet IntegerBitSet where empty = undefined getBit = undefined setBit = undefined unsetBit = undefined fromList :: BitSet a => [Int] -> a fromList = undefined {-H7.2-} type Point3 = (Integer, Integer, Integer) data Shape3 = Undefined deriving (Show, Eq) makeCuboid :: Point3 -> Point3 -> Shape3 makeCuboid = undefined makeSphere :: Point3 -> Integer -> Shape3 makeSphere = undefined boundingBox :: Shape3 -> (Point3, Point3) boundingBox = undefined overlapping :: Shape3 -> Shape3 -> Bool overlapping = undefined {-H7.3-} data Line a = Line (a,a) a deriving Show longestLines :: (Num a, Ord a) => [Line a] -> [Line a] longestLines = undefined {-H7.4-} type Point = (Integer, Integer) {-WETT-} nearestNeighbors :: [Point] -> [(Point, Point)] nearestNeighbors = undefined {-TTEW-}