Sha256: 56e5122247d9008f9be9a1e89510a35b45fec595e8d0e7c80960a2670da06e69

Contents?: true

Size: 731 Bytes

Versions: 71

Compression:

Stored size: 731 Bytes

Contents

module BinarySearch exposing (find)

import Array exposing (Array)


find : Int -> Array Int -> Int
find target xs =
    find_ 0 (Array.length xs) target xs


find_ : Int -> Int -> Int -> Array Int -> Int
find_ i0 i1 target xs =
    let
        i =
            (i1 + i0) // 2

        isEqual =
            Array.get i xs
                |> (==) (Just target)

        isLessThan =
            Array.get i xs
                |> Maybe.map ((<) target)
    in
    case ( isEqual, isLessThan, i0 > i1 ) of
        ( True, _, _ ) ->
            i

        ( False, Just True, False ) ->
            find_ i0 (i - 1) target xs

        ( False, Just False, False ) ->
            find_ (i + 1) i1 target xs

        _ ->
            -1

Version data entries

71 entries across 71 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/elm/exercises/binary-search/BinarySearch.example.elm
trackler-2.2.1.179 tracks/elm/exercises/binary-search/BinarySearch.example.elm
trackler-2.2.1.178 tracks/elm/exercises/binary-search/BinarySearch.example.elm
trackler-2.2.1.177 tracks/elm/exercises/binary-search/BinarySearch.example.elm
trackler-2.2.1.176 tracks/elm/exercises/binary-search/BinarySearch.example.elm
trackler-2.2.1.175 tracks/elm/exercises/binary-search/BinarySearch.example.elm
trackler-2.2.1.174 tracks/elm/exercises/binary-search/BinarySearch.example.elm
trackler-2.2.1.173 tracks/elm/exercises/binary-search/BinarySearch.example.elm
trackler-2.2.1.172 tracks/elm/exercises/binary-search/BinarySearch.example.elm
trackler-2.2.1.171 tracks/elm/exercises/binary-search/BinarySearch.example.elm
trackler-2.2.1.170 tracks/elm/exercises/binary-search/BinarySearch.example.elm
trackler-2.2.1.169 tracks/elm/exercises/binary-search/BinarySearch.example.elm
trackler-2.2.1.167 tracks/elm/exercises/binary-search/BinarySearch.example.elm
trackler-2.2.1.166 tracks/elm/exercises/binary-search/BinarySearch.example.elm
trackler-2.2.1.165 tracks/elm/exercises/binary-search/BinarySearch.example.elm
trackler-2.2.1.164 tracks/elm/exercises/binary-search/BinarySearch.example.elm
trackler-2.2.1.163 tracks/elm/exercises/binary-search/BinarySearch.example.elm
trackler-2.2.1.162 tracks/elm/exercises/binary-search/BinarySearch.example.elm
trackler-2.2.1.161 tracks/elm/exercises/binary-search/BinarySearch.example.elm
trackler-2.2.1.160 tracks/elm/exercises/binary-search/BinarySearch.example.elm