-
swift] fp - fizz buzz 리펙토링Programming/iOS 2020. 3. 3. 18:27
FizzBuzz 프로그램?
1 ~ 100 까지의 숫자를 출력하되, 3으로 나누어 떨어진다면 fizz, 5로 나누어 떨어진다면 buzz,
3과 5 둘 다 나누어 떨어지면 fizzbuzz를 출력하는 프로그램.
리펙토링 전
var i = 1 while i <= 100 { if i % 3 == 0 && i % 5 == 0 { print("fizzbuzz") } else if i % 3 == 0 { print("fizz") } else if i % 5 == 0 { print("buzz") } else { print(i) } i += 1 }
리펙토링1
func fizz(_ i : Int) -> String{ if(i % 3 == 0){ return "fizz" } return "" } func buzz(_ i : Int) -> String{ if(i % 5 == 0){ return "buzz" } return "" } func fizzbuzz(_ i: Int) -> String { let result = fizz(i) + buzz(i) return result.isEmpty ? "\(i)" : result } func loop(min: Int, max: Int, do f: (Int)-> Void) { var i = min while i <= max { f(i) i+=1 } } loop(min: 0, max: 100) { print(fizzbuzz($0)) }
리펙토링2
let fizz = { i in i % 3 == 0 ? "fizz" : "" } let buzz = { i in i % 5 == 0 ? "buzz" : "" } let fizzbuzz: (Int) -> String = { i in { a,b in b.isEmpty ? a: b }("\(i)", fizz(i) + buzz(i)) } func loop(min: Int, max: Int, do f: (Int)-> Void) { // min ~ max 까지 배열형태로 만듬 Array(min...max).forEach(f) } loop(min: 0, max: 100) { print(fizzbuzz($0)) }
'Programming > iOS' 카테고리의 다른 글
swift] fp - LowHigh (0) 2020.03.05 cocoaPods] 외부 라이브러리 제거후 다시 설치하기 (0) 2020.03.04 swift] fp - 함수형 프로그래밍 기초 (0) 2020.03.03 Timer 만들기 (0) 2019.11.06 Struct & Class (0) 2019.11.06