Browse Source

Able to read input

Piotr Czajkowski 2 years ago
parent
commit
c83fc0a8ea
2 changed files with 68 additions and 0 deletions
  1. 50 0
      14/code.go
  2. 18 0
      14/testinput

+ 50 - 0
14/code.go

@@ -0,0 +1,50 @@
+package main
+
+import (
+	"fmt"
+	"io/ioutil"
+	"log"
+	"os"
+	"strings"
+)
+
+func readInput(file string) (string, map[string]string) {
+	content, err := ioutil.ReadFile(file)
+	if err != nil {
+		log.Fatal(err)
+	}
+
+	lines := strings.Split(string(content), "\n")
+	var template string
+	input := make(map[string]string)
+	readingTemplate := true
+	for _, line := range lines {
+		if line == "" {
+			readingTemplate = false
+			continue
+		}
+
+		if readingTemplate {
+			template = line
+			continue
+		}
+
+		parts := strings.Split(line, " -> ")
+		if len(parts) != 2 {
+			log.Fatal("Invalid line: ", line)
+		}
+
+		input[parts[0]] = parts[1]
+	}
+
+	return template, input
+}
+
+func main() {
+	if len(os.Args) < 2 {
+		log.Fatal("Please provide a file name as argument")
+	}
+
+	template, input := readInput(os.Args[1])
+	fmt.Println(template, input)
+}

+ 18 - 0
14/testinput

@@ -0,0 +1,18 @@
+NNCB
+
+CH -> B
+HH -> N
+CB -> H
+NH -> C
+HB -> C
+HC -> B
+HN -> C
+NN -> C
+BH -> H
+NC -> B
+NB -> B
+BN -> B
+BB -> N
+BC -> B
+CC -> N
+CN -> C