Processingでのゴルフのヒント


13

誰か持っていでゴルフのためのヒント処理を?これは、javaのグラフィカルな拡張機能であり、ゴルフにはやや困難です。


いい質問ですね。ヒントはコミュニティWikiにあるべきだと思います。移行のフラグを立てました。
レベルリバーセント

4
Downvote ??? どうして?
TARDIS

downvoteを心配しないでください...コミュニティwikiとしてマークされた後、この投稿から得たすべての担当者を失うことになります...
user12205

3
@ace:投稿がCWとしてマークされる前に獲得した評判:meta.stackexchange.com/a/11741/229438
ProgramFOX

回答:


7
  • アニメーションが必要ない場合は、をスキップしてvoid draw()すべてをに入れることができますvoid setup()
  • キャンバスのサイズを初期化する必要がない場合があります- (100, 100)デフォルトで初期化されます。
  • あなたが使用する必要がある場合heightwidth、あなたのコードでは、代わりにその数値を使用することは通常短いです。例えば、サイズのキャンバスに(100, 100)、使用して99交換するheightwidth、あなたに7つのバイトを保存することができます。

3

setupメソッドでのみコードを実行する場合、メソッドのアウトラインを記述する必要はありません。たとえば、次のように書くことができます。

rect(10,10,90,90);

の代わりに

void setup {
    rect(10,10,90,90);
}

そして、あなたが他の方法を使わない限り、すべては実行する前にセットアップメソッドに置かれます


これは少しバグが多い場合があります。:私はあなたが静的モードで関数を定義しようとした場合、処理が混乱少し得ることができることに気付きましたpuu.sh/tpzP8.pngを
クアット

@quatは、他のメソッドを定義しない限り、すべてがセットアップメソッドに置かれます。メソッドを定義する必要がある場合は、セットアップメソッドに明示的に名前を付ける必要があります。
HEGX64

2

(R, G, B)表記

16進数の色

処理はカラー形式で非常に柔軟です。

fill(255,255,0); //16 bytes

16進表記を使用して次のように記述できます。

fill(#ffff00);   //14 bytes (2 bytes saved)

グレースケール

赤、緑、青の値がすべて同じ(白)の場合の色の特別な使用法は次のとおりです。

fill(255,255,255); //18 bytes
fill(#ffffff);     //14 bytes
fill(255);         //10 bytes

3つのパラメーターはすべて、グレースケール値を含む1つのパラメーター(0黒から255白)に短縮できます。

これはアルファについても同様に拡張できます。

fill(175,175,175,50); //translucent gray
fill(175,50);         //8 bytes shorter

両方とも同じ色を意味しますが、後者の方法は8バイト短くなります。

アルファ

色はデフォルトでアルファ値255(100%不透明)に設定されているため、色を指定する際のアルファパラメーターはオプションであることに注意してください。

要約:カラー形式

最短のカラー形式を使用して色を表現します(プログラムのコンテキストに応じて、不要なビットを省くことを忘れないでください(例:アルファまたはグレースケール))

R:赤 G:緑 B:青 A:アルファ g:グレースケール

RRR,GGG,BBB
#RRGGBB
ggg
RRR,GGG,BBB,AAA
ggg,AAA

2

定数を短縮する

Processingでall-capsキーワードのDIFFERENCEいずれか(またはなどTRIANGLE_FAN)を使用している場合は、対応する数字が短いかどうかを確認してください。

たとえば、これDIFFERENCEint32に等しいです。DIFFERENCE ここで使用する代わりに32、8文字を保存して記述できます。


2

より短い代替 void keyPressed(){}

void draw(){}void keyPressed(){foo;} //36 bytes
void draw(){if(key>0)foo;}           //26 bytes

を更新void draw(){}するには、デフォルトで必要ですkey。プログラムの開始以降、ユーザーがキーを押していない場合、key値が与えられます00(ユーザーがキーを押した)以上であるかどうかを確認することで、ゴルファーのコードが得られ、10バイト節約できます。


2

白い #FFFFFF

関連:カラー表記

これを白に使用する代わりに:

color(255)     //10 bytes

あなたはこれを行うことができます:

color(-1)      //9 bytes

そして1バイトを保存します。


1

set()を使用してピクセルを設定およびコミットする

これは、経由して、設定された各画素に、より効率的です] [ピクセル

pixels[0] = color(255)
updatePixels();

ただし、updatePixels()これには、シナリオに応じてx、y位置をピクセルインデックスに変換する必要があるインデックスが必要です。CPUの効率は低下しますが(各呼び出しがバッファ全体を更新するため)、物事を短くするために、set()を使用すると、1回の呼び出しですぐにピクセルを設定してバッファにコミットできます。

set(0,0,color(255));
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.