Python + Piet tek gömlekler: 417 karakter + 7391 7107 kod çözücüyü yürütme
Bu Python betiği 7393 x 2 görüntü üretir; en sağdaki 2x2 blok, programı sonlandıran bir "nöbetçi" dir; bu yüzden onları saymıyorum; ve ikinci sıra aksi takdirde beyazdır. Muhtemelen saf ikili algoritma yerine toplama / çıkarma / çarpma zincirlerini kullanarak piet kodunu daha da aşağıya koyabilirim ... ama gelecekteki bir bilmeceye çözüm vermek istemiyorum.
Saçma boyutları nedeniyle görüntüyü buraya göndermeyeceğim. Görmek istiyorsanız, python kodunu çalıştırın ve çıktıyı bir .ppm dosyasına aktarın. Sonra, bir .gif için Ppm dönüşüm sağladığını ve çıkışını çalıştırmak Rapapaing . (dönüşümlü olarak, .ppm içeren web dışı bir Piet tercüman kullanın)
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]
edit: değişken isimlerinin Hamming ağırlığını azaltarak piet biraz golf.
daha az golf ön quine :
Bu önceki bir versiyon, fark etmeden önce onu bir liner yapabilirim. Anlaşılması marjinal açıdan daha kolay. P fonksiyonu özel bir komut setini Piet'e çevirir; ve p işlevi bir tamsayı alır ve yığında bu tamsayıyı oluşturmak için bir talimatlar dizisi oluşturur. Ben sadece talimatları kullanıyorum =,+,:,|
, bu yüzden muhtemelen daha verimli bir hale getirilebilir ... ama kaynağında tam bir şişmiş Piet derleyicisine (çeşit) sahip olmak isterdim.
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
, birkaç dilde bir kıskaç. Yani onun bir ...... yazdıran bir Golfscript programını basan bir J programı diyebilirsin.