diff options
| author | omagdy <omar.professional8777@gmail.com> | 2024-12-12 18:31:50 +0200 |
|---|---|---|
| committer | omagdy <omar.professional8777@gmail.com> | 2024-12-12 18:31:50 +0200 |
| commit | 0cb12b95ef11fe283731e862e3953f27eeea8757 (patch) | |
| tree | 66d54e44b821073ddf6381bf9b3d9d55b3d86c31 /2024/go/src/day2/main.go | |
| parent | 93cc02c058f39d370472dfe7d667ae7a2f6396b3 (diff) | |
| download | aoc-0cb12b95ef11fe283731e862e3953f27eeea8757.tar.xz aoc-0cb12b95ef11fe283731e862e3953f27eeea8757.zip | |
Day 11 done.
Diffstat (limited to '2024/go/src/day2/main.go')
| -rw-r--r-- | 2024/go/src/day2/main.go | 99 |
1 files changed, 0 insertions, 99 deletions
diff --git a/2024/go/src/day2/main.go b/2024/go/src/day2/main.go deleted file mode 100644 index b06bed4..0000000 --- a/2024/go/src/day2/main.go +++ /dev/null @@ -1,99 +0,0 @@ -package main - -import ( - "fmt" - "os" - "strconv" - "strings" -) - -func FileRead(path string) string { - file, err := os.ReadFile(path) - if err != nil { - fmt.Println("Couldn't Read file: ", err) - } - return string(file) - -} - -func parseInput(data string) [][]int { - var reports [][]int - for _, line := range strings.Split(data, "\n") { - var report []int - if len(line) > 0 { - elements := strings.Split(line, " ") - for _, ele := range elements { - e, err := strconv.Atoi(ele) - if err != nil { - fmt.Println("Couldn't parse string to int ", err) - } - report = append(report, e) - } - reports = append(reports, report) - } - } - return reports -} - -func isSafe(report []int) bool { - increasing := report[0] < report[1] - flag := true - for i := range len(report) - 1 { - if increasing { - diff := report[i+1] - report[i] - if report[i] >= report[i+1] || diff > 3 || diff < 1 { - flag = false - break - } - } else { - diff := report[i] - report[i+1] - if report[i] <= report[i+1] || diff > 3 || diff < 1 { - flag = false - break - } - } - } - return flag -} - -func solve_part_one(data string) int { - reports := parseInput(data) - cnt := 0 - for _, report := range reports { - if isSafe(report) { - cnt += 1 - } - } - return cnt -} - -func solve_part_two(data string) int { - reports := parseInput(data) - cnt := 0 - for _, report := range reports { - if isSafe(report) { - cnt += 1 - } else { - for i := range len(report) { - reportTmp := make([]int, len(report)) - copy(reportTmp, report) - newReport := append(reportTmp[:i], reportTmp[i+1:]...) - if isSafe(newReport) { - cnt += 1 - break - } - } - } - } - return cnt -} - -func main() { - test := FileRead("../input/day2.test") - prod := FileRead("../input/day2.prod") - - fmt.Println("Part_1 test: ", solve_part_one(test)) - fmt.Println("Part_1 prod: ", solve_part_one(prod)) - fmt.Println("Part_2 test: ", solve_part_two(test)) - fmt.Println("Part_2 prod: ", solve_part_two(prod)) -} |
