This one was an absolute beating for me. I am so bad at these sorts of problems. Ultimately I settled on a probably-not-ideal solution that crawls the graph with offsets of each variant of (+/-x,+/-y), marking nodes visited as we come across them so that we end up with a list of asteroids that we can see. Given that this is day 10, and knowing how bad I am at math, I'm assuming this is very far from the intended solution, but it works reasonably quickly and I managed to come up with it myself, so I'm not going to stress too much about it. For asteroid destruction, the best method I could come up with for finding the correct order was to implement an entire Vector class and sort by angle, which worked, but again, I can't decide if it was the intended solution or not. I should start reusing past years' codebases so I don't have to keep building a utility library from scratch.
30 lines
419 B
Go
30 lines
419 B
Go
package utilities
|
|
|
|
type Ordered interface {
|
|
Integer | Float | ~string
|
|
}
|
|
|
|
type Signed interface {
|
|
~int | ~int8 | ~int16 | ~int32 | ~int64
|
|
}
|
|
|
|
type Unsigned interface {
|
|
~uint | ~uint8 | ~uint16 | ~uint32 | ~uint64 | ~uintptr
|
|
}
|
|
|
|
type Integer interface {
|
|
Signed | Unsigned
|
|
}
|
|
|
|
type Float interface {
|
|
~float32 | ~float64
|
|
}
|
|
|
|
type Complex interface {
|
|
~complex64 | ~complex128
|
|
}
|
|
|
|
type Number interface {
|
|
Integer | Float
|
|
}
|