Created
December 11, 2015 07:13
-
-
Save contacthrk/808356d4f8703cde50c4 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//: 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