Advertisement
Guest User

Untitled

a guest
Dec 3rd, 2016
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.10 KB | None | 0 0
  1. module December3
  2.  
  3. open System
  4. open System.IO
  5.  
  6. let parseLine (line: string) =
  7. let numbers =
  8. line.Split([|' '|], StringSplitOptions.RemoveEmptyEntries)
  9. |> Seq.map Int32.Parse
  10. |> Seq.take 3
  11. |> List.ofSeq
  12.  
  13. match numbers with
  14. | [a; b; c] -> Some(a, b, c)
  15. | _ -> None
  16.  
  17. let getInput () =
  18. File.ReadAllLines("input3.txt")
  19. |> Seq.choose parseLine
  20.  
  21. let concat (a, b, c) = Seq.concat [a; b; c]
  22.  
  23. let collectColumns (_as, _bs, _cs) (a, b, c) =
  24. (a :: _as, b :: _bs, c :: _cs)
  25.  
  26. let getInput2() =
  27. File.ReadAllLines("input3.txt")
  28. |> Seq.choose parseLine
  29. |> Seq.fold collectColumns ([], [], [])
  30. |> concat
  31. |> List.ofSeq
  32.  
  33. let isTriangle (a, b, c) =
  34. a + b > c && a + c > b && b + c > a
  35.  
  36. let getResult () =
  37. getInput()
  38. |> Seq.where isTriangle
  39. |> Seq.length
  40.  
  41. let rec calculateResult2 sideLengths acc =
  42. match sideLengths with
  43. | a :: b :: c :: rest ->
  44. calculateResult2
  45. rest
  46. acc + (if isTriangle (a, b, c) then 1 else 0)
  47. | _ -> acc
  48.  
  49. let getResult2() =
  50. calculateResult2 (getInput2()) 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement