Qualcuno ha qualche suggerimento sul golf del codice per giocare a golf in Processing ? È un'estensione grafica di Java ed è alquanto difficile da golf.
Qualcuno ha qualche suggerimento sul golf del codice per giocare a golf in Processing ? È un'estensione grafica di Java ed è alquanto difficile da golf.
Risposte:
void draw()e inserire tutto void setup().(100, 100)impostazione predefinita.heighte widthnel tuo codice, di solito è più breve usare i loro valori numerici. Ad esempio, con una tela di dimensioni (100, 100), utilizzare 99per sostituire heighte widthpuò salvare 7 byte.Se si esegue solo codice nel metodo di installazione, non è necessario scrivere la struttura del metodo. Ad esempio puoi scrivere:
rect(10,10,90,90);
invece di
void setup {
rect(10,10,90,90);
}
E fintanto che non usi altri metodi, tutto verrà inserito nel metodo di installazione prima di essere eseguito
(R, G, B)Notazione di coloriL'elaborazione è molto flessibile nel formato colore.
fill(255,255,0); //16 bytes
può essere scritto usando la notazione esadecimale come
fill(#ffff00); //14 bytes (2 bytes saved)
Ecco un uso speciale per i colori se tutti i valori di Rosso, Verde e Blu sono uguali (bianco):
fill(255,255,255); //18 bytes
fill(#ffffff); //14 bytes
fill(255); //10 bytes
Tutti e tre i parametri possono essere abbreviati in un parametro contenente il valore della scala di grigi: dal 0nero al 255bianco.
Questo può essere esteso anche per l'alfa:
fill(175,175,175,50); //translucent gray
fill(175,50); //8 bytes shorter
Entrambi significano lo stesso colore, ma quest'ultimo modo è più breve di 8 byte.
Sebbene ovvio, si dovrebbe affermare che il parametro alfa nella specifica dei colori è facoltativo poiché i colori sono impostati su un valore alfa predefinito di 255 (al 100% opaco).
Usa il formato colore più breve per esprimere il tuo colore (ricorda di tralasciare i bit non necessari, a seconda del contesto del programma, ad esempio: alfa o scala di grigi)
R: Rosso
G: verde
B: blu
A: alfa
g: scala di grigi
RRR,GGG,BBB
#RRGGBB
ggg
RRR,GGG,BBB,AAA
ggg,AAA
Se stai utilizzando una delle parole chiave in maiuscolo in Elaborazione (come DIFFERENCE oTRIANGLE_FAN ), verifica se il numero a cui corrispondono è più breve.
Ad esempio, DIFFERENCEè solo un valore intuguale a 32. Invece di utilizzare DIFFERENCE qui , potrei scrivere 32, salvando 8 caratteri.
void keyPressed(){}void draw(){}void keyPressed(){foo;} //36 bytes
void draw(){if(key>0)foo;} //26 bytes
Il void draw(){}è necessario per impostazione predefinita in modo che keyper essere aggiornato. Se l'utente non ha premuto un tasto dall'inizio del programma, keyviene assegnato un valore di 0. Controllando se è maggiore di 0(ovvero l'utente ha premuto un tasto), abbiamo un codice golfista e salviamo 10 byte.
#FFFFFFCorrelati: notazione dei colori
Invece di usare questo per il bianco:
color(255) //10 bytes
Puoi farlo:
color(-1) //9 bytes
e salva 1 byte.
È più efficiente impostare i pixel tramite pixel [] :
pixels[0] = color(255)
updatePixels();
Tuttavia, ciò richiede updatePixels()e anche l'utilizzo di un indice che, a seconda dello scenario, richiederà la conversione di una posizione x, y in un indice di pixel. Per farla breve, anche se è meno efficiente della CPU (poiché ogni chiamata aggiorna l'intero buffer), set () consente a un pixel di essere impostato e impegnato a bufferizzare immediatamente in una chiamata.
set(0,0,color(255));