昨日の記事で BaSiX を紹介したのでちょっと遊んでみる。といっても「TeX への入力」ができないのでナベアツは諦めて FizzBuzz することにする。
まず、CTAN から basix.tex のファイルを入手する。このファイルを現在ディレクトリに置いて「tex basix
」を実行すれば、「BaSiX の対話環境」が起動する。
>tex basix This is TeX, Version 3.1415926 (TeX Live 2013/W32TeX) encTeX v. Jun. 2004, reencoding enabled. (./basix.tex This is BaSiX, v0.3, emphasis on the SICK! by amgreene@mit.edu ) *
この後は、「例の BASIC の対話環境の使い方」に従って、プログラムを入力・実行できる。
*10 let a=6 *20 print a*(a+1) *run 42 *
ちなみに、ファイルからのプログラムソースの入力(“load”命令)には対応していない。けれでも、結局は TeX の実行なので、次のようなチートが使える。
先頭に「\input basix
」を書いて、その後に「キーボードからの入力」(つまりプログラム)の行を並べたファイルを作ってそれを tex でコンパイルすると、ファイルに書いたプログラムが実行できる。
というわけで、早速 FizzBuzz してみる。
\input basix 10 let c=0 20 let c=c+1 30 let m=c 40 if c/3*3=c then let m="Fizz" 50 if c/5*5=c then let m="Buzz" 60 if c/15*15=c then let m="FizzBuzz" 70 print m 80 if c<100 then goto 20 90 system run
「tex fizzbuzz
」で以下の出力が得られる。((文字列の print で " "
が付いたままなのは BaSiX の「仕様」。))
1 2 "Fizz" 4 "Buzz" "Fizz" 7 8 "Fizz" "Buzz" 11 "Fizz" 13 14 "FizzBuzz" 16 17 "Fizz" ……(中略)…… "Fizz" 97 98 "Fizz" "Buzz"
……十数年ぶりに(古典)BASIC を書いた。