:work: Works on part 2 of day 10
This commit is contained in:
parent
0dadb796bc
commit
2661abe8db
@ -127,6 +127,92 @@ func CountAsteroidsFromPosition(field [][]int, posX, posY int) (sum int) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func Vaporized(field [][]int, posX, posY int) {
|
||||||
|
destroyed := make([]Position, 0)
|
||||||
|
degree := 0.0
|
||||||
|
// 0 bis 180 Grad positives steps X
|
||||||
|
// 180 bis 0 Grad negatives steps X
|
||||||
|
// 90 bis 270 Grad positives steps Y
|
||||||
|
// 270 bi 90 Grad negatives steps Y
|
||||||
|
|
||||||
|
for true {
|
||||||
|
|
||||||
|
// Handle fixed Values
|
||||||
|
if degree == 270 {
|
||||||
|
currentX := posX
|
||||||
|
for true {
|
||||||
|
currentX--
|
||||||
|
if currentX < 0 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
if field[posY][currentX] > 0 {
|
||||||
|
field[posY][currentX] = -1
|
||||||
|
destroyed = append(destroyed, Position{Y: posY, X: currentX})
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
degree++
|
||||||
|
} else if degree == 90 {
|
||||||
|
currentX := posX
|
||||||
|
for true {
|
||||||
|
currentX++
|
||||||
|
if len(field[posY]) <= currentX {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
if field[posY][currentX] > 0 {
|
||||||
|
field[posY][currentX] = -1
|
||||||
|
destroyed = append(destroyed, Position{Y: posY, X: currentX})
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
degree++
|
||||||
|
} else if degree == 0 {
|
||||||
|
currentY := posY
|
||||||
|
for true {
|
||||||
|
currentY--
|
||||||
|
if currentY < 0 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
if field[currentY][posX] > 0 {
|
||||||
|
field[currentY][posX] = -1
|
||||||
|
destroyed = append(destroyed, Position{Y: currentY, X: posX})
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
degree++
|
||||||
|
} else if degree == 180 {
|
||||||
|
currentY := posY
|
||||||
|
for true {
|
||||||
|
currentY++
|
||||||
|
if len(field) <= currentY {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
if field[currentY][posX] > 0 {
|
||||||
|
field[currentY][posX] = -1
|
||||||
|
destroyed = append(destroyed, Position{Y: currentY, X: posX})
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
degree++
|
||||||
|
}
|
||||||
|
|
||||||
|
if degree > 0 && degree < 90 {
|
||||||
|
currentX := posX
|
||||||
|
|
||||||
|
for ; currentX < len(field[0]); currentX++ {
|
||||||
|
for y := 0; y < len(field)-posY; y++ {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func Copy2DSlice(matrix [][]int) (duplicate [][]int) {
|
func Copy2DSlice(matrix [][]int) (duplicate [][]int) {
|
||||||
duplicate = make([][]int, len(matrix))
|
duplicate = make([][]int, len(matrix))
|
||||||
for i := range matrix {
|
for i := range matrix {
|
||||||
|
Loading…
Reference in New Issue
Block a user