Werden wir Helden für einen Tag

Home | About | Archive

FizzBuzz

Posted on Apr 29, 2013 by Chung-hong Chan

星期六聽到奇聞。
據說某公司要請人寫 program ,其中一個應徵者有某校的 MSc in Information & Technology Management ,能力方面自稱會寫 C 和 C++ 。
見工時說話 OK ,但該公司卻開出了能力測試,就是 FizzBuzz 。但該人竟然無法通過 FizzBuzz ,完全不試,結果當然是落選了。
在美國, FizzBuzz 是常見的 screening test 。據說十個應徵編程行業的人,可以高達六成至九成人無法通過 FizzBuzz 。聽上去 FizzBuzz 好像很難,有人亦認為 FizzBuzz 測試不公平。但我想,真的嗎?
我們先看看 FizzBuzz 是甚麼。 problem statement 如此:

列出 1 至 100 。如數字是 3 的倍數,換成列出 Fizz ;如果是 5 的倍數,換成列出 Buzz 。如果同時是 3 和 5 的倍數,換成列出 FizzBuzz 。

通常這個測試都不限 programming language ,任你使用哪一種也可以。會寫程式的人基本上一看到 problem statement ,已大約知道怎樣寫 ((for loop 加 if ,唯一的難度是可能不知道 modulo 的寫法)) 。若然有人是完全不知怎寫的話,可見是連編程的概念都無的,更加別說寫其他更加複雜的東西。
若可用 R 的話,由於 R 是 vectorize 的,故此 FizzBuzz 可以不用 for loop 寫成。

x <- 1:100
y <- x
y[x%%3==0] <- "Fizz"
y[x%%5==0] <- "Buzz"
y[x%%15==0] <- "FizzBuzz"
y

Powered by Jekyll and profdr theme