From 08eaeb02e6658ae8deff647d77af5d744e064137 Mon Sep 17 00:00:00 2001 From: Sijmen Schoon Date: Wed, 5 Dec 2018 23:26:47 +0100 Subject: [PATCH] Optimize day 5 --- Day5/Day5A.hs | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/Day5/Day5A.hs b/Day5/Day5A.hs index 420a910..7cd9317 100644 --- a/Day5/Day5A.hs +++ b/Day5/Day5A.hs @@ -2,19 +2,18 @@ -- stack --resolver lts-12.5 script module Day5A where +import Data.Bits (xor) import Data.Char import qualified Data.Foldable as F invertCase :: Char -> Char -invertCase c - | isUpper c = toLower c - | otherwise = toUpper c +invertCase = chr . xor 0x20 . ord calcLength :: String -> String -> Int calcLength ys (x:y:xs) - | x == invertCase y = case length ys of - 0 -> calcLength ys xs - _ -> calcLength (tail ys) (head ys:xs) + | x == invertCase y = if null ys + then calcLength ys xs + else calcLength (tail ys) (head ys:xs) | otherwise = calcLength (x:ys) (y:xs) calcLength ys [x] = calcLength (x:ys) [] calcLength ys [] = length ys