init, day one solution

This commit is contained in:
2023-07-12 08:59:45 -05:00
commit d930d0b5ed
3 changed files with 114 additions and 0 deletions

21
.gitignore vendored Normal file
View File

@@ -0,0 +1,21 @@
# If you prefer the allow list template instead of the deny list, see community template:
# https://github.com/github/gitignore/blob/main/community/Golang/Go.AllowList.gitignore
#
# Binaries for programs and plugins
*.exe
*.exe~
*.dll
*.so
*.dylib
# Test binary, built with `go test -c`
*.test
# Output of the go coverage tool, specifically when used with LiteIDE
*.out
# Dependency directories (remove the comment below to include it)
# vendor/
# Go workspace file
go.work

90
dayone.go Normal file
View File

@@ -0,0 +1,90 @@
package main
import (
"fmt"
"math"
"strconv"
"strings"
)
func dayOne(input string) (maxCalories int) {
// split input by newlines
var eachPart = strings.Split(input, "\n")
// trim all remaining whitespace
for i := range eachPart {
eachPart[i] = strings.TrimSpace(eachPart[i])
}
// assign a max value and a current value
maxCalories = 0
temp := 0
for i := 0; i < len(eachPart); i++ {
// this indicates we have reached the end of each elf's snack stash
if eachPart[i] == "" {
// use the max between curent temp value and the current max value found
maxCalories = int(math.Max(float64(maxCalories), float64(temp)))
// reassign temp to zero and start again
temp = 0
continue
}
// string to int conversion
partToInt, err := strconv.Atoi(eachPart[i])
if err != nil {
panic(err)
}
// add the result to our current working total
temp += partToInt
}
return
}
func main() {
var result int;
var input string;
input =
`1000
2000
3000
4000
5000
6000
7000
8000
9000
10000`
result = dayOne(input)
fmt.Println(result)
input =
`
245
256
939
-12039
4949
2
2
2
`
result = dayOne(input)
fmt.Println(result)
}

3
go.mod Normal file
View File

@@ -0,0 +1,3 @@
module github.com/innocuous-symmetry/aoc
go 1.20