フレームカウンタ用 code golf テクニック(Python)

はじめに

 つぶやき Processing で、特にアニメーション作品を作る場合に、 フレームごとに増加するカウンタ値が必要となる場合があります。

この短いメモでは、そのような少しずつ増加する値を、 code golf の視点で考えてみます。

グローバル変数を使う方法

 Processing では、draw 関数は各フレームごとに呼び出されます。 そこで、例えばグローバル変数 F を定義しておき、 draw 関数の中で、例えば 0.001 づつ増加させるーという方法が考えられます。

コードで書くと、次のようになります:

f=0
def draw():
    global f
    f+=0.001

frameCount 変数を使う方法

 Processing では、システム側で用意されているグローバル変数 frameCount に 現在描画中のフレーム番号(整数)が格納されています。 この値を活用して、0.001 刻みで増加する変数を作ってみます。 …といっても非常に簡単で、frameCount*0.001 とすれば十分です。

結局どちらが code golf 的には得なのか?

 グローバル変数を用いる方法では、必要な文字数は

f=0

# draw 関数内にて
global f;f+=0.001

結局、文字数としては、20 文字を必要とします。

 一方、frameCount に値を乗じる方法では、

f=frameCount*0.001

となり、18 文字です。

 つまり、フレームごとに増加するカウンタ変数が必要であれば、 frameCount に増分だけ乗ずる方法の方が code golf 的にはお得である ーということになります。

ちなみに、Python の場合、0.001 の最初の 0 は省略できるので(.001 と書けば良い)、 どちらの方法でも、実は 1 文字少なく記述できます。