Compare commits

..

2 Commits

Author SHA1 Message Date
153db25343 fill in CheckDigit test 2023-12-04 03:14:22 +00:00
df7fa4b973 check pass for single digit 2023-12-04 03:13:59 +00:00
2 changed files with 71 additions and 6 deletions

View File

@ -34,4 +34,71 @@ func TestSymbolToBool(t *testing.T) {
func TestCheckDigit(t *testing.T) { func TestCheckDigit(t *testing.T) {
//t.Skip("skipping test") //t.Skip("skipping test")
symbols := [][]bool{
{false, false, false, false, false, false, false, false, false, false},
{false, false, false, true, false, false, false, false, false, false},
{false, false, false, false, false, false, false, false, false, false},
{false, false, false, false, false, false, true, false, false, false},
}
d1 := func() digit {
var d digit = digit{row: 0, col: 2, raw: 0, pass: false}
i := d.col - 1
for ; i < len(symbols[d.row]) && i <= d.col+1; i += 1 {
if i < 0 {
continue
}
if d.row != 0 {
if symbols[d.row-1][i] {
d.pass = true
break
}
}
if symbols[d.row][i] {
d.pass = true
break
}
if d.row != len(symbols)-1 {
if symbols[d.row+1][i] {
d.pass = true
break
}
}
}
return d
}()
d2 := func() digit {
var d digit = digit{row: 2, col: 9, raw: 0, pass: false}
i := d.col - 1
for ; i < len(symbols[d.row]) && i <= d.col+1; i += 1 {
if i < 0 {
continue
}
if d.row != 0 {
if symbols[d.row-1][i] {
d.pass = true
break
}
}
if symbols[d.row][i] {
d.pass = true
break
}
if d.row != len(symbols)-1 {
if symbols[d.row+1][i] {
d.pass = true
break
}
}
}
return d
}()
t.Run("Should pass the check", func(t *testing.T) {
assert.Equal(t, true, d1.pass)
})
t.Run("Should fail the check", func(t *testing.T) {
assert.Equal(t, false, d2.pass)
})
} }

View File

@ -12,12 +12,10 @@ func getGearRatio(row, col int) (int, error) {
continue continue
} }
for _, enginePart := range engineParts[i] { for _, enginePart := range engineParts[i] {
for _, part := range enginePart.digits { for _, digit := range enginePart.digits {
if part.col == col-1 || part.col == col || part.col == col+1 { if digit.pass && digit.col == col-1 || digit.col == col || digit.col == col+1 {
if anyTrue(enginePart.digits) { partsConsidered = append(partsConsidered, enginePart)
partsConsidered = append(partsConsidered, enginePart) break
break
}
} }
} }
} }