Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // MARK: - Старая задача с собеса
- //вы работаете в офисе. Твой друг X приходит на работу в разное время и поэтому у вас редко получается пересечься. Вам дано два массива с интервалами времени, когда в офисе были вы и когда был твой друг. Нужно найти интервалы, когда вы оба были в офисе.
- //Пример:
- //["10-12", "12-16", "20-23"]
- //["13-15", "16-21"]
- //
- //Output:
- //["13-15", "16", "20-21"]
- func findZipTime(arr1: [String], arr2: [String]) -> [[Int]] {
- let arr1 = arr1.map{$0.split(separator: "-").map{Int($0)!}}.map{$0}
- let arr2 = arr2.map{ $0.split(separator: "-").map{Int($0)!}}.map{$0}
- let grouped = (arr1 + arr2).sorted{$0[0] < $1[0]}
- let groupedWithoutFirst = grouped[1..<grouped.count]
- var previous = grouped[0]
- var result = [[Int]]()
- for interval in groupedWithoutFirst {
- var common: [Int]
- if previous[1] > interval[0] {
- if interval[1] < previous[1] {
- common = interval
- } else {
- common = [interval[0], previous[1]]
- }
- result.append(common)
- } else if previous[1] == interval[0] {
- common = [interval[0]]
- result.append(common)
- }
- if previous[1] < interval[1] {
- previous = interval
- }
- }
- return result
- }
- let interval1 = ["10-12", "13-16", "20-23"]
- let interval2 = ["14-15", "16-21"]
- findZipTime(arr1: interval1, arr2: interval2)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement