First working version
This commit is contained in:
@@ -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]
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user