Однострочники Python + Piet: 417 символов + 7391 7107 исполняющих кодов
Этот скрипт Python создает изображение размером 7393 x 2; самый правый блок 2x2, который является «стражем», завершает программу; так что я не считаю их; а второй ряд в остальном белый. Вероятно, я смогу еще больше обработать код Пита, используя цепочки сложения / вычитания / умножения вместо наивного двоичного алгоритма ... но я не хочу выдавать решение будущей головоломки.
Я не собираюсь размещать изображение здесь, из-за его нелепых размеров. Если вы хотите его увидеть, запустите код на python и перенаправьте вывод в файл .ppm. Затем преобразуйте .ppm в .gif и запустите вывод в Rapapaing . (поочередно используйте не-веб-интерпретатор Piet, который переводит .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]
редактировать: немного ударил по мячу, уменьшив вес Хэмминга переменных имен.
менее 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
quine на нескольких языках. Так что вы можете сказать, что это J-программа, которая печатает программу Golfscript, которая печатает ...... и так далее.