Skip to content

Commit 63ac2e3

Browse files
authored
Merge pull request kodecocodes#333 from emadhegab/patch-1
Updating Select Minimum Maximum to Swift 3
2 parents dd54980 + 998fc13 commit 63ac2e3

File tree

6 files changed

+113
-110
lines changed

6 files changed

+113
-110
lines changed

Select Minimum Maximum/Maximum.swift

+12-11
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,16 @@
11
/*
2-
Finds the maximum value in an array in O(n) time.
3-
*/
2+
Finds the maximum value in an array in O(n) time.
3+
*/
44

5-
func maximum<T: Comparable>(var array: [T]) -> T? {
6-
guard !array.isEmpty else {
7-
return nil
8-
}
5+
func maximum<T: Comparable>(_ array: [T]) -> T? {
6+
var array = array
7+
guard !array.isEmpty else {
8+
return nil
9+
}
910

10-
var maximum = array.removeFirst()
11-
for element in array {
12-
maximum = element > maximum ? element : maximum
13-
}
14-
return maximum
11+
var maximum = array.removeFirst()
12+
for element in array {
13+
maximum = element > maximum ? element : maximum
14+
}
15+
return maximum
1516
}

Select Minimum Maximum/Minimum.swift

+12-11
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,16 @@
11
/*
2-
Finds the minimum value in an array in O(n) time.
3-
*/
2+
Finds the minimum value in an array in O(n) time.
3+
*/
44

5-
func minimum<T: Comparable>(var array: [T]) -> T? {
6-
guard !array.isEmpty else {
7-
return nil
8-
}
5+
func minimum<T: Comparable>(_ array: [T]) -> T? {
6+
var array = array
7+
guard !array.isEmpty else {
8+
return nil
9+
}
910

10-
var minimum = array.removeFirst()
11-
for element in array {
12-
minimum = element < minimum ? element : minimum
13-
}
14-
return minimum
11+
var minimum = array.removeFirst()
12+
for element in array {
13+
minimum = element < minimum ? element : minimum
14+
}
15+
return minimum
1516
}
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,40 @@
11
/*
2-
Finds the maximum and minimum value in an array in O(n) time.
3-
*/
2+
Finds the maximum and minimum value in an array in O(n) time.
3+
*/
44

5-
func minimumMaximum<T: Comparable>(var array: [T]) -> (minimum: T, maximum: T)? {
6-
guard !array.isEmpty else {
7-
return nil
8-
}
5+
func minimumMaximum<T: Comparable>(_ array: [T]) -> (minimum: T, maximum: T)? {
6+
var array = array
7+
guard !array.isEmpty else {
8+
return nil
9+
}
910

10-
var minimum = array.first!
11-
var maximum = array.first!
11+
var minimum = array.first!
12+
var maximum = array.first!
1213

13-
let hasOddNumberOfItems = array.count % 2 != 0
14-
if hasOddNumberOfItems {
15-
array.removeFirst()
16-
}
14+
let hasOddNumberOfItems = array.count % 2 != 0
15+
if hasOddNumberOfItems {
16+
array.removeFirst()
17+
}
1718

18-
while !array.isEmpty {
19-
let pair = (array.removeFirst(), array.removeFirst())
19+
while !array.isEmpty {
20+
let pair = (array.removeFirst(), array.removeFirst())
2021

21-
if pair.0 > pair.1 {
22-
if pair.0 > maximum {
23-
maximum = pair.0
24-
}
25-
if pair.1 < minimum {
26-
minimum = pair.1
27-
}
28-
} else {
29-
if pair.1 > maximum {
30-
maximum = pair.1
31-
}
32-
if pair.0 < minimum {
33-
minimum = pair.0
34-
}
22+
if pair.0 > pair.1 {
23+
if pair.0 > maximum {
24+
maximum = pair.0
25+
}
26+
if pair.1 < minimum {
27+
minimum = pair.1
28+
}
29+
} else {
30+
if pair.1 > maximum {
31+
maximum = pair.1
32+
}
33+
if pair.0 < minimum {
34+
minimum = pair.0
35+
}
36+
}
3537
}
36-
}
37-
38-
return (minimum, maximum)
38+
39+
return (minimum, maximum)
3940
}

Select Minimum Maximum/README.markdown

+6-3
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@ Repeat this process until the all elements in the list have been processed.
2323
Here is a simple implementation in Swift:
2424

2525
```swift
26-
func minimum<T: Comparable>(var array: [T]) -> T? {
26+
func minimum<T: Comparable>(_ array: [T]) -> T? {
27+
var array = array
2728
guard !array.isEmpty else {
2829
return nil
2930
}
@@ -35,7 +36,8 @@ func minimum<T: Comparable>(var array: [T]) -> T? {
3536
return minimum
3637
}
3738

38-
func maximum<T: Comparable>(var array: [T]) -> T? {
39+
func maximum<T: Comparable>(_ array: [T]) -> T? {
40+
var array = array
3941
guard !array.isEmpty else {
4042
return nil
4143
}
@@ -89,7 +91,8 @@ The result is a minimum of `3` and a maximum of `9`.
8991
Here is a simple implementation in Swift:
9092

9193
```swift
92-
func minimumMaximum<T: Comparable>(var array: [T]) -> (minimum: T, maximum: T)? {
94+
func minimumMaximum<T: Comparable>(_ array: [T]) -> (minimum: T, maximum: T)? {
95+
var array = array
9396
guard !array.isEmpty else {
9497
return nil
9598
}
Original file line numberDiff line numberDiff line change
@@ -1,64 +1,67 @@
11
// Compare each item to find minimum
2-
func minimum<T: Comparable>(var array: [T]) -> T? {
3-
guard !array.isEmpty else {
4-
return nil
5-
}
2+
func minimum<T: Comparable>(_ array: [T]) -> T? {
3+
var array = array
4+
guard !array.isEmpty else {
5+
return nil
6+
}
67

7-
var minimum = array.removeFirst()
8-
for element in array {
9-
minimum = element < minimum ? element : minimum
10-
}
11-
return minimum
8+
var minimum = array.removeFirst()
9+
for element in array {
10+
minimum = element < minimum ? element : minimum
11+
}
12+
return minimum
1213
}
1314

1415
// Compare each item to find maximum
15-
func maximum<T: Comparable>(var array: [T]) -> T? {
16-
guard !array.isEmpty else {
17-
return nil
18-
}
16+
func maximum<T: Comparable>(_ array: [T]) -> T? {
17+
var array = array
18+
guard !array.isEmpty else {
19+
return nil
20+
}
1921

20-
var maximum = array.removeFirst()
21-
for element in array {
22-
maximum = element > maximum ? element : maximum
23-
}
24-
return maximum
22+
var maximum = array.removeFirst()
23+
for element in array {
24+
maximum = element > maximum ? element : maximum
25+
}
26+
return maximum
2527
}
2628

2729
// Compare in pairs to find minimum and maximum
28-
func minimumMaximum<T: Comparable>(var array: [T]) -> (minimum: T, maximum: T)? {
29-
guard !array.isEmpty else {
30-
return nil
31-
}
30+
func minimumMaximum<T: Comparable>(_ array: [T]) -> (minimum: T, maximum: T)? {
31+
var array = array
32+
guard !array.isEmpty else {
33+
return nil
34+
}
3235

33-
var minimum = array.first!
34-
var maximum = array.first!
36+
var minimum = array.first!
37+
var maximum = array.first!
3538

36-
let hasOddNumberOfItems = array.count % 2 != 0
37-
if hasOddNumberOfItems {
38-
array.removeFirst()
39-
}
39+
let hasOddNumberOfItems = array.count % 2 != 0
40+
if hasOddNumberOfItems {
41+
array.removeFirst()
42+
}
4043

41-
while !array.isEmpty {
42-
let pair = (array.removeFirst(), array.removeFirst())
44+
while !array.isEmpty {
45+
let pair = (array.removeFirst(), array.removeFirst())
4346

44-
if pair.0 > pair.1 {
45-
if pair.0 > maximum {
46-
maximum = pair.0
47-
}
48-
if pair.1 < minimum {
49-
minimum = pair.1
50-
}
51-
} else {
52-
if pair.1 > maximum {
53-
maximum = pair.1
54-
}
55-
if pair.0 < minimum {
56-
minimum = pair.0
57-
}
47+
if pair.0 > pair.1 {
48+
if pair.0 > maximum {
49+
maximum = pair.0
50+
}
51+
if pair.1 < minimum {
52+
minimum = pair.1
53+
}
54+
} else {
55+
if pair.1 > maximum {
56+
maximum = pair.1
57+
}
58+
if pair.0 < minimum {
59+
minimum = pair.0
60+
}
61+
}
5862
}
59-
}
6063

61-
return (minimum, maximum)
64+
return (minimum, maximum)
6265
}
6366

6467
// Test of minimum and maximum functions
@@ -72,5 +75,5 @@ result.minimum
7275
result.maximum
7376

7477
// Built-in Swift functions
75-
array.minElement()
76-
array.maxElement()
78+
array.min()
79+
array.max()

Select Minimum Maximum/SelectMinimumMaximum.playground/timeline.xctimeline

-6
This file was deleted.

0 commit comments

Comments
 (0)