If文と三項演算子を使わずにFizzBuzz

最近FizzBuzzが流行っているようなのでIf文と三項演算子を使わずに書いてました。

書き終えてから気づいたけど、関数ポインタよりも文字列配列使ってインデックスを指定したほうがスマートに書けたなー。。。

C言語
#include <stdio.h>
void sayNothing(void);
void sayFizz(void);
void sayBuzz(void);
void sayNumber(int num);

int main (int argc, const char * argv[]) {
    void (*fizz[])() = {sayNothing, sayFizz};
    void (*buzz[])() = {sayNothing, sayBuzz};
    void (*number[])() = {sayNothing, sayNumber};
	int i;
	
	for (i=1; i<=100; i++) {
		(*fizz[i%3==0])();
		(*buzz[i%5==0])();
		(*number[!(i%3==0||i%5==0)])(i);
		
		printf(", ");
	}
	printf("\n");
    return 0;
}

void sayNothing(){
	return;
}

void sayFizz(){
	printf("Fizz");
}

void sayBuzz(){
	printf("Buzz");
}

void sayNumber(int num){
	printf("%d",num);
}

結果

1, 2, Fizz, 4, Buzz, Fizz, 7, 8, Fizz, Buzz, 11, Fizz, 13, 14, FizzBuzz, 16, 17, Fizz, 19, Buzz, Fizz, 22, 23, Fizz, Buzz, 26, Fizz, 28, 29, FizzBuzz, 31, 32, Fizz, 34, Buzz, Fizz, 37, 38, Fizz, Buzz, 41, Fizz, 43, 44, FizzBuzz, 46, 47, Fizz, 49, Buzz, Fizz, 52, 53, Fizz, Buzz, 56, Fizz, 58, 59, FizzBuzz, 61, 62, Fizz, 64, Buzz, Fizz, 67, 68, Fizz, Buzz, 71, Fizz, 73, 74, FizzBuzz, 76, 77, Fizz, 79, Buzz, Fizz, 82, 83, Fizz, Buzz, 86, Fizz, 88, 89, FizzBuzz, 91, 92, Fizz, 94, Buzz, Fizz, 97, 98, Fizz, Buzz, 
ActionScript
package
{
	import flash.display.Sprite;
	import flash.text.TextField;
	import flash.text.TextFieldAutoSize;
	
	public class FizzBuzz extends Sprite
	{

		private var tf:TextField;
		public function FizzBuzz()
		{
			//TextFieldの設定
			tf = new TextField();
			addChild(tf);
			tf.border = true;
			tf.multiline = true;
			tf.wordWrap = true;
			tf.autoSize = TextFieldAutoSize.LEFT;
			tf.width = 400;
			tf.accessibilityImplementation
			
			//FizzBuzz
			var funcs:Vector.<Function> = new Vector.<Function>;
			funcs.push(
				function(num:int):void{addText(num.toString());},
				function():void{addText("Fizz");},
				function():void{addText("Buzz");},
				function():void{addText("FizzBuzz");}
			);
			for (var i:int = 1; i <= 100; i++) {
				funcs[int(i%3==0)+int(i%5==0)*2](i);
				addText(", ");
			}
		}

		private function addText(text:String):void
		{
			tf.appendText(text);
		}
	}
}

結果はC言語と同じです。