マクロツイーター

はてダから移行した記事の表示が崩れてますが、そのうちに直せればいいのに(えっ)

ちょっと BaSiX しますよ…(BASIC on TeX)

昨日の記事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 を書いた。