(+)분류 : 가져온 문서/오메가
FizzBuzz Test
3의 배수는 Fizz, 5의 배수는 Buzz, 3과 5의 공배수는 FizzBuzz로 출력하는 프로그램의 개발 속도를 테스트하는 것이다. 알고리즘이 필요없을 정도로 단순한 문제이지만, 컴퓨터공학 전공자 중 25%가 해결하지 못했다고 한다. # FizzBuzz 프로그램의 요구조건은 다음과 같다.
- 1에서 100까지 출력
- 3의 배수인 경우 숫자 대신 Fizz를 출력
- 5의 배수인 경우 숫자 대신 Buzz를 출력
- 3과 5의 공배수인 경우 숫자 대신 FizzBuzz를 출력
실제 통계에 따르면, 이 프로그램을 개발하는 데 현직 개발자는 3분, 신입은 10분, 구직자는 1시간이 걸렸다고 한다. 여러분이 프로그래밍을 배웠다면 한 번 프로젝트 생성에서 디버깅까지 얼마만큼의 시간이 걸리는지 측정해보라.
1. 실제 코드 ✎ ⊖
1.1. C언어 ✎ ⊖
#include <stdio.h>
int main(void)
{
for (int i = 1; i <= 100; i++)
{
if (i % 3 == 0)
{
if (i % 5 == 0)
{
printf("FizzBuzzn");
}
else
{
printf("Fizzn");
}
}
else if (i % 5 == 0)
{
printf("Buzzn");
}
else
{
printf("%d", i);
}
}
return 0;
}
1.2. C# ✎ ⊖
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace FizzBuzzTest
{
class Program
{
static void Main(string[] args)
{
for (int i = 1; i <= 100; i++)
{
if (i % 3 == 0)
{
if (i % 5 == 0)
{
Console.WriteLine("FizzBuzz");
}
else
{
Console.WriteLine("Fizz");
}
}
else if (i % 5 == 0)
{
Console.WriteLine("Buzz");
}
else
{
Console.WriteLine(i);
}
}
}
}
}
1.3. ActionScript 3.0 ✎ ⊖
for(i=1; i<101; i++){
if(i%3 == 0 && i%5 ==0){
trace("FizzBuzz")
}
else if(i%3 == 0){
trace("Fizz")
}
else if(i%5 == 0){
trace("Buzz")
} else {
trace(i)
}
}
1.4. Mathematica ✎ ⊖
Table[Which[Divisible[n, 15], "FizzBuzz", Divisible[n, 3], "Fizz", Divisible[n, 5], "Buzz", True, n], {n, 1, 100}]
1.5. GML ✎ ⊖
GML은 출력 기능이 없으므로 show_message로 대체한다.
for(i=1; i<101; i+=1){
if i mod 3 = 0 {
if i mod 5 = 0{
show_message("FizzBuzz");
} else {
show_message("Fizz");
}
} else if i mod 5 = 0 {
show_message("Buzz");
} else {
show_message(i);
}
if i=100 {
game_end();
}
}