Python + Piet หนึ่ง liners: 417 ตัวอักษร + 7391 7107 กำลังประมวลผล codels
สคริปต์ Python นี้สร้างภาพขนาด 7393 x 2 บล็อก 2x2 ที่อยู่ทางขวาสุดซึ่งเป็น "sentinel" ซึ่งจะยุติโปรแกรม ดังนั้นฉันจะไม่นับสิ่งเหล่านั้น และแถวที่สองเป็นสีขาว ฉันสามารถเล่นรหัส piet ลงได้โดยใช้โซ่การบวก / การลบ / การคูณแทนที่จะใช้อัลกอริทึมแบบไร้เดียงสา ... แต่ฉันไม่ต้องการให้คำตอบสำหรับปริศนาในอนาคต
ฉันจะไม่โพสต์ภาพที่นี่เพราะขนาดไร้สาระ หากคุณต้องการดูให้รันโค้ดไพ ธ อนและไพพ์เอาต์พุตไปยังไฟล์. ppm จากนั้นแปลง .ppm เพื่อ .gif และเรียกใช้การส่งออกที่Rapapaing (อีกทางหนึ่งใช้ล่าม Piet ที่ไม่ใช่เว็บที่ grop .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]
แก้ไข: golf piet เล็กน้อยโดยการลดน้ำหนักของชื่อตัวแปรแฮมมิง
pre-quine golfed น้อย :
นี่เป็นรุ่นก่อนหน้านี้ก่อนที่ฉันจะรู้ตัวว่าฉันสามารถทำให้เป็นหนึ่งซับได้ มันง่ายกว่าที่จะเข้าใจ ฟังก์ชั่น 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 ที่พิมพ์ ...... และอื่น ๆ