39 lines
710 B
Go
39 lines
710 B
Go
package day04
|
|
|
|
import (
|
|
"crypto/md5"
|
|
"encoding/hex"
|
|
"strconv"
|
|
"strings"
|
|
"tools"
|
|
)
|
|
|
|
func findMd5SumStartsWith(secretStart string, start string) int {
|
|
var secret string
|
|
var md5sum [16]byte
|
|
counter := 0
|
|
|
|
for true {
|
|
secret = secretStart + strconv.Itoa(counter)
|
|
md5sum = md5.Sum([]byte(secret))
|
|
if strings.HasPrefix(hex.EncodeToString(md5sum[:]), start) {
|
|
return counter
|
|
}
|
|
counter++
|
|
}
|
|
|
|
return -1
|
|
}
|
|
|
|
func Part1(puzzle tools.AoCPuzzle) interface{} {
|
|
secretStart := puzzle.GetInputArray()[0]
|
|
|
|
return findMd5SumStartsWith(secretStart, "00000")
|
|
}
|
|
|
|
func Part2(puzzle tools.AoCPuzzle) interface{} {
|
|
secretStart := puzzle.GetInputArray()[0]
|
|
|
|
return findMd5SumStartsWith(secretStart, "000000")
|
|
}
|