Last active
August 29, 2015 14:23
-
-
Save YusukeHosonuma/57f2fc0d26e10da4400f to your computer and use it in GitHub Desktop.
SwiftでFizzBuzzと世界のナベアツ
This file contains hidden or 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
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