Skip to content

Instantly share code, notes, and snippets.

@oisdk
Created June 11, 2015 00:35
Show Gist options
  • Save oisdk/9478dfa402c74b6507cd to your computer and use it in GitHub Desktop.
Save oisdk/9478dfa402c74b6507cd to your computer and use it in GitHub Desktop.
extension IntegerType {
func digits() -> [Self] {
var runner = self
return anyGenerator {
defer { runner /= 10 }
return runner == 0 ? nil : runner % 10
}.reverse()
}
func digits(base: Self) -> [Self] {
var runner = self
return anyGenerator {
defer { runner /= base }
return runner == 0 ? nil : runner % base
}.reverse()
}
}
extension SequenceType {
func chunk(n: Int) -> AnyGenerator<[Generator.Element]> {
var (g, count) = (self.generate(), n + 1)
let innerGen = anyGenerator{ count++ == n ? nil : g.next() }
return anyGenerator {
count -= (n + 1)
guard count == 0 else {return nil}
let ar = Array(innerGen)
guard !ar.isEmpty else {return nil}
return ar
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment