Combine AoC Repos
This commit is contained in:
48
2015/day04/main.go
Normal file
48
2015/day04/main.go
Normal file
@@ -0,0 +1,48 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"crypto/md5"
|
||||
"fmt"
|
||||
"io"
|
||||
"log"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
func main() {
|
||||
var readInp string
|
||||
for {
|
||||
_, err := fmt.Scan(&readInp)
|
||||
if err != nil {
|
||||
if err != io.EOF {
|
||||
log.Fatal(err)
|
||||
}
|
||||
break
|
||||
}
|
||||
}
|
||||
firstCoin := searchChunk(readInp, 0, 1000000000)
|
||||
fmt.Printf("\n%s%d :: %d\n", readInp, firstCoin, firstCoin)
|
||||
}
|
||||
|
||||
func searchChunk(key string, start, end int) int {
|
||||
// So we know it's still running
|
||||
for i := start; i <= end; i++ {
|
||||
coin := key + strconv.Itoa(i)
|
||||
coinMd5 := fmt.Sprintf("%x", md5.Sum([]byte(coin)))
|
||||
if isCoin(coinMd5, "000000") {
|
||||
return i
|
||||
}
|
||||
}
|
||||
return -1
|
||||
}
|
||||
|
||||
func isCoin(s string, moneyMaker string) bool {
|
||||
if len(s) < len(moneyMaker) {
|
||||
return false
|
||||
}
|
||||
for i := 0; i < len(moneyMaker); i++ {
|
||||
if s[i] != moneyMaker[i] {
|
||||
return false
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
Reference in New Issue
Block a user