add day-05 + benchmarks

This commit is contained in:
2024-12-05 18:24:22 +00:00
parent b981b962a2
commit 886679a095
14 changed files with 342 additions and 0 deletions

View File

@@ -0,0 +1,49 @@
package util
import (
"bufio"
"io"
"log"
"strconv"
"strings"
)
func MustConv(s string) int {
n, err := strconv.Atoi(s)
if err != nil {
panic(err)
}
return n
}
func ParseLines(r io.Reader) ([][][]int, error) {
data := make([][][]int, 2)
filter := func(r rune) bool {
return r == '|' || r == ','
}
buf, err := io.ReadAll(r)
if err != nil {
log.Fatal(err)
}
parts := strings.Split(string(buf), "\n\n")
for i, part := range parts {
scanner := bufio.NewScanner(strings.NewReader(part))
for scanner.Scan() {
filtered := strings.FieldsFunc(scanner.Text(), filter)
var nums []int
for _, n := range filtered {
nums = append(nums, MustConv(n))
}
data[i] = append(data[i], nums)
}
if err := scanner.Err(); err != nil {
return nil, err
}
}
return data, nil
}