Skip to content
This repository was archived by the owner on Aug 17, 2022. It is now read-only.

Commit 4ca17ca

Browse files
committed
Reworked and made correct :)
1 parent 3c30980 commit 4ca17ca

File tree

1 file changed

+23
-19
lines changed

1 file changed

+23
-19
lines changed
Lines changed: 23 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,34 @@
11
import Foundation
22

33
let brandonShegaClockEntry = CodeChallengeEntry<ClockChallenge>(name: "brandonshega") { input in
4-
let df = DateFormatter()
5-
df.dateFormat = "HH:MM:SS"
6-
guard let date = df.date(from: input) else { return (0, 0, 0) }
7-
let dateComps = Calendar.current.dateComponents([.hour, .minute, .second], from: date)
8-
return dateComps.handsInAngles
4+
let clock = Clock(for: input)
5+
return clock.timeInAngles
96
}
107

11-
fileprivate extension DateComponents {
12-
var hoursToAngle: Int {
13-
guard let hour = hour else { return 0 }
14-
return hour * 30
15-
}
16-
17-
var minutesToAngle: Int {
18-
guard let minute = minute else { return 0 }
19-
return minute * 6
20-
}
8+
fileprivate struct Clock {
9+
let hour: Double
10+
let minute: Double
11+
let second: Double
2112

22-
var secondsToAngle: Int {
23-
guard let second = second else { return 0 }
24-
return second * 6
13+
init(for date: String) {
14+
let df = DateFormatter()
15+
df.dateFormat = "hh:mm:ss"
16+
guard let date = df.date(from: date) else { fatalError("Bad Time") }
17+
let dateComps = Calendar.current.dateComponents([.hour, .minute, .second], from: date)
18+
guard
19+
let hour = dateComps.hour,
20+
let minute = dateComps.minute,
21+
let second = dateComps.second else { fatalError("Bad Time") }
22+
self.hour = Double(hour)
23+
self.minute = Double(minute)
24+
self.second = Double(second)
2525
}
2626

27-
var handsInAngles: (Int, Int, Int) {
27+
var timeInAngles: (Int, Int, Int) {
28+
let hoursToAngle = Int(hour * 30 + (minute/60 * 30))
29+
let minutesToAngle = Int(minute * 6 + (second/60 * 6))
30+
let secondsToAngle = Int(second * 6)
2831
return (hoursToAngle, minutesToAngle, secondsToAngle)
2932
}
33+
3034
}

0 commit comments

Comments
 (0)