पायथन -> पीट, 385 345 चार
इसके साथ किसी भी Piet कार्यक्रम को उत्पन्न करना संभव है। मैं बस यादृच्छिक पिक्सेल पर रोक सकता था, लेकिन मैं "दिलचस्प" कार्यक्रम बनाना चाहता था। फ़ंक्शन m
एक पिक्सेल रंग को पेंट करता है, और उस पिक्सेल पड़ोसियों में से प्रत्येक में पुनरावृत्ति करता है। यादृच्छिक बूँदें खींचने के लिए बेहतर तरीके हैं, लेकिन यह उचित संख्या में चरणों को समाप्त करने के लिए तैयार है, इसलिए यह गोल्फ के लिए पर्याप्त है। फ़ंक्शन n ( w x h ) श्वेत चित्र पर n यादृच्छिक ब्लब्स R(w,h,n)
खींचता है , और PPM प्रारूप में परिणाम प्रिंट करता है।
के एक यादृच्छिक चुनाव के लिए - मैं कैसे मैं रंग उत्पन्न की विशेष रूप से गर्व है 0 <= c < 20
,
`[0,192,255][int(x)]`for x in'0002212220200101121100'[c:c+3]
एकल ट्रैक ग्रे कोड के माध्यम से पीट पैलेट में एक वैध रंग के लिए दशमलव कोड है । यही है, प्रत्येक रंग को 3 आसन्न बिट्स द्वारा दर्शाया जाता है, और प्रत्येक टुकड़ा '0003...0'[c:c+3]
एक अलग रंग का प्रतिनिधित्व करता है। चूंकि यह 3 अक्षरों पर 27 शब्दों की पूरी सूची नहीं है, इसलिए मुझे वास्तव में ग्रे कोड ढूंढने में सफलता मिली।
from random import*
r=randint
def R(w,h,n):
M=[6]*h*w
def m(x,y,c,d):M[y%h*w+x%w]=c;t=r(0,15)*(r(0,d)<2);t&8and m(x+1,y,c,d+1);t&4and m(x-1,y,c,d+1);t&2and m(x,y+1,c,d+1);t&1and m(x,y-1,c,d+1)
while n:m(r(0,w),r(0,h),r(0,19),0);n-=1
print"P3 %s %s 255 "%(w,h)+' '.join(`[0,192,255][int(x)]`for c in M for x in'0002212220200101121100'[c:c+3])
नमूना आउटपुट, कमांड द्वारा उत्पन्न R(30,40,500)
आयात के बिना, मैं इसे एक उचित (अर्धविराम-मुक्त) 1-लाइनर के रूप में भी लिख सकता हूं:
import random
R=(lambda P,I,E,T:lambda w,h,n:E(w,h,I(w,h,n,lambda z,c,d,t:sum((((z,c),)*t*T(0,1)or m((z[0]+a,z[1]+b),c,d+1,T(0,d)>1)for a,b in((0,1),(1,0),(-1,0),(0,-1))),()))))(range,lambda w,h,n,m:dict(sum((m((T(0,w),T(0,h)),T(0,19),0,0)for _ in P(n)),())),lambda w,h,M:"P3 %s %s 255 "%(w,h)+' '.join(' '.join(`(x&1)*255+(x&2)*96`for x in map(int,'0001121110100202212200'[c:c+3]))for c in(M[z]if z in M else 6for z in((x,y)for y in P(h)for x in P(w)))),random.randint)
लेकिन यह हास्यास्पद रूप से धीमा है (और लगभग 100 वर्ण लंबा) ... हालांकि मुझे पूरी तरह से यकीन नहीं है कि (और यह पता लगाने के लिए बहुत इच्छुक नहीं है)।