Python + Piet-Einzeiler: 417 Zeichen + 7391 7107 ausführende Codels
Dieses Python-Skript erstellt ein 7393 x 2-Bild. der am weitesten rechts stehende 2x2-Block ist ein "Sentinel", der das Programm beendet; also zähle ich die nicht; und die zweite Reihe ist sonst weiß. Ich kann den Piet-Code wahrscheinlich noch weiter reduzieren, indem ich Additions- / Subtraktions- / Multiplikationsketten anstelle des naiven binären Algorithmus verwende ... aber ich möchte keine Lösung für ein zukünftiges Rätsel herausgeben.
Ich werde das Bild nicht hier posten, weil es so lächerlich ist. Wenn Sie es sehen möchten, führen Sie den Python-Code aus und leiten Sie die Ausgabe in eine PPM-Datei. Konvertieren Sie dann die PPM-Datei in eine GIF-Datei, und führen Sie die Ausgabe bei Rapapaing aus . (Alternativ können Sie auch einen Nicht-Web-Piet-Interpreter verwenden, der .ppm enthält.)
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: golf den piet ein wenig durch reduzierung des hamming-gewichts von variablennamen.
weniger Golf-Pre-Quine :
Dies ist eine frühere Version, bevor mir klar wurde, dass ich sie einzeilig machen könnte. Es ist etwas einfacher zu verstehen. Die Funktion P übersetzt einen speziellen Befehlssatz in Piet; und die Funktion p nimmt eine ganze Zahl und erzeugt eine Folge von Anweisungen, um diese ganze Zahl auf dem Stapel zu erzeugen. Ich benutze nur die Anweisungen =,+,:,|
, also könnte dies wahrscheinlich effizienter gemacht werden ... aber ich mag es irgendwie, einen ausgewachsenen Piet-Compiler (von Art) in der Quelle zu haben.
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
ist ein Quine in mehreren Sprachen. Man könnte also sagen, es ist ein J-Programm, das ein Golfscript-Programm druckt, das ein ...... und so weiter druckt.