Browse Source

Able to read input

Piotr Czajkowski 2 years ago
parent
commit
6940e69e25
2 changed files with 82 additions and 0 deletions
  1. 72 0
      05/code.go
  2. 10 0
      05/testinput

+ 72 - 0
05/code.go

@@ -0,0 +1,72 @@
+package main
+
+import (
+	"fmt"
+	"io/ioutil"
+	"log"
+	"os"
+	"strconv"
+	"strings"
+)
+
+func readInput(file string) [][][]int {
+	content, err := ioutil.ReadFile(file)
+	if err != nil {
+		log.Fatal(err)
+	}
+
+	lines := strings.Split(string(content), "\n")
+	var points [][][]int
+	for _, line := range lines {
+		if line == "" {
+			continue
+		}
+
+		pointsString := strings.Split(line, " -> ")
+		if len(pointsString) != 2 {
+			log.Fatal("Invalid line: ", line)
+		}
+
+		start := strings.Split(pointsString[0], ",")
+		if len(start) != 2 {
+			log.Fatal("Invalid start point: ", start)
+		}
+
+		startPoint := make([]int, 2)
+		startPoint[0], err = strconv.Atoi(start[0])
+		if err != nil {
+			log.Fatal(err)
+		}
+		startPoint[1], err = strconv.Atoi(start[1])
+		if err != nil {
+			log.Fatal(err)
+		}
+
+		end := strings.Split(pointsString[1], ",")
+		if len(end) != 2 {
+			log.Fatal("Invalid end point: ", end)
+		}
+		endPoint := make([]int, 2)
+		endPoint[0], err = strconv.Atoi(end[0])
+		if err != nil {
+			log.Fatal(err)
+		}
+		endPoint[1], err = strconv.Atoi(end[1])
+		if err != nil {
+			log.Fatal(err)
+		}
+
+		points = append(points, [][]int{startPoint, endPoint})
+	}
+
+	return points
+}
+
+func main() {
+	if len(os.Args) < 2 {
+		log.Fatal("Please provide a file name as argument")
+	}
+
+	input := readInput(os.Args[1])
+	fmt.Println(input)
+}

+ 10 - 0
05/testinput

@@ -0,0 +1,10 @@
+0,9 -> 5,9
+8,0 -> 0,8
+9,4 -> 3,4
+2,2 -> 2,1
+7,0 -> 7,4
+6,4 -> 2,0
+0,9 -> 2,9
+3,4 -> 1,4
+0,0 -> 8,8
+5,5 -> 8,2