Python + Piet one-liners: 417 символів + 7391 7107 виконання коделів
Цей сценарій Python створює зображення 7393 x 2; крайній правий блок 2х2 з яких є "дозорним", який припиняє програму; тому я не рахую цих; а другий ряд інакше білий. Я, ймовірно, можу подальший гольф код пієта, використовуючи ланцюжки додавання / віднімання / множення замість наївного бінарного алгоритму ... але я не хочу віддавати рішення майбутній головоломці.
Я не збираюся розміщувати зображення тут, через його смішні розміри. Якщо ви хочете його побачити, запустіть код python та передайте висновок у файл .ppm. Потім конвертуйте .ppm в .gif і запустіть вихід у Rapapaing . (По черзі, використовуйте немережевий інтерпретатор Piet, який groks .ppm)
A='P=lambda A:reduce(lambda(D,H,B),P:(D[P/3:]+D[:P/3],H[P%3*2:]+H[:P%3*2],B+"".join("%i "%H[(D[0]/P)%2]for P in[1,2,4])),map(" A ! @ B".find,A),([1,3,2,6,4,5],[0,192,192,255,0,255],"P3 %i 2 255 "%(len(A)+2)))[2]+"255 "*4+"0 0 "+"255 "*len(A)*3+"255 0 0 "*2;B=lambda D:["@!%s","@@!%s!"][D%2]%B(D/2)if 1<D else"";print P("".join("A%sB"%B(ord(D))for D in"A=%s;exec A[:-13]"%`A`)+" ");exec A[:-13]';exec A[:-13]
редагувати: трохи заграв піт, зменшивши вагу Хеммінга змінних імен.
менше гольфу попередньої квітки :
Це попередня версія, перш ніж я зрозумів, що можу зробити її однолінійною. Це незначно легше зрозуміти. Функція P перекладає спеціальну інструкцію, встановлену на Piet; а функція p приймає ціле число і виробляє послідовність інструкцій для створення цього цілого числа в стеку. Я використовую лише інструкції =,+,:,|
, тому це, мабуть, може бути більш ефективним ... але мені якось подобається мати повноцінний компілятор Piet (подібних) у джерелі.
s="""def P(s):
l=len(s)+1;R="P3 %i 2 255 "%(l+2);C=[1,3,2,6,4,5];V=[0,192,192,255,0,255]
for x in map("=|^+-*/%~>.,:@$?#!".find,"="+s):
C=C[x//3:]+C[:x//3];V=V[x%3*2:]+V[:x%3*2]
for i in [1,2,4]:R+="%i "%V[(C[0]//i)%2]
return R+"255 "*4+"0 0 "+"255 "*l*3+"255 0 0 "*2
p=lambda x:[":+%s","::+%s+"][x%2]%p(x/2)if x/2 else""
print P("".join("|%s!"%k(ord(c))for c in "s="+`s`+";exec s[:-13]"))
exec s[:-13]"""
exec s[:-13]
1
, це квітка на декількох мовах. Отже, ви можете сказати, що його програма J, яка друкує програму Golfscript, яка друкує ...... тощо.