diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2021-07-05 22:59:44 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-07-05 22:59:44 +0100 |
| commit | c8972701c0cc77c3b5c2cc9acd359c0bb291196e (patch) | |
| tree | dd1a6ef49decedff43a5a8fccd66e275f190b71f | |
| parent | b9c4bec40e18af2ce385314043e5e9690bfbd248 (diff) | |
| parent | f01545eb40612c352df921c0808a33fba084a866 (diff) | |
| download | perlweeklychallenge-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-x | challenge-120/stuart-little/haskell/ch-1.hs | 17 | ||||
| -rwxr-xr-x | challenge-120/stuart-little/haskell/ch-2.hs | 14 |
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 |
