Skip to content

Commit 5ddf933

Browse files
authored
update to match source
1 parent b8d668d commit 5ddf933

File tree

1 file changed

+14
-19
lines changed

1 file changed

+14
-19
lines changed

Select Minimum Maximum/SelectMinimumMaximum.playground/Contents.swift

Lines changed: 14 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,44 @@
11
// Compare each item to find minimum
22
func minimum<T: Comparable>(_ array: [T]) -> T? {
3-
var array = array
43
guard !array.isEmpty else {
54
return nil
65
}
7-
8-
var minimum = array.removeFirst()
9-
for element in array {
6+
7+
var minimum = array.first!
8+
for element in array.dropFirst() {
109
minimum = element < minimum ? element : minimum
1110
}
1211
return minimum
1312
}
1413

1514
// Compare each item to find maximum
1615
func maximum<T: Comparable>(_ array: [T]) -> T? {
17-
var array = array
1816
guard !array.isEmpty else {
1917
return nil
2018
}
21-
22-
var maximum = array.removeFirst()
23-
for element in array {
19+
20+
var maximum = array.first!
21+
for element in array.dropFirst() {
2422
maximum = element > maximum ? element : maximum
2523
}
2624
return maximum
2725
}
2826

2927
// Compare in pairs to find minimum and maximum
3028
func minimumMaximum<T: Comparable>(_ array: [T]) -> (minimum: T, maximum: T)? {
31-
var array = array
3229
guard !array.isEmpty else {
3330
return nil
3431
}
35-
32+
3633
var minimum = array.first!
3734
var maximum = array.first!
38-
35+
36+
// if 'array' has an odd number of items, let 'minimum' or 'maximum' deal with the leftover
3937
let hasOddNumberOfItems = array.count % 2 != 0
40-
if hasOddNumberOfItems {
41-
array.removeFirst()
42-
}
43-
44-
while !array.isEmpty {
45-
let pair = (array.removeFirst(), array.removeFirst())
46-
38+
let start = hasOddNumberOfItems ? 1 : 0
39+
for i in stride(from: start, to: array.count, by: 2) {
40+
let pair = (array[i], array[i+1])
41+
4742
if pair.0 > pair.1 {
4843
if pair.0 > maximum {
4944
maximum = pair.0
@@ -60,7 +55,7 @@ func minimumMaximum<T: Comparable>(_ array: [T]) -> (minimum: T, maximum: T)? {
6055
}
6156
}
6257
}
63-
58+
6459
return (minimum, maximum)
6560
}
6661

0 commit comments

Comments
 (0)