diff --git a/Sources/RandomTests/main.swift b/Sources/RandomTests/main.swift index 1b222b9..d804801 100644 --- a/Sources/RandomTests/main.swift +++ b/Sources/RandomTests/main.swift @@ -8,42 +8,6 @@ import Foundation import TreeArray -extension Sequence { - public func kalimbaOrdered() -> TreeArray { - var kalimba: TreeArray = [] - kalimba.reserveCapacity(underestimatedCount) - var insertAtStart = false - for element in self { - if insertAtStart { - kalimba.insert(element, at: 0) - } else { - kalimba.append(element) - } - insertAtStart.toggle() - } - return kalimba - } - - public func kalimbaOrdered3() -> TreeArray { - var odds: TreeArray = [] - var evens: TreeArray = [] - odds.reserveCapacity(underestimatedCount) - evens.reserveCapacity(underestimatedCount / 2) - var insertAtStart = false - for element in self { - if insertAtStart { - odds.append(element) - } else { - evens.append(element) - } - insertAtStart.toggle() - } - odds.reverse() - odds.append(contentsOf: evens) - return odds - } -} - -var arr = Array(0...10000000).shuffled() -print(arr.kalimbaOrdered3()) - +var foo: TreeArray = [1, 2, 3, 4, 5] +foo.insert(0, at: 0) +print(foo.hashValue) diff --git a/Sources/TreeArray/TreeArray+CustomStringConvertible.swift b/Sources/TreeArray/TreeArray+CustomStringConvertible.swift new file mode 100644 index 0000000..32411f0 --- /dev/null +++ b/Sources/TreeArray/TreeArray+CustomStringConvertible.swift @@ -0,0 +1,22 @@ +// +// File.swift +// +// +// Created by Alex Dremov on 18.01.2023. +// + +import Foundation + +extension TreeArray: CustomStringConvertible { + public var description: String { + var result = "" + result.reserveCapacity(size) + for (i, elem) in self.enumerated() { + result += "\(elem)" + if i + 1 != size { + result += ", " + } + } + return "[\(result)]" + } +} diff --git a/Sources/TreeArray/TreeArray+Equitabe.swift b/Sources/TreeArray/TreeArray+Equitabe.swift index ae8427c..dcb055a 100755 --- a/Sources/TreeArray/TreeArray+Equitabe.swift +++ b/Sources/TreeArray/TreeArray+Equitabe.swift @@ -35,4 +35,8 @@ extension TreeArray: Equatable where Element: Equatable { } return true } + + public static func == (lhs: [Element], rhs: TreeArray) -> Bool { + rhs == lhs + } } diff --git a/Sources/TreeArray/TreeArray+Hashable.swift b/Sources/TreeArray/TreeArray+Hashable.swift new file mode 100644 index 0000000..142fe86 --- /dev/null +++ b/Sources/TreeArray/TreeArray+Hashable.swift @@ -0,0 +1,16 @@ +// +// File.swift +// +// +// Created by Alex Dremov on 18.01.2023. +// + +import Foundation + +extension TreeArray: Hashable where Element: Hashable { + public func hash(into hasher: inout Hasher) { + for (i, elem) in self.enumerated() { + hasher.combine((i + 1) ^ elem.hashValue) + } + } +}