Compare commits

...
4 Commits
Author SHA1 Message Date
Kharec 3f795a451d test: add unit tests 2025-11-24 21:35:28 +01:00
Kharec c56c2aa449 feat: add main code 2025-11-24 21:35:22 +01:00
Kharec 19ea2cd1f6 feat: add input 2025-11-24 21:35:19 +01:00
Kharec 8594cd44d3 go: init 2021/day02 package 2025-11-24 21:35:14 +01:00
4 changed files with 1096 additions and 0 deletions

No files matched your search

+3
View File
@@ -0,0 +1,3 @@
module 2021/day02
go 1.25.4
+1000
View File
@@ -0,0 +1,1000 @@
forward 9
down 9
up 4
down 5
down 6
up 6
down 7
down 1
forward 6
down 4
forward 8
up 5
forward 9
down 1
down 4
up 4
up 5
up 4
down 1
forward 8
down 1
forward 2
forward 8
down 9
forward 2
down 6
down 2
up 8
down 6
forward 9
forward 7
down 6
forward 3
down 2
forward 4
down 5
up 2
down 9
down 8
up 5
forward 5
forward 4
up 9
forward 9
down 8
forward 8
forward 2
up 8
down 7
forward 8
down 3
forward 6
up 9
forward 9
forward 4
forward 9
forward 6
down 4
up 2
forward 4
up 5
up 6
forward 9
down 3
forward 4
forward 9
down 1
forward 1
up 6
up 4
forward 7
up 7
up 3
forward 2
forward 8
forward 6
down 4
forward 2
forward 3
down 7
down 5
down 8
down 5
forward 1
down 8
down 2
down 8
down 3
forward 4
forward 8
forward 9
down 1
forward 8
down 1
down 6
down 7
down 7
forward 5
forward 3
down 2
down 1
forward 2
forward 1
down 6
down 4
up 5
up 9
down 4
forward 9
down 2
down 5
down 4
down 2
forward 2
forward 4
forward 6
forward 6
forward 3
down 6
up 5
forward 8
forward 3
down 9
down 3
forward 4
forward 2
down 9
down 8
down 7
down 3
forward 2
down 7
down 3
down 5
forward 6
up 9
up 8
forward 5
down 6
down 1
down 6
down 5
forward 7
down 2
forward 8
forward 7
forward 2
forward 8
up 6
forward 5
down 2
down 5
up 8
up 6
forward 1
down 4
up 5
up 5
up 5
forward 4
up 1
forward 3
down 9
down 6
up 1
forward 1
forward 2
forward 1
forward 4
forward 6
forward 6
up 7
down 7
down 7
down 9
forward 9
down 1
down 5
down 1
down 7
down 1
up 6
forward 2
down 4
up 3
up 2
forward 6
up 4
down 1
down 5
forward 9
up 4
up 3
forward 3
up 7
forward 2
forward 5
down 9
forward 7
forward 4
down 1
up 2
forward 4
up 4
down 2
forward 4
up 5
up 1
down 9
down 3
up 6
forward 7
up 7
forward 2
down 4
up 3
up 3
forward 4
up 5
down 3
up 8
forward 6
forward 8
down 1
down 9
down 7
forward 7
forward 5
forward 2
up 9
forward 3
forward 1
down 7
down 6
forward 5
up 3
forward 6
down 4
forward 9
down 7
forward 9
down 9
down 5
down 6
down 2
down 2
down 8
down 3
down 9
forward 5
up 6
forward 1
down 3
down 2
up 1
up 6
forward 3
down 6
down 6
up 9
up 8
forward 2
down 7
forward 5
up 9
down 7
down 3
forward 2
forward 2
up 9
forward 1
forward 7
down 9
forward 6
forward 7
up 8
down 7
down 5
down 3
up 6
down 5
forward 6
down 9
down 6
up 9
down 7
forward 2
down 5
up 4
down 4
down 8
forward 7
down 9
forward 8
forward 6
down 7
down 1
forward 5
up 6
forward 4
up 7
up 4
up 5
forward 9
forward 5
forward 4
down 6
down 5
forward 2
forward 7
down 8
forward 3
up 5
down 2
up 3
forward 4
up 5
up 2
forward 4
forward 1
forward 1
forward 4
forward 4
down 2
forward 1
forward 1
up 5
up 7
down 8
down 4
forward 2
forward 2
down 3
forward 7
down 8
up 3
forward 2
down 2
forward 3
up 2
forward 3
up 6
down 7
up 7
down 3
up 9
forward 3
forward 7
down 7
up 9
down 6
down 2
forward 8
forward 8
up 7
down 6
forward 2
forward 1
down 4
up 2
forward 6
up 7
down 5
up 1
forward 3
forward 9
up 4
forward 5
forward 8
down 3
up 5
forward 9
down 6
up 9
forward 5
down 4
down 1
down 6
up 9
up 2
forward 5
down 1
up 3
down 5
forward 2
down 4
forward 5
down 6
down 4
down 4
forward 1
down 7
down 2
forward 4
forward 5
up 9
down 6
down 2
forward 7
up 8
down 9
forward 7
down 5
down 2
down 8
down 8
up 4
up 3
down 3
down 7
forward 4
forward 6
down 4
up 7
forward 4
forward 4
forward 1
down 3
down 2
forward 7
forward 2
up 9
down 7
up 7
forward 2
forward 6
forward 9
down 3
forward 7
forward 5
up 5
up 1
forward 6
forward 4
down 2
forward 3
forward 9
down 1
forward 6
forward 7
forward 1
up 7
up 4
forward 7
forward 8
down 7
down 8
down 9
forward 7
down 9
up 6
down 7
up 3
down 7
forward 4
forward 9
forward 1
down 4
forward 1
up 4
up 4
forward 9
forward 8
up 4
down 2
forward 4
forward 2
forward 8
down 2
up 6
down 4
forward 6
forward 5
down 2
forward 9
down 5
forward 5
down 3
down 2
up 9
down 3
forward 6
forward 6
up 9
down 1
forward 4
up 3
forward 1
forward 3
forward 3
down 6
down 2
forward 8
down 4
forward 8
forward 8
forward 5
up 6
forward 3
down 1
down 8
forward 3
forward 4
down 2
down 7
up 8
forward 3
forward 8
up 2
forward 6
down 4
forward 9
forward 5
down 1
forward 6
forward 2
down 3
up 4
down 7
down 2
up 2
forward 7
down 6
down 2
up 5
up 5
down 9
down 7
down 3
down 1
down 9
forward 4
down 4
forward 7
forward 8
forward 4
up 6
forward 6
forward 9
down 2
forward 4
down 8
down 4
forward 5
forward 2
up 4
down 3
up 8
up 1
down 1
forward 9
up 3
up 1
forward 1
forward 7
forward 1
down 7
forward 7
forward 7
down 7
forward 4
up 6
forward 3
down 1
up 1
up 8
forward 5
forward 2
up 4
forward 7
down 2
down 3
down 8
up 7
up 5
forward 8
down 5
down 3
down 9
forward 6
forward 4
down 9
up 5
forward 3
up 7
up 9
up 1
forward 1
forward 3
forward 1
up 8
up 4
down 1
down 8
down 3
down 1
down 1
down 9
forward 4
down 3
forward 9
forward 2
down 1
forward 9
up 7
forward 6
up 4
forward 8
forward 3
down 2
down 2
down 2
up 5
forward 1
up 1
forward 7
down 1
forward 1
down 8
up 4
up 1
forward 7
down 8
down 9
forward 2
forward 1
up 3
forward 4
up 8
forward 5
down 2
forward 6
forward 8
up 9
forward 2
down 7
down 4
up 3
forward 1
forward 6
forward 9
down 1
down 8
down 1
down 2
forward 3
forward 9
forward 2
forward 4
forward 7
forward 3
up 8
up 9
forward 3
forward 6
down 5
up 6
down 8
forward 5
up 4
up 9
forward 6
forward 3
up 9
forward 8
forward 5
forward 9
forward 7
up 6
forward 3
forward 1
up 4
forward 9
forward 8
up 1
up 2
down 3
down 4
down 9
down 4
down 5
down 6
down 2
down 5
forward 6
forward 4
up 2
up 7
down 5
down 9
forward 3
down 5
forward 6
down 7
forward 1
forward 7
forward 9
forward 7
forward 4
forward 4
up 1
up 4
down 6
up 2
up 1
down 4
forward 2
down 4
forward 6
down 3
up 6
down 2
up 3
forward 1
forward 9
forward 3
up 9
forward 7
forward 5
forward 4
down 5
down 9
forward 6
forward 7
up 1
forward 7
forward 2
forward 2
forward 5
forward 6
down 3
down 7
down 3
down 4
down 6
down 1
forward 2
down 8
forward 4
forward 7
up 1
down 4
down 1
down 2
down 3
up 3
forward 9
forward 2
down 8
up 3
forward 8
forward 7
up 8
down 8
forward 2
down 9
down 9
down 5
forward 1
forward 3
forward 6
up 1
up 2
forward 1
down 3
up 6
forward 2
forward 8
forward 2
down 3
forward 8
forward 9
down 7
down 3
down 2
down 9
down 3
up 6
forward 9
forward 5
forward 1
forward 9
down 9
up 2
down 1
up 6
forward 6
down 3
forward 6
forward 3
forward 5
forward 4
up 2
up 4
up 6
forward 1
forward 6
up 6
up 4
up 7
down 8
down 5
up 1
up 1
down 5
forward 5
down 9
forward 8
down 3
up 4
down 9
down 1
forward 2
forward 9
down 3
down 8
down 5
down 6
forward 7
forward 1
down 9
down 7
forward 8
forward 2
up 1
up 1
forward 7
up 1
forward 2
down 9
up 4
forward 5
down 1
up 1
down 8
down 3
up 1
down 8
down 7
down 2
forward 9
down 5
forward 2
up 2
up 6
up 4
forward 6
up 5
forward 5
forward 4
forward 8
down 8
down 6
down 1
down 3
down 6
forward 8
up 1
up 5
down 4
forward 4
down 9
forward 4
up 6
down 7
forward 4
down 3
down 4
forward 1
forward 3
down 1
down 7
up 8
down 3
down 4
down 3
forward 3
down 8
forward 8
down 3
down 7
forward 2
up 2
forward 7
down 9
up 7
forward 5
down 2
down 5
up 4
up 8
forward 8
forward 9
forward 8
down 8
forward 6
forward 9
forward 6
forward 8
forward 6
forward 8
forward 2
down 7
down 3
forward 7
down 4
down 5
up 1
forward 5
down 3
down 7
up 4
forward 9
down 2
down 3
forward 1
up 6
down 1
down 9
forward 8
forward 9
forward 2
down 6
down 4
up 3
up 8
forward 1
down 3
up 8
up 7
down 4
up 3
down 7
down 2
down 5
down 7
down 2
forward 2
down 3
up 2
forward 8
up 1
forward 2
up 4
forward 1
forward 8
forward 6
forward 2
down 2
forward 5
up 4
down 9
down 7
forward 2
down 9
down 9
forward 6
down 8
down 4
down 7
down 9
forward 7
forward 7
up 6
forward 3
forward 5
forward 6
down 8
up 1
forward 2
up 4
up 2
down 8
down 9
down 1
down 3
forward 7
forward 5
forward 6
up 6
down 7
up 8
up 1
forward 8
down 5
up 1
down 2
down 5
forward 6
down 4
forward 5
down 4
forward 3
down 5
up 4
up 7
forward 2
up 2
down 8
forward 6
+65
View File
@@ -0,0 +1,65 @@
package main
import (
"fmt"
"log"
"os"
"strconv"
"strings"
)
func parseInput(file string) []string {
content, err := os.ReadFile(file)
if err != nil {
log.Fatalf("Failed to read input file: %v", err)
}
return strings.Split(string(content), "\n")
}
func PartOne(data []string) int {
horizontal := 0
depth := 0
for _, line := range data {
parts := strings.Split(line, " ")
direction := parts[0]
amount, _ := strconv.Atoi(parts[1])
switch direction {
case "forward":
horizontal += amount
case "down":
depth += amount
case "up":
depth -= amount
}
}
return horizontal * depth
}
func PartTwo(data []string) int {
horizontal := 0
depth := 0
aim := 0
for _, line := range data {
parts := strings.Split(line, " ")
direction := parts[0]
amount, _ := strconv.Atoi(parts[1])
switch direction {
case "forward":
horizontal += amount
depth += aim * amount
case "down":
aim += amount
case "up":
aim -= amount
}
}
return horizontal * depth
}
func main() {
data := parseInput("input.txt")
fmt.Println("Part 1:", PartOne(data))
fmt.Println("Part 2:", PartTwo(data))
}
+28
View File
@@ -0,0 +1,28 @@
package main
import "testing"
var testInput = []string{
"forward 5",
"down 5",
"forward 8",
"up 3",
"down 8",
"forward 2",
}
func TestPartOne(t *testing.T) {
expected := 150
got := PartOne(testInput)
if got != expected {
t.Errorf("PartOne() = %d, want %d", got, expected)
}
}
func TestPartTwo(t *testing.T) {
expected := 900
got := PartTwo(testInput)
if got != expected {
t.Errorf("PartTwo() = %d, want %d", got, expected)
}
}