mirror of
https://github.com/onyx-and-iris/aoc2024.git
synced 2025-01-10 06:40:47 +00:00
assign comparator functions to variables for readability
This commit is contained in:
parent
6e06bd5b16
commit
d321e6c977
@ -2,7 +2,7 @@ package one
|
|||||||
|
|
||||||
import "math"
|
import "math"
|
||||||
|
|
||||||
func checkWithComparator(nums []int, comparator comparator) bool {
|
func check(nums []int, comparator comparator) bool {
|
||||||
for i := 1; i < len(nums); i++ {
|
for i := 1; i < len(nums); i++ {
|
||||||
if comparator(nums, i) || !isSafe(nums[i-1], nums[i]) {
|
if comparator(nums, i) || !isSafe(nums[i-1], nums[i]) {
|
||||||
return false
|
return false
|
||||||
|
@ -31,7 +31,7 @@ func TestCheckIncreased(t *testing.T) {
|
|||||||
|
|
||||||
for name, tc := range tt {
|
for name, tc := range tt {
|
||||||
t.Run(name, func(t *testing.T) {
|
t.Run(name, func(t *testing.T) {
|
||||||
got := checkWithComparator(tc.input, cmp)
|
got := check(tc.input, cmp)
|
||||||
assert.Equal(t, tc.want, got)
|
assert.Equal(t, tc.want, got)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -62,7 +62,7 @@ func TestCheckDecreased(t *testing.T) {
|
|||||||
|
|
||||||
for name, tc := range tt {
|
for name, tc := range tt {
|
||||||
t.Run(name, func(t *testing.T) {
|
t.Run(name, func(t *testing.T) {
|
||||||
got := checkWithComparator(tc.input, cmp)
|
got := check(tc.input, cmp)
|
||||||
assert.Equal(t, tc.want, got)
|
assert.Equal(t, tc.want, got)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -23,18 +23,18 @@ func parseLines(r io.Reader) int {
|
|||||||
scanner := bufio.NewScanner(r)
|
scanner := bufio.NewScanner(r)
|
||||||
for scanner.Scan() {
|
for scanner.Scan() {
|
||||||
nums := util.IntsFromString(scanner.Text())
|
nums := util.IntsFromString(scanner.Text())
|
||||||
if check(checkWithComparator, nums, func(nums []int, i int) bool {
|
|
||||||
|
cmpIncrease := func(nums []int, i int) bool {
|
||||||
return nums[i-1] >= nums[i]
|
return nums[i-1] >= nums[i]
|
||||||
}) || check(checkWithComparator, nums, func(nums []int, i int) bool {
|
}
|
||||||
|
cmpDecrease := func(nums []int, i int) bool {
|
||||||
return nums[i-1] <= nums[i]
|
return nums[i-1] <= nums[i]
|
||||||
}) {
|
}
|
||||||
|
|
||||||
|
if check(nums, cmpIncrease) || check(nums, cmpDecrease) {
|
||||||
sum++
|
sum++
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return sum
|
return sum
|
||||||
}
|
}
|
||||||
|
|
||||||
func check(fn func([]int, comparator) bool, nums []int, comparator comparator) bool {
|
|
||||||
return fn(nums, comparator)
|
|
||||||
}
|
|
||||||
|
@ -5,7 +5,7 @@ import (
|
|||||||
"slices"
|
"slices"
|
||||||
)
|
)
|
||||||
|
|
||||||
func checkWithComparator(nums []int, comparator comparator, count int) bool {
|
func withComparator(nums []int, comparator comparator, count int) bool {
|
||||||
if count > 1 {
|
if count > 1 {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
@ -14,8 +14,8 @@ func checkWithComparator(nums []int, comparator comparator, count int) bool {
|
|||||||
if comparator(nums, i) || !isSafe(nums[i-1], nums[i]) {
|
if comparator(nums, i) || !isSafe(nums[i-1], nums[i]) {
|
||||||
count++
|
count++
|
||||||
removeFirst, removeSecond := nextLevels(nums, i)
|
removeFirst, removeSecond := nextLevels(nums, i)
|
||||||
return checkWithComparator(removeFirst, comparator, count) ||
|
return withComparator(removeFirst, comparator, count) ||
|
||||||
checkWithComparator(removeSecond, comparator, count)
|
withComparator(removeSecond, comparator, count)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -36,7 +36,7 @@ func TestIncreasedWithDampener(t *testing.T) {
|
|||||||
|
|
||||||
for name, tc := range tt {
|
for name, tc := range tt {
|
||||||
t.Run(name, func(t *testing.T) {
|
t.Run(name, func(t *testing.T) {
|
||||||
got := checkWithComparator(tc.input, cmp, 0)
|
got := withComparator(tc.input, cmp, 0)
|
||||||
assert.Equal(t, tc.want, got)
|
assert.Equal(t, tc.want, got)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -54,7 +54,7 @@ func TestDecreasedWithDampener(t *testing.T) {
|
|||||||
|
|
||||||
for name, tc := range tt {
|
for name, tc := range tt {
|
||||||
t.Run(name, func(t *testing.T) {
|
t.Run(name, func(t *testing.T) {
|
||||||
got := checkWithComparator(tc.input, cmp, 0)
|
got := withComparator(tc.input, cmp, 0)
|
||||||
assert.Equal(t, tc.want, got)
|
assert.Equal(t, tc.want, got)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -23,11 +23,15 @@ func parseLines(r io.Reader) int {
|
|||||||
scanner := bufio.NewScanner(r)
|
scanner := bufio.NewScanner(r)
|
||||||
for scanner.Scan() {
|
for scanner.Scan() {
|
||||||
nums := util.IntsFromString(scanner.Text())
|
nums := util.IntsFromString(scanner.Text())
|
||||||
if check(checkWithComparator, nums, func(nums []int, i int) bool {
|
|
||||||
|
cmpIncrease := func(nums []int, i int) bool {
|
||||||
return nums[i-1] >= nums[i]
|
return nums[i-1] >= nums[i]
|
||||||
}) || check(checkWithComparator, nums, func(nums []int, i int) bool {
|
}
|
||||||
|
cmpDecrease := func(nums []int, i int) bool {
|
||||||
return nums[i-1] <= nums[i]
|
return nums[i-1] <= nums[i]
|
||||||
}) {
|
}
|
||||||
|
|
||||||
|
if check(withComparator, nums, cmpIncrease) || check(withComparator, nums, cmpDecrease) {
|
||||||
sum++
|
sum++
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user