18 lines
573 B
Haskell
18 lines
573 B
Haskell
|
import Text.Read
|
||
|
import Data.Maybe
|
||
|
|
||
|
circularSum :: [Int] -> Int
|
||
|
circularSum ns = snd $ foldr (\n (prev, sum) -> (n, if n == prev then n + sum else sum)) (last ns, 0) ns
|
||
|
|
||
|
halfwaySum :: [Int] -> Int
|
||
|
halfwaySum ns =
|
||
|
let ms = drop (length ns `div` 2) ns ++ take (length ns `div` 2) ns
|
||
|
nms = zip ns ms
|
||
|
in foldr (\(n, m) sum -> if n == m then n + sum else sum) 0 nms
|
||
|
|
||
|
main :: IO ()
|
||
|
main = do
|
||
|
input <- readFile "1.txt"
|
||
|
let nums = catMaybes $ map (readMaybe . (:[])) input :: [Int]
|
||
|
print $ circularSum nums
|
||
|
print $ halfwaySum nums
|