/ F#

HR F#: Filter Array

The next HackerRank functional problem is Filter Array.

Filter a given array of integers and output only those values that are less than a specified value X.

The idea is to create a filtering function, not using the one from the standard library. With what is already known from solving previous problem[1], following the recommended method signature should not be difficult.

The recommended signature is upper limit and list, returns list.

Instead of lists, let's use the sequence:

let f x s =
  seq { for v in s do if v < x then yield v }

readItemsFromInput was introduced in the solution for the problem "List Replication".

The solution:

open System

let f x s =
  seq { for v in s do if v < x then yield v }

let rec readItemsFromInput () = seq {
    let line = Console.ReadLine ()
    match line with
    | null -> ()
    | _ -> yield line |> int
           yield! readItemsFromInput ()         
}

[<EntryPoint>]
let main argv = 
    let x = Console.ReadLine () |> int
    let items = readItemsFromInput ()
    items
    |> f x
    |> Seq.iter (fun v -> printfn "%A" v)
    0 // return an integer exit code

  1. HR F#: List Replication, https://alexatnet.com/hr-f-list-replication/ ↩︎

Alex Netkachov

Alex Netkachov

Alex likes functional programming, algorithms and code reviews. Apart from programming, his favourites are walking with his family in the parks and national trails and reading books.

Read More

Why not to stay updated if the subject is interesting? Join Telegram channel Alex@Net or follow alex_at_net on Twitter. Or just, use the comments form below.