Advertisement
Guest User

Untitled

a guest
Feb 5th, 2019
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
F# 1.50 KB | None | 0 0
  1. let e11 =
  2.         let input = ... //Läser in input
  3.         let parsed =
  4.             input.Split [|'\n'|]
  5.             |> Array.map (fun row -> List.ofArray (Array.map int (row.Split [|' '|])))
  6.             |> List.ofArray
  7.            
  8.         let size = 4
  9.         let outOfBoundsRight = List.length parsed - size
  10.         let outOfBoundsLeft = size - 1
  11.         let outOfBoundsDown = outOfBoundsRight
  12.  
  13.         let row (i:int) (j:int) (matrix: int list list) : int list =
  14.             if j > outOfBoundsRight then [0]
  15.             else [for a in 0 .. size - 1 -> matrix.[i].[j+a]]
  16.  
  17.         let col (i:int) (j:int) (matrix: int list list) : int list =
  18.             if i > outOfBoundsDown then [0]
  19.             else [for a in 0 .. size - 1 -> matrix.[i+a].[j]]
  20.  
  21.         let leftDia (i:int) (j:int) (matrix: int list list) : int list =
  22.             if j < outOfBoundsLeft || i > outOfBoundsDown then [0]
  23.             else [for a in 0 .. size - 1 -> matrix.[i+a].[j-a]]
  24.        
  25.         let rightDia (i:int) (j:int) (matrix: int list list) : int list =
  26.             if i > outOfBoundsDown || j > outOfBoundsRight then [0]
  27.             else [for a in 0 .. size - 1 -> matrix.[i+a].[j+a]]
  28.  
  29.         let product list =
  30.             List.fold ( * ) 1 list
  31.  
  32.         List.init 20 (fun i ->
  33.             List.init 20 (fun j ->
  34.                 [row i j parsed; col i j parsed; leftDia i j parsed; rightDia i j parsed]
  35.                 |> List.map (fun l -> product l)
  36.                 |> List.max))
  37.         |> List.concat
  38.         |> List.max
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement