From 23b9d1d727aec90a076c95ff9bc5dff5bb749191 Mon Sep 17 00:00:00 2001 From: George Moschovitis Date: Sun, 18 Dec 2016 10:12:11 +0200 Subject: [PATCH 1/7] Introduced Swift Starter Package Initial implementation, one random(ish) bot provided. --- .gitignore | 1 + airesources/Swift/Model.swift | 121 +++++++++++++++++++++++++++++ airesources/Swift/Networking.swift | 85 ++++++++++++++++++++ airesources/Swift/main.swift | 25 ++++++ airesources/Swift/runGame.sh | 3 + 5 files changed, 235 insertions(+) create mode 100644 airesources/Swift/Model.swift create mode 100644 airesources/Swift/Networking.swift create mode 100644 airesources/Swift/main.swift create mode 100755 airesources/Swift/runGame.sh diff --git a/.gitignore b/.gitignore index 51e6d0ca5..23063a6f7 100644 --- a/.gitignore +++ b/.gitignore @@ -421,6 +421,7 @@ git_pull.php airesources/C++/MyBot airesources/C++/BasicBot +airesources/Swift/MyBot airesources/*/halite leaderboard.png diff --git a/airesources/Swift/Model.swift b/airesources/Swift/Model.swift new file mode 100644 index 000000000..afa68763d --- /dev/null +++ b/airesources/Swift/Model.swift @@ -0,0 +1,121 @@ +import Foundation + +public enum Direction: UInt8 { + case still = 0, north, east, south, west +} + +public struct Location { + let x: Int + let y: Int +} + +public struct Move { + public let location: Location + public let direction: Direction +} + +public struct Site { + public var owner: UInt8 + public var strength: UInt8 + public var production: UInt8 +} + +public class GameMap { + public let width: Int + public let height: Int + public var contents: [[Site]] + + public init(width: Int = 0, height: Int = 0) { + self.width = width + self.height = height + self.contents = [[Site]](repeating: [Site](repeating: Site(owner: 0, strength: 0, production: 0), count: width), count: height) + } + + public func isInBounds(location: Location) -> Bool { + return location.x < width && location.y < height + } + + public func getDistance(from location1: Location, to location2: Location) -> Int { + var dx = abs(location1.x - location2.x) + var dy = abs(location1.y - location2.y) + + if dx > width / 2 { + dx = width - dx + } + + if dy > height / 2 { + dy = height - dy + } + + return dx + dy; + } + + public func getAngle(from location1: Location, to location2: Location) -> Float { + var dx = location1.x - location2.x; + var dy = location2.y - location1.y; // reverse the y-axis. + + if dx > width - dx { + dx -= width + } + + if -dx > width + dx { + dx += width + } + + if dy > height - dy { + dy -= height + } + + if -dy > height + dy { + dy += height + } + + return atan2(Float(dy), Float(dx)) + } + + // TODO: implement with modulo + public func getLocation(location: Location, direction: Direction) -> Location { + var y = location.y + var x = location.x + + switch direction { + case .still: + break; + + case .north: + y = location.y == 0 ? height - 1 : location.y - 1 + + case .east: + x = location.x == width - 1 ? 0 : location.y + 1 + + case .south: + y = location.y == height - 1 ? 0 : location.y + 1 + + case .west: + x = location.x == 0 ? width - 1 : location.x - 1 + } + + return Location(x: x, y: y) + } + + public func getSite(location: Location, direction: Direction) -> Site { + let l = getLocation(location: location, direction: direction) + return contents[l.y][l.x] + } + + public func getSite(location: Location) -> Site { + return contents[location.y][location.x] + } + + public subscript(location: Location) -> Site { + get { + return contents[location.y][location.x] + } + } + + public subscript(y: Int, x: Int) -> Site { + get { + return contents[y][x] + } + } +} diff --git a/airesources/Swift/Networking.swift b/airesources/Swift/Networking.swift new file mode 100644 index 000000000..19f8e3cf4 --- /dev/null +++ b/airesources/Swift/Networking.swift @@ -0,0 +1,85 @@ +import Foundation + +@discardableResult +func update(gameMap: GameMap, input: String) -> GameMap { + let inputComponents = input.components(separatedBy: " ") + + var y = 0 + var x = 0 + + var index = 0 + + while y != gameMap.height { + let counter = UInt(inputComponents[index])! + let owner = UInt8(inputComponents[index + 1])! + + for _ in 1...counter { + gameMap.contents[y][x].owner = owner; + x += 1 + + if x == gameMap.width { + x = 0 + y += 1 + } + } + + index += 2 + } + + for y in 0.. String { + return readLine()! +} + +func sendString(_ string: String) { + FileHandle.standardOutput.write("\(string)\n".data(using: .utf8)!) +} + +public func getInit() -> (UInt8, GameMap) { + let tag = UInt8(getString())! + + var inputComponents = getString().components(separatedBy: " ") + let width = Int(inputComponents[0])! + let height = Int(inputComponents[1])! + + let gameMap = GameMap(width: width, height: height) + + inputComponents = getString().components(separatedBy: " ") + var index = 0 + for y in 0.. 4 ? 0 : random)! + moves.append(Move(location: location, direction: direction)) + } + + } + } + + sendFrame(moves: moves) +} diff --git a/airesources/Swift/runGame.sh b/airesources/Swift/runGame.sh new file mode 100755 index 000000000..43c173b97 --- /dev/null +++ b/airesources/Swift/runGame.sh @@ -0,0 +1,3 @@ +#!/bin/sh +swiftc -O Model.swift Networking.swift main.swift -o MyBot +./halite -d "30 30" "./MyBot" "./MyBot" From dc2caed938e14e478d8dc25ec39777af96ec6bf9 Mon Sep 17 00:00:00 2001 From: George Moschovitis Date: Sun, 18 Dec 2016 10:44:09 +0200 Subject: [PATCH 2/7] Improved the API --- airesources/Swift/Networking.swift | 18 ++++++++++-------- airesources/Swift/main.swift | 7 +++---- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/airesources/Swift/Networking.swift b/airesources/Swift/Networking.swift index 19f8e3cf4..6431951d9 100644 --- a/airesources/Swift/Networking.swift +++ b/airesources/Swift/Networking.swift @@ -1,7 +1,9 @@ import Foundation +fileprivate var gameMap: GameMap! + @discardableResult -func update(gameMap: GameMap, input: String) -> GameMap { +func deserializeGameMap(input: String) -> GameMap { let inputComponents = input.components(separatedBy: " ") var y = 0 @@ -45,14 +47,14 @@ func sendString(_ string: String) { FileHandle.standardOutput.write("\(string)\n".data(using: .utf8)!) } -public func getInit() -> (UInt8, GameMap) { +public func getInit() -> UInt8 { let tag = UInt8(getString())! var inputComponents = getString().components(separatedBy: " ") let width = Int(inputComponents[0])! let height = Int(inputComponents[1])! - let gameMap = GameMap(width: width, height: height) + gameMap = GameMap(width: width, height: height) inputComponents = getString().components(separatedBy: " ") var index = 0 @@ -63,17 +65,18 @@ public func getInit() -> (UInt8, GameMap) { } } - update(gameMap: gameMap, input: getString()) + deserializeGameMap(input: getString()) - return (tag, gameMap) + return tag } public func sendInit(name: String) { sendString(name) } -public func getFrame(gameMap: inout GameMap) { - update(gameMap: gameMap, input: getString()) +public func getFrame() -> GameMap { + deserializeGameMap(input: getString()) + return gameMap } public func sendFrame(moves: [Move]) { @@ -82,4 +85,3 @@ public func sendFrame(moves: [Move]) { sendString(serialized) } - diff --git a/airesources/Swift/main.swift b/airesources/Swift/main.swift index f8a49e41f..e4068b0e5 100644 --- a/airesources/Swift/main.swift +++ b/airesources/Swift/main.swift @@ -1,23 +1,22 @@ import Foundation -var (tag, gameMap) = getInit() +let tag = getInit() sendInit(name: "MyBot-Swift") while true { - getFrame(gameMap: &gameMap) + let gameMap = getFrame() var moves = [Move]() for y in 0.. 4 ? 0 : random)! moves.append(Move(location: location, direction: direction)) } - } } From 6ca3d4654c9d8d042599cbb1a00023cef95ff000 Mon Sep 17 00:00:00 2001 From: George Moschovitis Date: Sun, 18 Dec 2016 18:47:33 +0200 Subject: [PATCH 3/7] Provide RandomBot and MyBot The directory is also better organized now. --- .../Swift/{ => Sources/Halite}/Model.swift | 0 .../{ => Sources/Halite}/Networking.swift | 0 .../Swift/{ => Sources/MyBot}/main.swift | 0 .../Swift/Sources/RandomBot/main.swift | 23 +++++++++++++++++++ airesources/Swift/runGame.sh | 5 ++-- 5 files changed, 26 insertions(+), 2 deletions(-) rename airesources/Swift/{ => Sources/Halite}/Model.swift (100%) rename airesources/Swift/{ => Sources/Halite}/Networking.swift (100%) rename airesources/Swift/{ => Sources/MyBot}/main.swift (100%) create mode 100644 airesources/Swift/Sources/RandomBot/main.swift diff --git a/airesources/Swift/Model.swift b/airesources/Swift/Sources/Halite/Model.swift similarity index 100% rename from airesources/Swift/Model.swift rename to airesources/Swift/Sources/Halite/Model.swift diff --git a/airesources/Swift/Networking.swift b/airesources/Swift/Sources/Halite/Networking.swift similarity index 100% rename from airesources/Swift/Networking.swift rename to airesources/Swift/Sources/Halite/Networking.swift diff --git a/airesources/Swift/main.swift b/airesources/Swift/Sources/MyBot/main.swift similarity index 100% rename from airesources/Swift/main.swift rename to airesources/Swift/Sources/MyBot/main.swift diff --git a/airesources/Swift/Sources/RandomBot/main.swift b/airesources/Swift/Sources/RandomBot/main.swift new file mode 100644 index 000000000..bf97e6dd3 --- /dev/null +++ b/airesources/Swift/Sources/RandomBot/main.swift @@ -0,0 +1,23 @@ +import Foundation + +let tag = getInit() + +sendInit(name: "RandomBot-Swift") + +while true { + let gameMap = getFrame() + + var moves = [Move]() + + for y in 0.. Date: Sun, 18 Dec 2016 18:47:33 +0200 Subject: [PATCH 4/7] Provide RandomBot and MyBot The directory is also better organized now. --- airesources/Swift/RandomBot | Bin 0 -> 84396 bytes .../Swift/{ => Sources/Halite}/Model.swift | 0 .../{ => Sources/Halite}/Networking.swift | 0 .../Swift/{ => Sources/MyBot}/main.swift | 0 .../Swift/Sources/RandomBot/main.swift | 23 ++++++++++++++++++ airesources/Swift/runGame.sh | 5 ++-- 6 files changed, 26 insertions(+), 2 deletions(-) create mode 100755 airesources/Swift/RandomBot rename airesources/Swift/{ => Sources/Halite}/Model.swift (100%) rename airesources/Swift/{ => Sources/Halite}/Networking.swift (100%) rename airesources/Swift/{ => Sources/MyBot}/main.swift (100%) create mode 100644 airesources/Swift/Sources/RandomBot/main.swift diff --git a/airesources/Swift/RandomBot b/airesources/Swift/RandomBot new file mode 100755 index 0000000000000000000000000000000000000000..5ad52df5770ed596c0136e6f9d3f8b584db356c4 GIT binary patch literal 84396 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 literal 0 HcmV?d00001 diff --git a/airesources/Swift/Model.swift b/airesources/Swift/Sources/Halite/Model.swift similarity index 100% rename from airesources/Swift/Model.swift rename to airesources/Swift/Sources/Halite/Model.swift diff --git a/airesources/Swift/Networking.swift b/airesources/Swift/Sources/Halite/Networking.swift similarity index 100% rename from airesources/Swift/Networking.swift rename to airesources/Swift/Sources/Halite/Networking.swift diff --git a/airesources/Swift/main.swift b/airesources/Swift/Sources/MyBot/main.swift similarity index 100% rename from airesources/Swift/main.swift rename to airesources/Swift/Sources/MyBot/main.swift diff --git a/airesources/Swift/Sources/RandomBot/main.swift b/airesources/Swift/Sources/RandomBot/main.swift new file mode 100644 index 000000000..bf97e6dd3 --- /dev/null +++ b/airesources/Swift/Sources/RandomBot/main.swift @@ -0,0 +1,23 @@ +import Foundation + +let tag = getInit() + +sendInit(name: "RandomBot-Swift") + +while true { + let gameMap = getFrame() + + var moves = [Move]() + + for y in 0.. Date: Sun, 18 Dec 2016 18:49:44 +0200 Subject: [PATCH 5/7] Removed compiled RandomBot --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 23063a6f7..9961c1b05 100644 --- a/.gitignore +++ b/.gitignore @@ -422,6 +422,7 @@ git_pull.php airesources/C++/MyBot airesources/C++/BasicBot airesources/Swift/MyBot +airesources/Swift/RandomBot airesources/*/halite leaderboard.png From c085260d307a13cdc6836c91e03a853b4a232a52 Mon Sep 17 00:00:00 2001 From: George Moschovitis Date: Sun, 18 Dec 2016 18:49:44 +0200 Subject: [PATCH 6/7] Removed compiled RandomBot --- .gitignore | 1 + airesources/Swift/RandomBot | Bin 84396 -> 0 bytes 2 files changed, 1 insertion(+) delete mode 100755 airesources/Swift/RandomBot diff --git a/.gitignore b/.gitignore index 23063a6f7..9961c1b05 100644 --- a/.gitignore +++ b/.gitignore @@ -422,6 +422,7 @@ git_pull.php airesources/C++/MyBot airesources/C++/BasicBot airesources/Swift/MyBot +airesources/Swift/RandomBot airesources/*/halite leaderboard.png diff --git a/airesources/Swift/RandomBot b/airesources/Swift/RandomBot deleted file mode 100755 index 5ad52df5770ed596c0136e6f9d3f8b584db356c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 84396 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 From 9ea23acb88ac044bc7a2a97586682f9eb3c59882 Mon Sep 17 00:00:00 2001 From: George Moschovitis Date: Sun, 18 Dec 2016 18:59:10 +0200 Subject: [PATCH 7/7] Added LANGUAGE file --- airesources/Swift/LANGUAGE | 1 + 1 file changed, 1 insertion(+) create mode 100644 airesources/Swift/LANGUAGE diff --git a/airesources/Swift/LANGUAGE b/airesources/Swift/LANGUAGE new file mode 100644 index 000000000..c1390abfe --- /dev/null +++ b/airesources/Swift/LANGUAGE @@ -0,0 +1 @@ +Swift