|
|
|
@ -19,6 +19,19 @@ func == <T:Equatable> (tuple1:(T,T),tuple2:(T,T)) -> Bool
|
|
|
|
return (tuple1.0 == tuple2.0) && (tuple1.1 == tuple2.1)
|
|
|
|
return (tuple1.0 == tuple2.0) && (tuple1.1 == tuple2.1)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
struct GridPoint: Equatable, Comparable {
|
|
|
|
|
|
|
|
var X = 0
|
|
|
|
|
|
|
|
var Y = 0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static func == (lhs: GridPoint, rhs: GridPoint) -> Bool {
|
|
|
|
|
|
|
|
return (lhs.X == rhs.X) && (lhs.Y == rhs.Y)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static func < (lhs: GridPoint, rhs: GridPoint) -> Bool {
|
|
|
|
|
|
|
|
return lhs.Y == rhs.Y ? lhs.X < rhs.X : lhs.Y < rhs.Y
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
struct Tools {
|
|
|
|
struct Tools {
|
|
|
|
static func readFile(fromPath path: String) -> String {
|
|
|
|
static func readFile(fromPath path: String) -> String {
|
|
|
|
var retVal = ""
|
|
|
|
var retVal = ""
|
|
|
|
|