Хто-небудь має які - небудь поради щодо гольфу з кодом для гольфу в Processing ? Це графічне розширення java, а гольф дещо складний.
Хто-небудь має які - небудь поради щодо гольфу з кодом для гольфу в Processing ? Це графічне розширення java, а гольф дещо складний.
Відповіді:
void draw()і вкласти все void setup().(100, 100)за замовчуванням.heightі widthу своєму коді, зазвичай замість них використовувати їх числові значення. Наприклад, з розміром полотна розміром (100, 100), який використовує 99для заміни, heightі widthможе заощадити 7 байт.Якщо ви запускаєте код лише у способі настройки, тоді вам не потрібно писати контур методу. Наприклад, ви можете написати:
rect(10,10,90,90);
замість
void setup {
rect(10,10,90,90);
}
І поки ви не використовуєте жодних інших методів, тоді все буде встановлено у спосіб налаштування перед запуском
(R, G, B)Позначення кольорівОбробка дуже гнучка в кольоровому форматі.
fill(255,255,0); //16 bytes
можна записати, використовуючи шістнадцяткові позначення як
fill(#ffff00); //14 bytes (2 bytes saved)
Ось особливе використання кольорів, якщо всі значення Червоного, Зеленого та Синього є однаковими (білими):
fill(255,255,255); //18 bytes
fill(#ffffff); //14 bytes
fill(255); //10 bytes
Усі три параметри можна скоротити до одного параметра, що містить значення масштабу сірого: від 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
Якщо ви коли-небудь використовуєте одне із ключових слів з усією величиною в обробці (наприклад, DIFFERENCEабо TRIANGLE_FAN), подивіться, чи коротше число, якому вони відповідають.
Наприклад, DIFFERENCEце просто значення, intщо дорівнює 32. Замість використання DIFFERENCE тут я міг би писати 32, зберігаючи 8 символів.
void keyPressed(){}void draw(){}void keyPressed(){foo;} //36 bytes
void draw(){if(key>0)foo;} //26 bytes
Значення void draw(){}за замовчуванням потрібне для keyоновлення. Якщо користувач не натискав клавішу з моменту запуску програми, keyнадається значення " 0. Перевіривши, чи не більше 0(тобто користувач натиснув клавішу), ми маємо код гравця і економимо 10 байт.
#FFFFFFПов'язане: Позначення кольорів
Замість використання цього для білого:
color(255) //10 bytes
Ви можете це зробити:
color(-1) //9 bytes
і збережіть 1 байт.
Ефективніше встановлювати пікселі за допомогою пікселів [] :
pixels[0] = color(255)
updatePixels();
Однак це вимагає updatePixels()і використання індексу, який залежно від сценарію вимагатиме перетворення позиції x, y в індекс пікселів. Щоб зробити речі короткими, навіть незважаючи на ефективність процесора (оскільки кожен виклик оновлює весь буфер), set () дозволяє встановлювати піксель і зобов’язуватися безпосередньо буферувати в одному дзвінку.
set(0,0,color(255));