Skip to content

Commit

Permalink
initial setup for day 3
Browse files Browse the repository at this point in the history
  • Loading branch information
jwnace committed Dec 9, 2023
1 parent f772ba4 commit 9eb125e
Show file tree
Hide file tree
Showing 11 changed files with 285 additions and 206 deletions.
86 changes: 43 additions & 43 deletions day01/day01.go
Original file line number Diff line number Diff line change
@@ -1,74 +1,74 @@
package day01

import (
"aoc-2023-go/helpers"
"strings"
"aoc-2023-go/helpers"
"strings"
)

var inputFile string
var digitStrings map[string]int

func init() {
inputFile = helpers.ReadInput()

digitStrings = make(map[string]int)
digitStrings["one"] = 1
digitStrings["two"] = 2
digitStrings["three"] = 3
digitStrings["four"] = 4
digitStrings["five"] = 5
digitStrings["six"] = 6
digitStrings["seven"] = 7
digitStrings["eight"] = 8
digitStrings["nine"] = 9
inputFile = helpers.ReadInput()

digitStrings = make(map[string]int)
digitStrings["one"] = 1
digitStrings["two"] = 2
digitStrings["three"] = 3
digitStrings["four"] = 4
digitStrings["five"] = 5
digitStrings["six"] = 6
digitStrings["seven"] = 7
digitStrings["eight"] = 8
digitStrings["nine"] = 9
}

func Part1() int {
return solve1(inputFile)
return solve1(inputFile)
}

func Part2() int {
return solve2(inputFile)
return solve2(inputFile)
}

func solve1(input string) int {
sum := 0
sum := 0

for _, line := range strings.Split(input, "\n") {
digits := make([]int, 0)
for _, line := range strings.Split(input, "\n") {
digits := make([]int, 0)

for _, c := range line {
if c >= '0' && c <= '9' {
digits = append(digits, int(c)-'0')
}
}
for _, c := range line {
if c >= '0' && c <= '9' {
digits = append(digits, int(c)-'0')
}
}

sum += digits[0]*10 + digits[len(digits)-1]
}
sum += digits[0]*10 + digits[len(digits)-1]
}

return sum
return sum
}

func solve2(input string) int {
sum := 0
sum := 0

for _, line := range strings.Split(input, "\n") {
digits := make([]int, 0)
for _, line := range strings.Split(input, "\n") {
digits := make([]int, 0)

for i, c := range line {
if c >= '0' && c <= '9' {
digits = append(digits, int(c)-'0')
}
for i, c := range line {
if c >= '0' && c <= '9' {
digits = append(digits, int(c)-'0')
}

for key, value := range digitStrings {
if strings.HasPrefix(line[i:], key) {
digits = append(digits, value)
}
}
}
for key, value := range digitStrings {
if strings.HasPrefix(line[i:], key) {
digits = append(digits, value)
}
}
}

sum += digits[0]*10 + digits[len(digits)-1]
}
sum += digits[0]*10 + digits[len(digits)-1]
}

return sum
return sum
}
40 changes: 20 additions & 20 deletions day01/day01_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,37 +3,37 @@ package day01
import "testing"

func TestPart1Example(t *testing.T) {
expected := 142
actual := solve1("1abc2\npqr3stu8vwx\na1b2c3d4e5f\ntreb7uchet")
expected := 142
actual := solve1("1abc2\npqr3stu8vwx\na1b2c3d4e5f\ntreb7uchet")

if actual != expected {
t.Errorf("Part1() = %d, expected %d", actual, expected)
}
if actual != expected {
t.Errorf("Part1() = %d, expected %d", actual, expected)
}
}

func TestPart1Solution(t *testing.T) {
expected := 55208
actual := Part1()
expected := 55208
actual := Part1()

if actual != expected {
t.Errorf("Part1() = %d, expected %d", actual, expected)
}
if actual != expected {
t.Errorf("Part1() = %d, expected %d", actual, expected)
}
}

func TestPart2Example(t *testing.T) {
expected := 281
actual := solve2("two1nine\neightwothree\nabcone2threexyz\nxtwone3four\n4nineeightseven2\nzoneight234\n7pqrstsixteen")
expected := 281
actual := solve2("two1nine\neightwothree\nabcone2threexyz\nxtwone3four\n4nineeightseven2\nzoneight234\n7pqrstsixteen")

if actual != expected {
t.Errorf("Part2() = %d, expected %d", actual, expected)
}
if actual != expected {
t.Errorf("Part2() = %d, expected %d", actual, expected)
}
}

func TestPart2Solution(t *testing.T) {
expected := 54578
actual := Part2()
expected := 54578
actual := Part2()

if actual != expected {
t.Errorf("Part2() = %d, expected %d", actual, expected)
}
if actual != expected {
t.Errorf("Part2() = %d, expected %d", actual, expected)
}
}
48 changes: 24 additions & 24 deletions day02/day02.go
Original file line number Diff line number Diff line change
@@ -1,53 +1,53 @@
package day02

