13 August 2015

Problem 005

1 ~ 10 사이의 어떤 수로도 나누어 떨어지는 가장 작은 수는 2520입니다.

그러면 1 ~ 20 사이의 어떤 수로도 나누어 떨어지는 가장 작은 수는 얼마입니까?

Solution

증가하는 값이 클로저 안에 있는 코드

func factor(list: [Int]) -> (Void -> Int?) {
	var num = 0
	return {
		num++
		return list.filter{ num % $0 != 0 }.isEmpty ? num : 0
	}
}

//let isFilter = factor([Int](1...10))
let isFilter = factor([2,3,5,7,11,13,17,19])

while true {
	if let num = isFilter() where num != 0 {
		println(num)
		break;
	}
}


증가하는 값이 반복문에 있는 코드

func factor(list: [Int]) -> (Int -> Bool) {
	return { s1 in
		return list.filter{ s1 % $0 != 0 }.isEmpty
	}
}

//let isFilter = factor([Int](1...10))
let isFilter = factor([2,3,5,7,11,13,17,19])

var num = 0
while true {
	if isFilter(++num) {
		println(num)
		break;
	}
}

문제 출처