Advertisement
Tvor0zhok

Лабораторная №1 Haskell

Feb 27th, 2021
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.11 KB | None | 0 0
  1. --Задача №1
  2.  
  3. --1-ый способ:
  4. max31 :: Int -> Int -> Int -> Int
  5. max31 x y z = max x (max y z)
  6.  
  7. --2-ой способ:
  8. max32 :: Int -> Int -> Int -> Int
  9. max32 =(max .) .max
  10.  
  11. --Задача №2
  12. min3 :: Int -> Int -> Int -> Int
  13. min3 x y z = min x (min y z)
  14.  
  15. --Задача №3
  16. sort2 :: Int -> Int -> (Int, Int)
  17. sort2 x y = (min x y, max x y)
  18.  
  19. --Задача №4
  20.  
  21. --1-ый способ:
  22. bothTrue1 :: Bool -> Bool -> Bool
  23. bothTrue1 True True = True
  24. bothTrue1 True False = False
  25. bothTrue1 False True = False
  26. bothTrue1 False False = False
  27.  
  28. --2-ой способ:
  29. bothTrue2 :: Bool -> Bool -> Bool
  30. bothTrue2 True x = x
  31. bothTrue2 _ _ = False
  32.  
  33. --Задача №5
  34. solve2 :: Double -> Double -> (Bool,Double)
  35. solve2 0 _ = (False, 0.0)
  36. solve2 a b = (True, -b/a)
  37.  
  38. --Задача №6
  39.  
  40. --1-ый способ:
  41. isParallel1 :: (Int, Int) -> (Int, Int) -> (Int, Int) -> (Int, Int) -> Bool
  42. isParallel1 (x1, y1) (x2, y2) (x3, y3) (x4, y4) = (y2 - y1) * (x4 - x3) == (x2 - x1) * (y4 - y3)
  43.  
  44. --2-ой способ:
  45. isParallel2 :: (Int, Int) -> (Int, Int) -> (Int, Int) -> (Int, Int) -> Bool
  46. isParallel2 (x1, y1) (x2, y2) (x3, y3) (x4, y4) = a*b == c*d
  47. where a = y2 - y1
  48. b = x4 - x3
  49. c = x2 - x1
  50. d = y4 - y3
  51.  
  52. --3-ий способ:
  53. isParallel3 :: (Int, Int) -> (Int, Int) -> (Int, Int) -> (Int, Int) -> Bool
  54. isParallel3 x y w z = (fst y - fst x) * (snd z - snd w) == (fst z - fst w) * (snd y - snd x)
  55.  
  56. --4-ый способ:
  57. isParallel4 :: (Int, Int) -> (Int, Int) -> (Int, Int) -> (Int, Int) -> Bool
  58. isParallel4 x y w z = a*b == c*d
  59. where a = fst y - fst x
  60. b = snd z - snd w
  61. c = fst z - fst w
  62. d = snd y - snd x
  63.  
  64. -- Задание №7
  65. isIncluded :: (Double, Double) -> Double -> (Double, Double) -> Double -> Bool
  66. isIncluded (x1, y1) r1 (x2, y2) r2 = d + r2 <= r1
  67. where dx = x2 - x1
  68. dy = y2 - y1
  69. d = sqrt( dx*dx + dy*dy )
  70.  
  71. {- Примеры выполнения:
  72. isIncluded (2, 2) 5 (4, 2) 3
  73. True
  74. isIncluded (2, 2) 4 (3, 4) 1
  75. True
  76. isIncluded (2, 2) 3 (3, 4) 1
  77. False -}
  78.  
  79. -- Задание №8
  80. isRectangular :: (Double, Double) -> (Double, Double) -> (Double, Double) -> Bool
  81. isRectangular (x1, y1) (x2, y2) (x3, y3) = d1 + d2 == d3 || d1 + d3 == d2 || d2 + d3 == d1
  82. where d1 = (x2 - x1)*(x2 - x1) + (y2 - y1)*(y2 - y1)
  83. d2 = (x3 - x2)*(x3 - x2) + (y3 - y2)*(y3 - y2)
  84. d3 = (x3 - x1)*(x3 - x1) + (y3 - y1)*(y3 - y1)
  85.  
  86. {- Примеры выполнения:
  87. isRectangular (0, 0) (0, 10) (4, 2)
  88. True
  89. isRectangular (0, 0) (4, 0) (0, 6)
  90. True
  91. isRectangular (1, 2) (3, 6) (4, 5)
  92. True -}
  93.  
  94. -- Задание №9
  95. isTriangle :: Double -> Double -> Double -> Bool
  96. isTriangle x y z = x + y + z > 2 * max x (max y z)
  97.  
  98. {- Примеры решения:
  99. isTriangle 8 6 8
  100. True
  101. isTriangle 4 10 6
  102. False
  103. isTriangle 5 1 2
  104. False -}
  105.  
  106. -- Задание №10
  107. isSorted :: Double -> Double -> Double -> Bool
  108. isSorted a b c = (a >= b && b >= c) || (a <= b && b <= c)
  109.  
  110. {- Примеры решения:
  111. isSorted 1 2 3
  112. True
  113. isSorted 2 6 4
  114. False
  115. isSorted 10 9 7
  116. True -}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement