|
|
@ -4,7 +4,18 @@ extension Board {
|
|
|
|
public func display(winCells: [Coords]) -> String {
|
|
|
|
public func display(winCells: [Coords]) -> String {
|
|
|
|
var str = String()
|
|
|
|
var str = String()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let rows = Self.numbers(size: self.rows)
|
|
|
|
|
|
|
|
let columns = Self.numbers(size: self.columns)
|
|
|
|
|
|
|
|
|
|
|
|
for row in 0..<self.rows {
|
|
|
|
for row in 0..<self.rows {
|
|
|
|
|
|
|
|
if row == 0 {
|
|
|
|
|
|
|
|
str += String(repeating: " ", count: rows.size)
|
|
|
|
|
|
|
|
str += columns.nums.joined()
|
|
|
|
|
|
|
|
str += "\n"
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
str += rows.nums[row]
|
|
|
|
|
|
|
|
|
|
|
|
for col in 0..<self.columns {
|
|
|
|
for col in 0..<self.columns {
|
|
|
|
let coord = Coords(col, row)
|
|
|
|
let coord = Coords(col, row)
|
|
|
|
|
|
|
|
|
|
|
@ -15,7 +26,8 @@ extension Board {
|
|
|
|
case (.B, true): "🟨"
|
|
|
|
case (.B, true): "🟨"
|
|
|
|
default: "⚪"
|
|
|
|
default: "⚪"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
str += char
|
|
|
|
|
|
|
|
|
|
|
|
str += String(repeating: " ", count: columns.size - 2) + char
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
str += "\n"
|
|
|
|
str += "\n"
|
|
|
@ -23,6 +35,12 @@ extension Board {
|
|
|
|
|
|
|
|
|
|
|
|
return str
|
|
|
|
return str
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private static func numbers(size: Int) -> (nums: [String], size: Int) {
|
|
|
|
|
|
|
|
let elems = Array((1...size).map { String($0) })
|
|
|
|
|
|
|
|
let size = max(2, elems.lazy.map { $0.count }.max() ?? 0)
|
|
|
|
|
|
|
|
return (nums: elems.map { String(repeating: " ", count: size - $0.count) + $0 }, size: size )
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
extension Board: CustomStringConvertible, CustomDebugStringConvertible {
|
|
|
|
extension Board: CustomStringConvertible, CustomDebugStringConvertible {
|
|
|
|