Skip to content

Commit 5c01a57

Browse files
committed
Solve 'Delta Bits' kata
1 parent 6bf3b15 commit 5c01a57

File tree

3 files changed

+27
-2
lines changed

3 files changed

+27
-2
lines changed

src/DeltaBits.hs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
module DeltaBits (convertBits) where
2+
3+
-- https://www.codewars.com/kata/538948d4daea7dc4d200023f/train/haskell
4+
5+
import Data.Bits (Bits (popCount, xor))
6+
7+
convertBits :: Int -> Int -> Int
8+
convertBits = (popCount .) . xor

src/SaveChristmas.hs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@ module SaveChristmas (determineTime) where
22

33
-- https://www.codewars.com/kata/5857e8bb9948644aa1000246/train/haskell
44

5-
import Data.Maybe (fromJust, mapMaybe)
5+
import Data.Maybe (fromJust)
66
import Data.Time (DiffTime, defaultTimeLocale, diffTimeToPicoseconds, parseTimeM)
77

88
determineTime :: [String] -> Bool
99
determineTime arr = needed <= oneDay
1010
where
11-
needed = sum . map diffTimeToPicoseconds . mapMaybe readDiffTime $ arr :: Integer
11+
needed = sum . map readPicoseconds $ arr :: Integer
1212
oneDay = readPicoseconds "24:00:00"
1313

1414
readPicoseconds :: String -> Integer

test/DeltaBitsSpec.hs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
module DeltaBitsSpec (spec) where
2+
3+
import DeltaBits (convertBits)
4+
import Test.HUnit (assertEqual)
5+
import Test.Hspec
6+
7+
spec :: Spec
8+
spec = do
9+
it "description example test" $ do
10+
assertEqual "convertBits 31 14" 2 $ convertBits 31 14
11+
it "more example tests" $ do
12+
assertEqual "convertBits 7 17" 3 $ convertBits 7 17
13+
assertEqual "convertBits 31 0" 5 $ convertBits 31 0
14+
assertEqual "convertBits 0 0" 0 $ convertBits 0 0
15+
assertEqual "convertBits 127681 127681" 0 $ convertBits 127681 127681
16+
assertEqual "convertBits 312312312 5645657" 13 $ convertBits 312312312 5645657
17+
assertEqual "convertBits 43 2009989843" 17 $ convertBits 43 2009989843

0 commit comments

Comments
 (0)