Skip to content

Instantly share code, notes, and snippets.

@contacthrk
Created December 11, 2015 07:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save contacthrk/808356d4f8703cde50c4 to your computer and use it in GitHub Desktop.
Save contacthrk/808356d4f8703cde50c4 to your computer and use it in GitHub Desktop.
//: Playground - noun: a place where people can play
for i in 1...5 {
print(i)
}
var range = Range(start: 1, end: 6)
var generator = range.generate()
while let i = generator.next() {
print(i)
}
class Fibo : SequenceType {
// func generate() -> FiboGenerator {
// return FiboGenerator()
// }
func generate() -> AnyGenerator<Int> {
var c = 0
var n = 1
return anyGenerator {
let ret = c
c = n
n = n + ret
return ret
}
}
}
class FiboGenerator : GeneratorType {
var c = 0 , n = 1
typealias Element = Int
func next() -> FiboGenerator.Element? {
let ret = c
c = n
n = n + ret
return ret
}
}
for i in Fibo().prefix(10) {
print(i)
}
let numbers = AnySequence { () -> AnyGenerator<Int> in
var i = 1
return anyGenerator {
return i++
}
}.lazy
var fizzes = numbers.map { ($0 % 3 == 0) ? "Fizz" : "" } // ["", "", "Fizz"]
var buzzes = numbers.map { ($0 % 5 == 0) ? "Buzz" : "" }
var sevens = numbers.map { ($0 % 7 == 0) ? "Sevens" : "" }
var pattern = zip(fizzes, buzzes).lazy.map { (fizz, buzz) in fizz+buzz }
var pattern2 = zip(pattern, sevens).lazy.map { (fizzbuzz, sevens) in fizzbuzz+sevens }
var fizzbuzz = zip(pattern2, numbers).lazy.map { (p,n) in p.isEmpty ? String(n) : p }
for i in fizzbuzz.prefix(16) {
print(i)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment