aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2021-07-05 22:59:44 +0100
committerGitHub <noreply@github.com>2021-07-05 22:59:44 +0100
commitc8972701c0cc77c3b5c2cc9acd359c0bb291196e (patch)
treedd1a6ef49decedff43a5a8fccd66e275f190b71f
parentb9c4bec40e18af2ce385314043e5e9690bfbd248 (diff)
parentf01545eb40612c352df921c0808a33fba084a866 (diff)
downloadperlweeklychallenge-club-c8972701c0cc77c3b5c2cc9acd359c0bb291196e.tar.gz
perlweeklychallenge-club-c8972701c0cc77c3b5c2cc9acd359c0bb291196e.tar.bz2
perlweeklychallenge-club-c8972701c0cc77c3b5c2cc9acd359c0bb291196e.zip
Merge pull request #4432 from stuart-little/stuart-little_120_haskell
1st commit on 120_haskell
-rwxr-xr-xchallenge-120/stuart-little/haskell/ch-1.hs17
-rwxr-xr-xchallenge-120/stuart-little/haskell/ch-2.hs14
2 files changed, 31 insertions, 0 deletions
diff --git a/challenge-120/stuart-little/haskell/ch-1.hs b/challenge-120/stuart-little/haskell/ch-1.hs
new file mode 100755
index 0000000000..1188260d0a
--- /dev/null
+++ b/challenge-120/stuart-little/haskell/ch-1.hs
@@ -0,0 +1,17 @@
+#!/usr/bin/env runghc
+
+-- run <script> <number>
+
+import Data.Bits ((.&.))
+import Data.Digits (digits,unDigits)
+import Data.List.Split (chunksOf)
+import System.Environment (getArgs)
+
+toByte :: String -> [Int]
+toByte nr = padding ++ unPadded where
+ padding = replicate diff 0
+ diff = max 0 $ 8-(length unPadded)
+ unPadded = digits 2 $ ((read::String->Int) nr) .&. 255
+
+main :: IO ()
+main = getArgs >>= putStrLn.show.(unDigits 2).concat.(map reverse).(chunksOf 2).toByte.head
diff --git a/challenge-120/stuart-little/haskell/ch-2.hs b/challenge-120/stuart-little/haskell/ch-2.hs
new file mode 100755
index 0000000000..b381de9221
--- /dev/null
+++ b/challenge-120/stuart-little/haskell/ch-2.hs
@@ -0,0 +1,14 @@
+#!/usr/bin/env runghc
+
+-- run <script> <time>
+
+import Data.List.Split (splitOn)
+import System.Environment (getArgs)
+
+angl :: Double -> Double -> Double
+angl h m = min rawDiff $ 360-rawDiff where
+ rawDiff = abs ((fromIntegral (mod (round h) 12)*30) + m/2 - m * 6)
+
+main = do
+ [h,m] <- getArgs >>= return . map (read::String->Double) . splitOn ":" . head
+ putStrLn $ show $ angl h m