This commit is contained in:
Stefan Harmuth 2021-01-17 08:23:03 +01:00
parent 680954aab4
commit 1859239c36
4 changed files with 60 additions and 1 deletions

52
day05/day.go Normal file
View File

@ -0,0 +1,52 @@
package day05
import (
"crypto/md5"
"fmt"
"strconv"
"tools"
)
func Part1(puzzle tools.AoCPuzzle) interface{} {
doorId := puzzle.GetInputArray()[0]
password := ""
i := 0
for {
chk := doorId + strconv.Itoa(i)
chksum := fmt.Sprintf("%x", md5.Sum([]byte(chk)))
if chksum[0:5] == "00000" {
password += string(chksum[5])
}
if len(password) == 8 {
break
}
i++
}
return password
}
func Part2(puzzle tools.AoCPuzzle) interface{} {
doorId := puzzle.GetInputArray()[0]
password := make([]byte, 8)
i := 0
cCount := 0
for {
chk := doorId + strconv.Itoa(i)
chksum := fmt.Sprintf("%x", md5.Sum([]byte(chk)))
if chksum[0:5] == "00000" {
if chksum[5] >= '0' && chksum[5] <= '7' && password[chksum[5]-48] == 0 {
password[chksum[5]-48] = chksum[6]
cCount++
}
}
if cCount == 8 {
break
}
i++
}
return string(password)
}

1
inputs/5 Normal file
View File

@ -0,0 +1 @@
wtnhxymk

1
inputs/5_test Normal file
View File

@ -0,0 +1 @@
abc

View File

@ -5,6 +5,7 @@ import (
"aoc2016/day02" "aoc2016/day02"
"aoc2016/day03" "aoc2016/day03"
"aoc2016/day04" "aoc2016/day04"
"aoc2016/day05"
"flag" "flag"
"fmt" "fmt"
"os" "os"
@ -26,7 +27,7 @@ func initDayFunctions() {
2: {1: day02.Part1, 2: day02.Part2}, 2: {1: day02.Part1, 2: day02.Part2},
3: {1: day03.Part1, 2: day03.Part2}, 3: {1: day03.Part1, 2: day03.Part2},
4: {1: day04.Part1, 2: day04.Part2}, 4: {1: day04.Part1, 2: day04.Part2},
// 5: {1: day05.Part1, 2: day05.Part2}, 5: {1: day05.Part1, 2: day05.Part2},
// 6: {1: day06.Part1, 2: day06.Part2}, // 6: {1: day06.Part1, 2: day06.Part2},
// 7: {1: day07.Part1, 2: day07.Part2}, // 7: {1: day07.Part1, 2: day07.Part2},
// 8: {1: day08.Part1, 2: day08.Part2}, // 8: {1: day08.Part1, 2: day08.Part2},
@ -43,6 +44,10 @@ func initDayFunctions() {
// 19: {1: day19.Part1, 2: day19.Part2}, // 19: {1: day19.Part1, 2: day19.Part2},
// 20: {1: day20.Part1, 2: day20.Part2}, // 20: {1: day20.Part1, 2: day20.Part2},
// 21: {1: day21.Part1, 2: day21.Part2}, // 21: {1: day21.Part1, 2: day21.Part2},
// 22: {1: day22.Part1, 2: day22.Part2},
// 23: {1: day23.Part1, 2: day23.Part2},
// 24: {1: day24.Part1, 2: day24.Part2},
// 25: {1: day25.Part1, 2: day25.Part2},
} }
} }