Browse Source

Able to read input

Piotr Czajkowski 2 years ago
parent
commit
d57e3f7018
2 changed files with 49 additions and 0 deletions
  1. 48 0
      07/code.go
  2. 1 0
      07/testinput

+ 48 - 0
07/code.go

@@ -0,0 +1,48 @@
+package main
+
+import (
+	"fmt"
+	"io/ioutil"
+	"log"
+	"os"
+	"sort"
+	"strconv"
+	"strings"
+)
+
+func readInput(file string) (map[int]int, []int) {
+	content, err := ioutil.ReadFile(file)
+	if err != nil {
+		log.Fatal(err)
+	}
+
+	numberStrings := strings.Split(string(content), ",")
+	crabs := make(map[int]int)
+	var orderedCrabs []int
+	for _, numberString := range numberStrings {
+		if numberString == "" {
+			continue
+		}
+
+		if number, err := strconv.Atoi(numberString); err == nil {
+			if _, ok := crabs[number]; !ok {
+				orderedCrabs = append(orderedCrabs, number)
+			}
+			crabs[number]++
+		} else {
+			log.Fatal(err)
+		}
+	}
+
+	sort.Ints(orderedCrabs)
+	return crabs, orderedCrabs
+}
+
+func main() {
+	if len(os.Args) < 2 {
+		log.Fatal("Please provide a file name as argument")
+	}
+
+	crabs, orderedCrabs := readInput(os.Args[1])
+	fmt.Println(crabs, orderedCrabs)
+}

+ 1 - 0
07/testinput

@@ -0,0 +1 @@
+16,1,2,0,4,2,7,1,2,14