First working version

This commit is contained in:
Christoph Hagen
2021-12-18 15:08:43 +01:00
parent c9853dee28
commit 49787db1aa
32 changed files with 1416 additions and 415 deletions

View File

@@ -1,6 +1,27 @@
import Foundation
extension Array {
func at(_ index: Int) -> Element? {
guard index < count else {
return nil
}
return self[index]
}
func rotatedByOne() -> [Element] {
guard !isEmpty else {
return []
}
return self[1...] + [self[0]]
}
mutating func rotateByOne() {
guard !isEmpty else {
return
}
append(removeFirst())
}
func rotated(toStartAt index: Int) -> [Element] {
guard index != 0 else {
@@ -13,3 +34,35 @@ extension Array {
sorted { converting($0) < converting($1) }
}
}
extension Array where Element: Equatable {
func index(of element: Element) -> Index {
firstIndex(of: element)!
}
}
extension Array where Element: Player {
var names: [PlayerName] {
map { $0.name }
}
func index(of player: PlayerName) -> Int {
firstIndex { $0.name == player }!
}
func player(named name: PlayerName) -> Element? {
first { $0.name == name }
}
func contains(player: PlayerName) -> Bool {
contains { $0.name == player }
}
func next(after player: Element) -> Element {
let i = index(of: player)
let newIndex = (i + 1) % maximumPlayersPerTable
return self[newIndex]
}
}