import (
"aoc-2023-go/helpers"
"aoc-2023-go/helpers"
)

var inputLines []string

func init() {
inputLines = helpers.ReadInputLines()
inputLines = helpers.ReadInputLines()
}

func Part1() int {
return solve1(inputLines)
return solve1(inputLines)
}

func Part2() int {
return solve2(inputLines)
return solve2(inputLines)
}

func solve1(input []string) int {
games := make([]Game, 0)
games := make([]Game, 0)

for _, line := range input {
games = append(games, parseGame(line))
}
for _, line := range input {
games = append(games, parseGame(line))
}

sum := 0
sum := 0

for _, game := range games {
if game.isPossible() {
sum += game.id
}
}
for _, game := range games {
if game.isPossible() {
sum += game.id
}
}

return sum
return sum
}

func solve2(input []string) int {
games := make([]Game, 0)
games := make([]Game, 0)

for _, line := range input {
games = append(games, parseGame(line))
}
for _, line := range input {
games = append(games, parseGame(line))
}

sum := 0
sum := 0

for _, game := range games {
sum += game.power()
}
for _, game := range games {
sum += game.power()
}

return sum
return sum
}
68 changes: 34 additions & 34 deletions day02/day02_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,55 +3,55 @@ package day02
import "testing"

func TestPart1Example(t *testing.T) {
input := []string{
"Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green",
"Game 2: 1 blue, 2 green; 3 green, 4 blue, 1 red; 1 green, 1 blue",
"Game 3: 8 green, 6 blue, 20 red; 5 blue, 4 red, 13 green; 5 green, 1 red",
"Game 4: 1 green, 3 red, 6 blue; 3 green, 6 red; 3 green, 15 blue, 14 red",
"Game 5: 6 red, 1 blue, 3 green; 2 blue, 1 red, 2 green",
}
input := []string{
"Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green",
"Game 2: 1 blue, 2 green; 3 green, 4 blue, 1 red; 1 green, 1 blue",
"Game 3: 8 green, 6 blue, 20 red; 5 blue, 4 red, 13 green; 5 green, 1 red",
"Game 4: 1 green, 3 red, 6 blue; 3 green, 6 red; 3 green, 15 blue, 14 red",
"Game 5: 6 red, 1 blue, 3 green; 2 blue, 1 red, 2 green",
}

expected := 8
expected := 8

actual := solve1(input)
actual := solve1(input)

if actual != expected {
t.Errorf("Part1() = %d, expected %d", actual, expected)
}
if actual != expected {
t.Errorf("Part1() = %d, expected %d", actual, expected)
}
}

func TestPart1Solution(t *testing.T) {
expected := 2348
actual := Part1()
expected := 2348
actual := Part1()

if actual != expected {
t.Errorf("Part1() = %d, expected %d", actual, expected)
}
if actual != expected {
t.Errorf("Part1() = %d, expected %d", actual, expected)
}
}

func TestPart2Example(t *testing.T) {
input := []string{
"Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green",
"Game 2: 1 blue, 2 green; 3 green, 4 blue, 1 red; 1 green, 1 blue",
"Game 3: 8 green, 6 blue, 20 red; 5 blue, 4 red, 13 green; 5 green, 1 red",
"Game 4: 1 green, 3 red, 6 blue; 3 green, 6 red; 3 green, 15 blue, 14 red",
"Game 5: 6 red, 1 blue, 3 green; 2 blue, 1 red, 2 green",
}
input := []string{
"Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green",
"Game 2: 1 blue, 2 green; 3 green, 4 blue, 1 red; 1 green, 1 blue",
"Game 3: 8 green, 6 blue, 20 red; 5 blue, 4 red, 13 green; 5 green, 1 red",
"Game 4: 1 green, 3 red, 6 blue; 3 green, 6 red; 3 green, 15 blue, 14 red",
"Game 5: 6 red, 1 blue, 3 green; 2 blue, 1 red, 2 green",
}

expected := 2286
expected := 2286

actual := solve2(input)
actual := solve2(input)

if actual != expected {
t.Errorf("Part2() = %d, expected %d", actual, expected)
}
if actual != expected {
t.Errorf("Part2() = %d, expected %d", actual, expected)
}
}

func TestPart2Solution(t *testing.T) {
expected := 76008
actual := Part2()
expected := 76008
actual := Part2()

if actual != expected {
t.Errorf("Part2() = %d, expected %d", actual, expected)
}
if actual != expected {
t.Errorf("Part2() = %d, expected %d", actual, expected)
}
}
Loading

0 comments on commit 9eb125e

Please sign in to comment.