Code Monkey home page Code Monkey logo

lstrzepek's Introduction

Hi there ๐Ÿ‘‹

lstrzepek's People

Contributors

lstrzepek avatar

Watchers

 avatar

lstrzepek's Issues

BookOfCode#1


module Stairs = 
    type Move = 
        | Down
        | Up
    type Stair = int
    type Index = int
    let takeStep (current:Stair) dir =
        match dir with  
            | Up -> current + 1
            | Down -> current - 1
    let betweenConstraint (min: Stair) (max: Stair) takeStep = 
        let f (current: Stair) (dir:Move): Stair = 
            let a:Stair = takeStep current dir
            if a < min then
                min
            elif a > max then
                max
            else
                a
        f
    let getIncorrectMoveIndexes startWith moves :Index list =
        moves
        |> List.scan takeStep startWith
        |> List.mapi (fun i v -> i, v)
        |> List.filter (fun (i, v) -> v = -1)
        |> List.map fst
    let getVisitedStairs  (startWith:Stair) withConstraints (moves: Move list) = 
        moves
        |> List.scan (takeStep |> withConstraints ) startWith
    let getValidMoves  (startWith:Stair) withConstraints (moves: Move list) = 
        moves
        |> getVisitedStairs startWith withConstraints
        |> List.distinct 
open Stairs
let charToMove = function
    |'+' -> [Up]
    |'-' -> [Down]
    |_ -> []
let stringToMoves input = 
    input
    |> List.ofSeq
    |> List.collect charToMove
let input = "-+-"
let moves = 
    input
    |> stringToMoves
let incorrectMoveIndexes = 
    moves
    |> getIncorrectMoveIndexes 0
let visitedStairs = 
    moves
    |> getVisitedStairs 0 (betweenConstraint 0 100)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.