1 people like it.

# Official SkillsMatter 2013 F# Tutorials Programming with the Stars Code Snippet

SkillsMatter 2013 F# Tutorials Programming with the Stars Code Snippet

 ``` 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: ``` ``````open System // Defs let zero = """ _ | | |_|""" let one = """ | | """ let two = """ _ _| |_ """ let three = """ _ _| _|""" let four = """ |_| |""" let five = """ _ |_ _|""" let six = """ _ |_ |_|""" let seven = """ _ | |""" let eight = """ _ |_| |_|""" let nine = """ _ |_| _|""" // Part 1 let inline numberMap (n: string) = let n' = n.[1..].Split(Environment.NewLine.ToCharArray(), StringSplitOptions.None) Array2D.init 3 3 (fun i j -> n'.[i].[j]) let numbers = [|zero; one; two; three; four; five; six; seven; eight; nine|] |> Array.mapi (fun i n -> numberMap n, i) |> dict let usercase1 = """ _ _ _ _ _ _ _ | _| _||_||_ |_ ||_||_| ||_ _| | _||_| ||_| _|""".[1..] let parseNumbers (numberStr: string) = let charArr = numberStr.Split(Environment.NewLine.ToCharArray(), StringSplitOptions.RemoveEmptyEntries) |> Array.map (fun i -> i.ToCharArray()) let charArr2d = Array2D.init (charArr.Length) (charArr.[0].Length) (fun i j -> charArr.[i].[j]) [| for j = 0 to (charArr.[1].Length - 1) / 3 do let v = try let idx = j*3 in charArr2d.[0..2, idx.. idx+2] with ex -> failwithf "%i" j yield v |] |> Array.map (fun v -> numbers.[v]) // Part 2 let doesChecksum (acc: int []) = let summed = acc |> Array.rev |> Array.mapi (fun i v -> (i+1) * v) |> Array.sum summed % 11 = 0 ``````
namespace System
val zero : string

Full name: Script.zero
val one : string

Full name: Script.one
val two : string

Full name: Script.two
val three : string

Full name: Script.three
val four : string

Full name: Script.four
val five : string

Full name: Script.five
val six : string

Full name: Script.six
val seven : string

Full name: Script.seven
val eight : string

Full name: Script.eight
val nine : string

Full name: Script.nine
val numberMap : n:string -> char [,]

Full name: Script.numberMap
val n : string
Multiple items
val string : value:'T -> string

Full name: Microsoft.FSharp.Core.Operators.string

--------------------
type string = String

Full name: Microsoft.FSharp.Core.string
val n' : string []
type Environment =
static member CommandLine : string
static member CurrentDirectory : string with get, set
static member Exit : exitCode:int -> unit
static member ExitCode : int with get, set
static member ExpandEnvironmentVariables : name:string -> string
static member FailFast : message:string -> unit + 1 overload
static member GetCommandLineArgs : unit -> string[]
static member GetEnvironmentVariable : variable:string -> string + 1 overload
static member GetEnvironmentVariables : unit -> IDictionary + 1 overload
static member GetFolderPath : folder:SpecialFolder -> string + 1 overload
...
nested type SpecialFolder
nested type SpecialFolderOption

Full name: System.Environment
property Environment.NewLine: string
String.ToCharArray() : char []
String.ToCharArray(startIndex: int, length: int) : char []
type StringSplitOptions =
| None = 0
| RemoveEmptyEntries = 1

Full name: System.StringSplitOptions
field StringSplitOptions.None = 0
module Array2D

from Microsoft.FSharp.Collections
val init : length1:int -> length2:int -> initializer:(int -> int -> 'T) -> 'T [,]

Full name: Microsoft.FSharp.Collections.Array2D.init
val i : int
val j : int
val numbers : Collections.Generic.IDictionary<char [,],int>

Full name: Script.numbers
type Array =
member Clone : unit -> obj
member CopyTo : array:Array * index:int -> unit + 1 overload
member GetEnumerator : unit -> IEnumerator
member GetLength : dimension:int -> int
member GetLongLength : dimension:int -> int64
member GetLowerBound : dimension:int -> int
member GetUpperBound : dimension:int -> int
member GetValue : [<ParamArray>] indices:int[] -> obj + 7 overloads
member Initialize : unit -> unit
member IsFixedSize : bool
...

Full name: System.Array
val mapi : mapping:(int -> 'T -> 'U) -> array:'T [] -> 'U []

Full name: Microsoft.FSharp.Collections.Array.mapi
val dict : keyValuePairs:seq<'Key * 'Value> -> Collections.Generic.IDictionary<'Key,'Value> (requires equality)

Full name: Microsoft.FSharp.Core.ExtraTopLevelOperators.dict
val usercase1 : string

Full name: Script.usercase1
val parseNumbers : numberStr:string -> int []

Full name: Script.parseNumbers
val numberStr : string
val charArr : char [] []
String.Split([<ParamArray>] separator: char []) : string []
String.Split(separator: string [], options: StringSplitOptions) : string []
String.Split(separator: char [], options: StringSplitOptions) : string []
String.Split(separator: char [], count: int) : string []
String.Split(separator: string [], count: int, options: StringSplitOptions) : string []
String.Split(separator: char [], count: int, options: StringSplitOptions) : string []
field StringSplitOptions.RemoveEmptyEntries = 1
val map : mapping:('T -> 'U) -> array:'T [] -> 'U []

Full name: Microsoft.FSharp.Collections.Array.map
val i : string
val charArr2d : char [,]
property Array.Length: int
val v : char [,]
val idx : int
val ex : exn
val failwithf : format:Printf.StringFormat<'T,'Result> -> 'T

Full name: Microsoft.FSharp.Core.ExtraTopLevelOperators.failwithf
val doesChecksum : acc:int [] -> bool

Full name: Script.doesChecksum
val acc : int []
Multiple items
val int : value:'T -> int (requires member op_Explicit)

Full name: Microsoft.FSharp.Core.Operators.int

--------------------
type int = int32

Full name: Microsoft.FSharp.Core.int

--------------------
type int<'Measure> = int

Full name: Microsoft.FSharp.Core.int<_>
val summed : int
val rev : array:'T [] -> 'T []

Full name: Microsoft.FSharp.Collections.Array.rev
val v : int
val sum : array:'T [] -> 'T (requires member ( + ) and member get_Zero)

Full name: Microsoft.FSharp.Collections.Array.sum