anchor.diff:                                              Seq.head)
       (x, y)
   
  -let isHorizontal (line:Point[]) = line[0].Y = line[1].Y
  -let isVertical (line:Point[]) = line[0].X = line[1].X
   let minX (line:Point[]) = min line[0].X line[1].X
   let minY (line:Point[]) = min line[0].Y line[1].Y
   let maxX (line:Point[]) = max line[0].X line[1].X
   let maxY (line:Point[]) = max line[0].Y line[1].Y
   
  -let minByX (line:Point[]) = Array.minBy (fun (x:Point) -> x.X)
  -let maxByX (line:Point[]) = Array.minBy (fun (x:Point) -> x.X)
  -let minByY (line:Point[]) = Array.minBy (fun (x:Point) -> x.Y)
  -let maxByY (line:Point[]) = Array.minBy (fun (x:Point) -> x.Y)
  +let minByX (line:Point[]): Point = line |> Array.minBy (fun (x:Point) -> x.X)
  +let maxByX (line:Point[]): Point = line |> Array.maxBy (fun (x:Point) -> x.X)
  +let minByY (line:Point[]): Point = line |> Array.minBy (fun (x:Point) -> x.Y)
  +let maxByY (line:Point[]): Point = line |> Array.maxBy (fun x -> x.Y)
  +
  +let isHorizontal (line:Point[]) = line[0].Y = line[1].Y
  +let isVertical (line:Point[]) = line[0].X = line[1].X
  +
   
   // 1. I originally wanted to do a recursive function that checked every line against every other line
   //    which was super inefficient. It didn't give me the correct result, so instead of debugging it 
  
positive.code:         | _ -> addLinesToMap ((Seq.tail lines), (addLineToMap ((Seq.head lines), map)))
  
      let positionCount = addLinesToMap (lines, (Map []))
  
      printfn "Counting.."
  
      positionCount.Values |> Seq.filter (fun x -> x > 1) |> Seq.length
  
  
negative.code:     //let overlapCount = solvePart1WithCountBy part1Lines
  
      let part1 = overlapCount
      
      let part2 = solvePart1WithMap parsed
  
      part1.ToString(), part2.ToString()