Skip to content

Instantly share code, notes, and snippets.

@dkarbayev
Last active February 10, 2018 00:51
Show Gist options
  • Save dkarbayev/cc17fae5219fb8bddb4ae23f52c34ef4 to your computer and use it in GitHub Desktop.
Save dkarbayev/cc17fae5219fb8bddb4ae23f52c34ef4 to your computer and use it in GitHub Desktop.
Slicing sequence by predicate
extension Sequence {
func sliced(by predicate: (Element, Element) -> Bool) -> [[Element]] {
var result = [[Element]]()
for element in self {
guard let previous = result.last?.last, !predicate(previous, element) else { result.append([element]); continue }
result[result.count - 1].append(element)
}
return result
}
}
let numbers = [0, 0, 0, 2, 2, 3, 5, 0].sliced(by: !=)
print(numbers)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment