Skip to content

Instantly share code, notes, and snippets.

@YusukeHosonuma
Last active August 29, 2015 14:23
Show Gist options
  • Save YusukeHosonuma/57f2fc0d26e10da4400f to your computer and use it in GitHub Desktop.
Save YusukeHosonuma/57f2fc0d26e10da4400f to your computer and use it in GitHub Desktop.
SwiftでFizzBuzzと世界のナベアツ
import UIKit
extension Array {
func forEach(f: T -> ()) {
for n:T in self {
f(n)
}
}
}
// --- FizzBuzz
enum FizzBuzzType {
case Fizz, Buzz, FizzBuzz, Other(number: Int)
static func fromNumber(n: Int) -> FizzBuzzType {
let fizz = n % 3 == 0
let buzz = n % 5 == 0
if (fizz && buzz) {
return .FizzBuzz
} else if (fizz) {
return .Fizz
} else if (buzz) {
return .Buzz
} else {
return .Other(number: n)
}
}
}
func fizzBuzz(n: Int) -> String {
switch FizzBuzzType.fromNumber(n) {
case .Fizz:
return "Fizz"
case .Buzz:
return "Buzz"
case .FizzBuzz:
return "FizzBuzz"
case .Other(let number):
return "\(number)"
}
}
// --- 世界のナベアツ
enum NabeType {
case Aho, Other(number: Int)
static func fromNumber(n: Int) -> NabeType {
let factor = n % 3 == 0
let include = String(n).rangeOfString("3") != nil
if (factor || include) {
return Aho
} else {
return Other(number: n)
}
}
}
func nabe(n: Int) -> String {
switch NabeType.fromNumber(n) {
case .Aho:
return "さぁーん!"
case .Other(let number):
return "\(number)"
}
}
// --- 実行
let numbers = (1...40)
// FizzBuzz
numbers.map(fizzBuzz).forEach(println)
// 世界のナベアツ
numbers.map(nabe).forEach(println)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment