FizzBuzz

これが出来れば一応プログラマらしい・・・



検索したら引っかかりました。
面白そうだと思い、直ぐにプログラムしました。

if文縛りを実装しようとしたが、出来ていません~w
縛りやデザパタなど色々できるので、中々奥が深く馬鹿にできないプログラムです。
(※コピペしたらインデントが消えてしまいました。m(o・ω・o)mゴメンヨ )

Rubyでの実装
――――通常ver――――
for i in 0..100
	# 3で割り切れるか?
	if ((i%3) == 0)
		print 'Fizz'
	end
 
	# 5で割り切れるか?
	if ((i%5) == 0)
		print 'Buzz'
	end
 
	# どちらでも割り切れない場合
	if ( ((i%3) != 0) && ((i%5) != 0) )
		print i
	end
 
	# 見やすいように文字間を空ける
	print ' '
end
 
――――ここまで――――

――――再帰ver――――
# FizzBuzzメソッド
def fizz_buzz( count = 0 )
	# 100より大きいか?
	if (count > 100)
		return
	end
 
	# 3で割り切れるか?
	if ((count%3) == 0)
		print 'Fizz'
	end
 
	# 5で割り切れるか?
	if ((count%5) == 0)
		print 'Buzz'
	end
 
	# どちらでも割り切れない場合
	if ( ((count%3) != 0) && ((count%5) != 0) )
		print count
	end
 
	# 見やすいように文字間を空ける
	print ' '
 
	# 再帰
	fizz_buzz( (count+1) )
end
 
# メソッド呼び出し
fizz_buzz
 
――――ここまで――――

C++での実装
――――通常ver――――
#include <iostream>

int main()
{
	for( int i = 0; i <= 100; ++i )
	{
		// 3で割り切れるか?
		if( (i%3) == 0 ) { std::cout << "Fizz"; }
		// 5で割り切れるか?
		if( (i%5) == 0 ) { std::cout << "Buzz"; }
		// どちらでも割り切れない場合
		if( ((i%3) != 0) && ((i%5) != 0) ) { std::cout << i; }
 
		// 見やすいように間を空ける
		std::cout << " ";
	}
}
 
――――ここまで――――

――――再帰ver――――
#include <iostream>

// FizzBuzzメソッド
void fizz_buzz( int count = 0 )
{
	// 100より大きいか?
	if( count > 100 ) { return; }
 
	// 3で割り切れるか?
	if( (count%3) == 0 ) { std::cout << "Fizz"; }
	// 5で割り切れるか?
	if( (count%5) == 0 ) { std::cout << "Buzz"; }
	// どちらでも割り切れない場合
	if( ((count%3) != 0) && ((count%5) != 0) ) { std::cout << count; }
 
	// 見やすいように間を空ける
	std::cout << " ";
 
	// 再帰
	fizz_buzz( (count+1) );
}
 
int main()
{
	// 関数呼び出し
	fizz_buzz();
}
 
――――ここまで――――

この記事がみなさんの少しでも役に立てば僥倖です!!

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2009年10月17日 21:17
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。