Skip to content

Commit

Permalink
protocol conformances
Browse files Browse the repository at this point in the history
  • Loading branch information
alexdremov committed Jan 17, 2023
1 parent 6f356ec commit ca9a3da
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 39 deletions.
42 changes: 3 additions & 39 deletions Sources/RandomTests/main.swift
Original file line number Diff line number Diff line change
Expand Up @@ -8,42 +8,6 @@
import Foundation
import TreeArray

extension Sequence {
public func kalimbaOrdered() -> TreeArray<Element> {
var kalimba: TreeArray<Element> = []
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<Element> {
var odds: TreeArray<Element> = []
var evens: TreeArray<Element> = []
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)
22 changes: 22 additions & 0 deletions Sources/TreeArray/TreeArray+CustomStringConvertible.swift
Original file line number Diff line number Diff line change
@@ -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)]"
}
}
4 changes: 4 additions & 0 deletions Sources/TreeArray/TreeArray+Equitabe.swift
Original file line number Diff line number Diff line change
Expand Up @@ -35,4 +35,8 @@ extension TreeArray: Equatable where Element: Equatable {
}
return true
}

public static func == (lhs: [Element], rhs: TreeArray) -> Bool {
rhs == lhs
}
}
16 changes: 16 additions & 0 deletions Sources/TreeArray/TreeArray+Hashable.swift
Original file line number Diff line number Diff line change
@@ -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)
}
}
}

0 comments on commit ca9a3da

Please sign in to comment.