Skip to content

Instantly share code, notes, and snippets.

@yashigani
Last active August 29, 2015 14:12
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 yashigani/a57a0cc55e986b43e213 to your computer and use it in GitHub Desktop.
Save yashigani/a57a0cc55e986b43e213 to your computer and use it in GitHub Desktop.
FizzBuzz by swift
// FizzBuzz by Enum
enum FizzBuzz {
case Fizz, Buzz, FizzBuzz, Other(Int)
var state: String {
switch self {
case .Fizz: return "Fizz"
case .Buzz: return "Buzz"
case .FizzBuzz: return "FizzBuzz"
case .Other(let i): return "\(i)"
}
}
}
func judge(i: Int) -> FizzBuzz {
switch (i % 3, i % 5) {
case (0, 0): return .FizzBuzz
case (0, _): return .Fizz
case (_, 0): return .Buzz
default: return .Other(i)
}
}
func generate(to: Int) -> [FizzBuzz] {
switch to {
case 1: return [judge(to)]
default: return generate(to - 1) + [judge(to)]
}
}
generate(15).map { println($0.state) }
// FizzBuzz by extension of Int
extension Int {
var fizzBuzz: String {
switch (self % 3, self % 5) {
case (0, 0): return "FizzBuzz"
case (0, _): return "Fizz"
case (_, 0): return "Buzz"
default: return "\(self)"
}
}
}
func gen(x: Int) -> [String] {
switch x {
case 1: return [x.fizzBuzz]
default: return gen(x - 1) + [x.fizzBuzz]
}
}
gen(15).map { println($0) }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment