Day2, readFile refactor
This commit is contained in:
parent
fca5536f60
commit
94fe097922
10
day1/day1.go
10
day1/day1.go
|
@ -11,12 +11,16 @@ import (
|
||||||
func main() {
|
func main() {
|
||||||
args := os.Args[1:]
|
args := os.Args[1:]
|
||||||
input, err := helper.GetInput(args[0])
|
input, err := helper.GetInput(args[0])
|
||||||
|
fmt.Println(input)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
}
|
}
|
||||||
fmt.Println(day1(input))
|
numbers, err := helper.MapToNumber(input)
|
||||||
fmt.Println(day1_part2(input))
|
if err != nil {
|
||||||
|
fmt.Println(err)
|
||||||
|
}
|
||||||
|
fmt.Println(day1(numbers))
|
||||||
|
fmt.Println(day1_part2(numbers))
|
||||||
}
|
}
|
||||||
|
|
||||||
func day1(numbers []int) int {
|
func day1(numbers []int) int {
|
||||||
|
|
|
@ -0,0 +1,53 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"AoC2020/helper"
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
args := os.Args[1:]
|
||||||
|
input, err := helper.GetInput(args[0])
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println(err)
|
||||||
|
}
|
||||||
|
count := 0
|
||||||
|
countPart2 := 0
|
||||||
|
for _, row := range input {
|
||||||
|
if checkPassword(disassembleRow(row)) {
|
||||||
|
count ++
|
||||||
|
}
|
||||||
|
if checkPasswordPart2(disassembleRow(row)) {
|
||||||
|
countPart2 ++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fmt.Println(count)
|
||||||
|
fmt.Println(countPart2)
|
||||||
|
}
|
||||||
|
|
||||||
|
func disassembleRow(row string) (int, int, string, string) {
|
||||||
|
fields := strings.Split(row, " ")
|
||||||
|
scope := strings.Split(fields[0], "-")
|
||||||
|
min, _ := strconv.Atoi(scope[0])
|
||||||
|
max, _ := strconv.Atoi(scope[1])
|
||||||
|
return min, max, string(fields[1][0]), fields[2]
|
||||||
|
}
|
||||||
|
|
||||||
|
func checkPassword(min int, max int, char string, password string) bool {
|
||||||
|
occurence := strings.Count(password, char)
|
||||||
|
return (min <= occurence && occurence <= max)
|
||||||
|
}
|
||||||
|
|
||||||
|
func checkPasswordPart2(p1 int, p2 int, char string, password string) bool {
|
||||||
|
count := 0
|
||||||
|
if string(password[p1 - 1]) == char {
|
||||||
|
count++
|
||||||
|
}
|
||||||
|
if string(password[p2 - 1]) == char {
|
||||||
|
count ++
|
||||||
|
}
|
||||||
|
return count == 1
|
||||||
|
}
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,3 @@
|
||||||
|
1-3 a: abcde
|
||||||
|
1-3 b: cdefg
|
||||||
|
2-9 c: ccccccccc
|
|
@ -0,0 +1,28 @@
|
||||||
|
package helper
|
||||||
|
|
||||||
|
import (
|
||||||
|
"io/ioutil"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
func GetInput(filename string) ([]string, error) {
|
||||||
|
content, err := ioutil.ReadFile(filename)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
lines := strings.Split(string(content), "\n")
|
||||||
|
return lines, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func MapToNumber(strings []string) ([]int, error) {
|
||||||
|
var numbers []int
|
||||||
|
for _, line := range strings {
|
||||||
|
number, err := strconv.Atoi(line)
|
||||||
|
if err != nil {
|
||||||
|
return numbers, err
|
||||||
|
}
|
||||||
|
numbers = append(numbers, number)
|
||||||
|
}
|
||||||
|
return numbers, nil
|
||||||
|
}
|
Loading…
Reference in New Issue