コンピュータを楽しもう!!

今、自分が面白くていろいろやってみたことを書き綴りたいと思います。連絡先はtarosa.yでgmail.comです。

自作言語でFizzBuzz問題

折角OsoScriptが動いたので、FizzBuzzプログラムを組んでみようと思います。題して「自作言語でFizzBuzz問題」です。
現在、OsoScriptがサポートしている演算子は下記です。

四則演算子

+ , - , * , /

命令

命令はprint命令を付けました。
print(文字); , printn(文字);
printは文字を表示します。printnは文字を表示して改行します。
文字は変数か、""もしくは''で囲まれた文字が指定できます。また、文字は空白で区切っていくつでも並べることができます。これで、文字変数の12バイト制限もとりあえずクリアしています。

構文

構文は、if、for、whileです。

注釈

注釈は、#で始まる行と#[〜#]で囲まれる範囲

以上の条件で、1〜15でFizzBuzz問題を解くプログラムを組みたいと思います。

FizzBuzz問題を解くOsoScript

#[------------------------------
 FizzBuzz問題
-------------------------------#]
#------グローバル変数-----------
global F ="Fizz";
global B ='Buzz';
#-------------------------------
#メインルーチン
#-------------------------------
function main()
{
local max = 15;
	printn( F B "問題を" '解きます' );
	fizzbuzz( max );	#fizzbuzz関数呼び出し
	while( true ){}		#無限ループ
}
#-------------------------------
#fizzbuzz関数
#-------------------------------
function fizzbuzz( z )
{
local y = "です";
local a[0] = 3;
local a[1] = 5;
local x;
	for( x=1, x<=z, 1 ){
		if( x<a[0] ){
			if( x<a[1] ){	printn( x " " y );	}
			else{
				printn( B " " y );
				a[1] = a[1] + 5;
			}
		}
		else{
			a[0] = a[0] + 3;
			if( x<a[1] ){	printn( F " " y );	}
			else{
				printn( F B " " y  );
				a[1] = a[1] + 5;
			}
		}
	}
}

配列も確認したかったので、強引に配列も使ってみました。

上のスクリプトを実行すると下記が表示されました。

FizzBuzz問題を解きます
1 です
2 です
Fizz です
4 です
Buzz です
Fizz です
7 です
8 です
Fizz です
Buzz です
11 です
Fizz です
13 です
14 です
FizzBuzz です

ということで、構文的にエラーの無いスクリプトなら動くようです。

本当にやりたいこと

(ブログの終わりにやりたいことを書いておきたいと思います)

  • 求職活動・・・このブログで興味を持った人一声かけてください。m(_ _)m
  • Androidプログラム
  • Web系のプログラム