Python + Piet one-liners: 417 karakter + 7391 7107 mengeksekusi kode
Skrip Python ini menghasilkan gambar 7393 x 2; blok 2x2 paling kanan yang merupakan "sentinel" yang mengakhiri program; jadi saya tidak menghitungnya; dan baris kedua berwarna putih. Saya mungkin bisa menurunkan kode piet lebih jauh dengan menggunakan rantai penjumlahan / pengurangan / perkalian alih-alih algoritma biner yang naif ... tapi saya tidak ingin memberikan solusi untuk puzzle masa depan.
Saya tidak akan memposting gambar di sini, karena dimensinya yang konyol. Jika Anda ingin melihatnya, jalankan kode python, dan pipa keluaran ke file .ppm. Kemudian, konversikan .ppm ke .gif, dan jalankan output di Rapapaing . (secara bergantian, gunakan juru bahasa non-web Piet yang 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]
sunting: golf piet sedikit dengan mengurangi berat nama variabel Hamming.
pre-quine yang kurang golf :
Ini adalah versi sebelumnya, sebelum saya menyadari bahwa saya bisa membuatnya satu-liner. Sedikit lebih mudah dimengerti. Fungsi P menerjemahkan set instruksi khusus ke dalam Piet; dan fungsi p mengambil integer dan menghasilkan urutan instruksi untuk membuat integer itu di stack. Saya hanya menggunakan instruksi =,+,:,|
, jadi ini mungkin bisa dibuat lebih efisien ... tapi saya agak suka memiliki kompiler Piet fullblown (macam) di sumbernya.
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
adalah quine dalam beberapa bahasa. Jadi bisa dibilang ini adalah program J yang mencetak program Golfscript yang mencetak ...... dan seterusnya.