Advertisement
Vladi1442

Untitled

Aug 10th, 2022
438
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. main :: IO()
  2. main = do
  3.     print $ "Hello world"
  4.  
  5. factoriel :: Int -> Int
  6. factoriel 0 = 1
  7.  
  8. -- Recursion 1
  9.  
  10. reverseInteger :: Int -> Int
  11. reverseInteger n = (mod n 10)*10 + reverseInteger (div n 10)
  12.  
  13. isPalindrome :: Int -> Bool
  14. isPalindrome n = n == reverseInteger n
  15.  
  16. sumDigits :: Int -> Int
  17. sumDigits n = mod n 10 + sumDigits (div n 10)
  18.  
  19. powRec :: Int -> Int
  20. powRec _ 0 = 1
  21. powRec x n = x * powRec x (n-1)
  22.  
  23. isPrime :: Int -> Bool
  24. isPrime 1 = 1
  25. isPrime 2 = 2
  26. isPrime n = n >= 1 && helper 2
  27.     where
  28.         helper :: Int -> Bool
  29.         helper i
  30.             | (fromIntegral i) >= (sqrt $ fromIntegral n) = True
  31.             | mod n i == 0 = False
  32.             | otherwise = helper (i+1)
  33.  
  34. sumDivs :: Int -> Int
  35. sumDivs n = helper 1
  36.     where
  37.         helper :: Int -> Int -> Int
  38.         helper currentDiv
  39.             | currentDiv >= n = n
  40.             | mod n currentDiv == 0 = currentDiv + helper (currentDiv+1)
  41.             | otherwise = helper (currentDiv+1)
  42.  
  43. isPerfect :: Int -> Bool
  44. isPerfect n = n == sumDivs n
  45.  
  46. hasIncDigits :: Int -> Int
  47. hasIncDigits n = n < 10 || mod n 10 >= mod (div n 10) 10 && hasIncDigits (div n 10)
  48.  
  49. -- Recursion 2
  50.  
  51. numDig :: Int -> Int
  52. numDig n
  53.     | n < 0 = error "n was negative"
  54.     | n < 10 = 1
  55.     | otherwise = 1 + numDig (div n 10)
  56.    
  57. isNarcistic :: Int -> Bool
  58. isNarcistic n = n == helper n (numDig n)
  59.     where
  60.         helper :: Int -> Int -> Int
  61.         helper 0 nd = 0
  62.         helper leftover nd = (mod leftover 10)^nd + helper (div leftover 10) nd
  63.  
  64. hasDecDigits :: Int -> Int
  65. hasDecDigits 0 = 0
  66. hasDecDigits n = n < 10 || mod n 10 <= mod (div n 10) 10 && hasDecDigits (div n 10)
  67.  
  68. calculateSum :: Int -> Int -> Int
  69. calculateSum x n = helper 0 0
  70.     where
  71.         helper :: Int -> Int -> Int
  72.         helper sumOfDegree degree
  73.             | n <= degree = sumOfDegree + x^degree
  74.             | otherwise = helper (sumOfDegree + x^degree) (degree+1)
  75.  
  76. findMax :: Int -> Int
  77. findMax n = helper n 1
  78.     where
  79.         helper :: Int -> Int -> Int
  80.         helper 0 currMax = currMax
  81.         helper num currMax
  82.             | (mod num 10) <= currMax = helper (div num 10) (mod num 10)
  83.             | otherwise = helper (div num 10) currMax
  84.  
  85. factoriel 1 = 1
  86. factoriel n = n * factoriel (n-1)
  87.        
  88. mySin :: Int -> Int -> Int
  89. mySin 0 x = x
  90. mySin n x = ((-1)**n * x**(2*n + 1)) / (fromIntegral $ factoriel (2*n + 1)) + mySin (n-1) x
  91.  
  92. digitalRoot :: Int -> Int
  93. digitalRoot n
  94.     | n <= 9 = 1
  95.     | otherwise = (sumDigits n)
  96.    
  97.  
  98.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement