はじめに
つぶやき Processing では、あと 1 文字あればツィートできるのに! …という状況に時々直面します。 そんなとき、本文書で説明するテクニックを使えば、 無事、つぶやき Processing できるかもしれません。
なお、ここで説明している方法は私のオリジナルではなくて、 秋秋屋. さん(@dn_stp さん)の つぶやき Processing のソースを見て、 理解したものです:
#つぶやきProcessing
— 秋秋屋.👻🌵 (@dn_stp) February 26, 2020
s=n=505
def setup():size(s,s)
def draw():
global n;n+=.1;x=y=0
while y<s:
while x<s:N=noise(x*.01,y*.01,dist(252,252,x,y)*.01-n);fill([0,255][N<.6],[0,[200,250][N<.4]][N<.5],[0,180][N<.4]);circle(x,y,8);x+=8
y+=7;x=y/7%2*4 pic.twitter.com/VAiV6g2XtN
この方法が使える条件(Python 限定)
プログラミングでよく出てくる処理として、 ある条件が満たされている場合には、この値を。 そうでない場合には、この値をーなどと言うものがあります。
具体的なものとしては、例えば絶対値を計算する場合などです。 もし、x が正の値ならば、そのまま=つまり x という値を使います。 そうでないならば、-x という値を使う、といった処理です。
コードで書くと次のようになります:
x if x>0 else -x
文字数削減の方法
Python では、True は 1 として、False は 0 として扱われる場合があります。 例えば配列のインデックスとして True や False が使われた場合などがそれです。
その性質をここでは利用してみます。 配列を利用し、False ならば 0、True ならば 1 なので、 以下のようなコードで代替できます:
[ the value when False, the value when True ][ cond-expr ]
例えば、絶対値を返す処理は次のように書けます:
[-x,x][x>0]
if 文を使った方法と比較してみると、
x if x>0 else -x
[-x,x][x>0]
となり、本文書で紹介した方法の方が 5 文字少ないプログラムとなります。