Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- let e11 =
- let input = ... //Läser in input
- let parsed =
- input.Split [|'\n'|]
- |> Array.map (fun row -> List.ofArray (Array.map int (row.Split [|' '|])))
- |> List.ofArray
- let size = 4
- let outOfBoundsRight = List.length parsed - size
- let outOfBoundsLeft = size - 1
- let outOfBoundsDown = outOfBoundsRight
- let row (i:int) (j:int) (matrix: int list list) : int list =
- if j > outOfBoundsRight then [0]
- else [for a in 0 .. size - 1 -> matrix.[i].[j+a]]
- let col (i:int) (j:int) (matrix: int list list) : int list =
- if i > outOfBoundsDown then [0]
- else [for a in 0 .. size - 1 -> matrix.[i+a].[j]]
- let leftDia (i:int) (j:int) (matrix: int list list) : int list =
- if j < outOfBoundsLeft || i > outOfBoundsDown then [0]
- else [for a in 0 .. size - 1 -> matrix.[i+a].[j-a]]
- let rightDia (i:int) (j:int) (matrix: int list list) : int list =
- if i > outOfBoundsDown || j > outOfBoundsRight then [0]
- else [for a in 0 .. size - 1 -> matrix.[i+a].[j+a]]
- let product list =
- List.fold ( * ) 1 list
- List.init 20 (fun i ->
- List.init 20 (fun j ->
- [row i j parsed; col i j parsed; leftDia i j parsed; rightDia i j parsed]
- |> List.map (fun l -> product l)
- |> List.max))
- |> List.concat
- |> List.max
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement