DEV Community

Discussion on: Daily Challenge #149 - Fun with Lamps

Collapse
 
aminnairi profile image
Amin • Edited

Elm

import List exposing (filter, head, indexedMap, length)
import Maybe exposing (withDefault)
import Tuple exposing (pair)


switchNeeded : List Int -> ( Int, Int ) -> Bool
switchNeeded line ( index, lamp ) =
    if (line |> head |> withDefault 0) == 0 then
        modBy 2 index /= lamp
    else
        modBy 2 index == lamp


lamps : List Int -> Int
lamps line =
    line
        |> indexedMap pair
        |> filter (switchNeeded line)
        |> length

Demo.