Skip to content

Instantly share code, notes, and snippets.

@nisshiee
Created June 26, 2014 00:07
Show Gist options
  • Save nisshiee/b98cfaf3e952e64e8ccb to your computer and use it in GitHub Desktop.
Save nisshiee/b98cfaf3e952e64e8ccb to your computer and use it in GitHub Desktop.
// Playground - noun: a place where people can play
func fizzBuzz1(i: Int) -> String {
switch (i % 5, i % 3) {
case (0, 0):
return "FuzzBuzz"
case (0, _):
return "Buzz"
case (_, 0):
return "Fizz"
default:
return String(i)
}
}
// for s in Array(1...100).map(fizzBuzz1) { println(s) }
func fizzBuzz2(
i: Int,
fizz: String = "Fizz",
buzz: String = "Buzz"
) -> String {
switch (i % 5, i % 3) {
case (0, 0):
return fizz + buzz
case (0, _):
return buzz
case (_, 0):
return fizz
default:
return String(i)
}
}
// for i in 1...100 { println(fizzBuzz2(i)) }
func fizzBuzz3(
fizz: Int -> String = { _ in "Fizz" },
buzz: Int -> String = { _ in "Buzz" },
fizzbuzz: Int -> String = { _ in "FizzBuzz" },
other: Int -> String = { String($0) }
) -> Int -> String {
return { i in
switch (i % 5, i % 3) {
case (0, 0):
return fizzbuzz(i)
case (0, _):
return buzz(i)
case (_, 0):
return fizz(i)
default:
return other(i)
}
}
}
// for s in Array(1...100).map(fizzBuzz3()) { println(s) }
// for s in Array(1...100).map(fizzBuzz3(fizzbuzz: { String(-$0) })) { println(s) }
func fizzBuzz4(
fizzCondition: Int -> Bool = { $0 % 3 == 0 },
buzzCondition: Int -> Bool = { $0 % 5 == 0 },
fizz: Int -> String = { _ in "Fizz" },
buzz: Int -> String = { _ in "Buzz" },
fizzbuzz: Int -> String = { _ in "FizzBuzz" },
other: Int -> String = { String($0) }
) -> Int -> String {
return { i in
switch (buzzCondition(i), fizzCondition(i)) {
case (true, true):
return fizzbuzz(i)
case (true, _):
return buzz(i)
case (_, true):
return fizz(i)
default:
return other(i)
}
}
}
// for s in Array(1...100).map(fizzBuzz4()) { println(s) }
// for s in Array(1...100).map(fizzBuzz4(buzzCondition: { $0 % 7 == 0 })) { println(s) }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment