Подавить уникальных персонажей

23

Это очень просто: ваша программа или функция должна сгенерировать следующий текст:

Elizabeth obnoxiously quoted (just too rowdy for my peace): "THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG," giving me a look.

Хорошая печать

Вы можете написать программу или функцию , которая возвращает вывод в виде строки или печатать его в STDOUT (или ближайшую альтернативу). При желании вы можете включить один завершающий символ новой строки в вывод.

счет

Количество байтов в вашем коде, умноженное на количество уникальных байтов в вашем коде

Самый низкий балл побеждает.

Например, ответ «мозговая шутка» или «пробел» имеет здесь огромное преимущество, так как множитель будет очень низким (8 и 3 соответственно). Однако, как правило, написание программ на этих языках дает гораздо более длинный код, который может свести на нет это преимущество.

Стандартные лазейки, которые больше не смешны , запрещены .

durron597
источник
Я предполагаю, что корпус должен быть точным?
EnragedTanker
@crayzeedude да, в этом
вся
Хорошо. Просто уточняю. : p
EnragedTanker
1
@CarpetPython В песочнице было несколько споров по этому поводу, и в итоге я решил, что нет способа НАСТОЯЩИМ выровнять игровое поле. Обратите внимание, что пробелы и бессонница имеют самые высокие оценки в любом случае!
durron597
2
Как я где-то писал, если мы предположим, что использование большего количества байтов для компенсации менее уникальных символов ведет себя аналогично преобразованию чисел в разные базы, то приблизительно bytecount~Log(X,unique), с некоторой константой X для этой задачи. Таким образом, уникальная константа. Вычисление этой оценки (log2) дает python2_mbomb007 728, python2_carpetpython 744, ruby 756, Fish 825, Insomnia 1148, cjam 1277, whitespace 1484, brainfuck 3546. Так что, кроме ответа «
бред»

Ответы:

7

Бессонница , 575 байт * 4 = 2300

dyedd=dyyyye=d=yd=dddde=ded=deey=eyy=de=edd=eydyee=yeyy=yey==ddyee=eydee=y=eyeedd=dde=yddd=eede=yedde=eeyd==yeyy=yyddy=eyy=dy=dddye=dyey=ede=yddd=dde=de=yyye=yyye=ddyyy=dyy=yeyddy=eyyyde=eed=ddd=yd=edyyd=eeydd=yedd=eye=eee=eeyy=yyyedde=d=eyyyedy=d=yddyye==dyyede=ddd=eydd=yd=ddde==eeeeyy=yeyd=deyy=yyy=ydy=dy=dd=e=ey=dddddy=yeey=ey=eed=ddd=eedy=ddddde=ydeyy=edd=ydy=ddy=yeedd=ydde=dde=edyye=ded=yeed=dddddde=eedy=eyde=ydy=ydydd=eyydd=dd=dddd=ddyye=ydeey=ed=eeeye=y=ydydde=eyyd=eyee=dy=edeyed=dyed==eyyddey=dd=yddd=yddd=de=ddedy=eyydd=eeedy==eyyydeee=d=d=eydd=yey=dyy==yyyedy=

Использует 4 символа dye=.

Решение 1b (не опубликовано): 783 байта * 3 = 2349

eeeeyeeyy=eeyy=yeyye=yyyeeyye=eeeye=yeyey=eyeyyy=eyy=eeyeye=yeyeyyy=yyeeye=yeyy=yey==yyeyeyeye=eyyey=y=yyyyyy=y=eyyeyyyyyyye=eeye=yyeeyye=eyeyeyyy==yeyy=yeyyyeyye=yyyeeyy==eeyyeee==eeyye=yyyyeyyeyyye=yyyyyyy=yeye=eyyyyy=eeye=eeyeeeeey=eyeye=eeee=yeyyye=eyyyyye=y=eeeyyy=eyyeyee=yyy=eyye=yeyeeee=yyeyeyyyy=eeyy=yyyyy=eyyyy=yyeeyye=e=eyyyyy=eyey==eyeyy=yyyyyeyeyeye=ye=yyyyyy==eeeeyy=yeye=yeyyey=yyy=eyyyeeeye==yeeyyeyy=e==yeeeyyyeyy=yeey=ey=eee=eyeyy=yyeeee=yeeyyyyy=yee=yeyyy=yeeeeyy=eyeeeeeye=eeeyy=yyeeeeyyye=yey=yyyyeeyye=yyyyyyy=yeee=eeeeyyeye=eyeeye=eeyyeyyy=eeyee=yyyyyeeyy=eee=eeyyeyyyyy=eeey=eyyeeyy=eyyeyyy=eeeeyeee=eeeye=y=yyyeyy=yyeeee=yyeyey=ey=eyyyyyeyyy=yeye==yeeyyyeyy=yeye=yyyyeeyy=eeeyyeeyyy=yeeyeyyy=eeyye=eee=eyyye==eyeyeyyyyy=e=eeyeeye=yeey=eyeyy=eyeye=ey=eyyeye=

Использует только 3 символа ey=.

Решение 1: 826 байт * 3 = 2478

yoyoy~oyoyo~oyooyy~ooyyoyy~ooyyyyoy~~yoyyo~ooyoooyooo~yoyyo~oyoyoyyy~yyo~oyyoo~~ooooy~oyyyyy~oyoyoo~~oyyyoooyy~~oyoyooyyy~yyooo~yoyo~yoyyyyo~yooyo~y~yyoyyyooyy~oyyooy~ooyoy~oyyooy~ooyyo~yoyyoo~o~ooyo~yooyyoo~yoyoy~ooyyyyooo~oyoyyo~yyoyyyoo~yyo~yyooyyo~yoyyoooy~~yoyyyooyoyy~oyoyyy~yoooyyoy~yooyy~yooyyo~yyooyyoo~oyoyo~oyyy~oyyo~oyyoyo~oyyyoo~oyoyyoo~yooyo~ooooo~~yoyyoyyoyoo~yoyyooo~y~ooooy~yyyoy~ooooyyoyyoy~oyyoo~oyyoyo~yoyyyooy~oyooo~yoyyoyy~yyyyyo~oyooy~oyoyy~yoyyyoy~ooyoy~yoyyoooy~~oyyyo~ooooooy~yooyoyyoyo~yooyyo~oooyyo~yoyooyyo~oyyy~o~yooooy~oyoyyooooy~~yoyyooyyo~oy~yyyoyyyyy~yoyyyoy~yooo~oooy~oooooyyoyyyo~yoyyo~y~oooyyyoyoo~yyooooyoyy~y~oooyyyoy~~yoy~oyyoyoyyy~yoyyyyy~oyooo~yyyyooo~yooyyoy~yooyo~yoyyyo~yyoyyyo~o~ooooooyoy~oyoyyoy~yyoooo~ooooyy~oyoyoy~ooyyo~yyoooyo~yyyyyo~oyyo~yooyyooyyoy~~ooyyyyoyyy~ooyyo~yyooo~

Только использует 3 -х символов: yo~. Программа используется для генерации этого.

В настоящее время все программы используют только инструкции 0, 1, 2, 6. Другими словами, они манипулируют битами в одном байте и распечатывают результат.

n̴̖̋h̷͉a̷̭̿h̸̡̅ẗ̵̨d̷̰ĥ̷̳
источник
19

CJam, 266 281 456 байт * 14 12 7 уникально = 3724 3372 3192

Попробуйте онлайн.

14301201124204202034420112034224204431020210101232301021240204310431312122132100240400222324402030223103420431324402222132223233141443401210314023001122320404112224314302132421403301243334313000011124244441400003310332301330220022110121411122100040310110020040121444302100143202204330334033211334242120304123121024200421121232100303121022431044444423243331440434010014400~~10~~100~~1~43c~c~4~~41c~100~~1~43c~c~123~~100~~1~43c~c~44~~14~~43c~c100~~40c~c43c~~

объяснение

Стратегия, которую я использовал, состоит в том, чтобы обрабатывать каждый символ в строке как цифру от 123 и кодировать ее как десятичное число в программе. Затем программа преобразует это число обратно в базу 123 и отображает каждую цифру базы 123 обратно в символ. Поскольку трудно объяснить, почему программа находится в ее текущем состоянии, я объясню каждую ее версию.

Вот как выглядел конец программы в первой версии:

...2068438725 123b:c

Это реализует стратегию самым простым способом. Число, обычно кодируемое в базе 10, преобразуется обратно в базу 123, и каждая цифра базы 123 отображается обратно в символ. Но при этом используются 4 уникальных нецифровых символа, и возможность избавиться от любого из них, вероятно, будет стоить такого же размера из-за необходимости использовать менее простой код.

Во- первых, я понял , что я мог бы избавиться от bи от :операторов, создавая их во время выполнения , как их значения символов ASCII преобразуются обратно в символ (с уже настоящим cоператором) и оценивать их с ~оператором. Оказалось, что это немного сложно сделать с :оператором, так как он должен быть проанализирован вместе со следующим cоператором. Я решил это путем создания символов, :а cзатем создания и вычисления символа +, который объединяет первые два символа в строку, :cкоторую затем можно правильно оценить.

Во-вторых, я понял, что у ~оператора, который я только что представил, был новый удобный перегруженный вариант: когда ему присваивается число, он производит побитовое дополнение. Используя это два раза подряд после числа, я мог ввести разрыв токена в источнике без результирующего вычислительного эффекта, что позволило бы мне заменить пробелы, используемые для разделения чисел ~~.

Конечный результат - это еще 15 байт кода в конце, но эта стоимость значительно перевешивается за счет исключения двух уникальных символов из 14. Вот сравнение конца первой версии с концом второй версии:

...2068438725  123[ b  ][   :c    ]
...2068438725~~123~~98c~58c99c43c~~

Использовать меньше двух операторов, которые я использовал, было бы невозможно, но я все же хотел меньше уникальных символов. Поэтому следующим шагом было исключить цифры. Изменив кодировку числа таким образом, чтобы каждая десятичная цифра была действительно цифрой от 5 до 5, я мог бы потенциально исключить цифры 6-9. Прежде чем что-либо удалять из конца пргорама, это выглядело так:

...4010014400 10b5b123b:c

Как упомянуто ранее, устранение места легко. Но b, :и cне было бы так легко, так как их коды символов 98, 58и 99, соответственно. Все они содержали цифры, помеченные для исключения, поэтому мне пришлось искать способы вывести их все. И единственными полезными числовыми операторами со значениями символов, не содержащими 5-9, были декремент, приращение, умножение и сложение.

Для 98, я сначала использовал 100~~40c~40c~, который уменьшает 100вдвое. Но потом я понял, что мог бы использовать ~оператор еще раз, поскольку побитовое дополнение позволяет мне получать отрицательные числа, которые при добавлении позволяют имитировать вычитание. Так что я тогда использовал 100~~1~43c~, который добавляет 100и -2и на 2 байта меньше. Ибо 58я использовал 44~~14~~43c~, что добавляет 44и 14. И для 99, я использовал 100~~40c~, который уменьшает 100.

Конечный результат довольно большой и запутанный, но стоимость значительно большего числа и кода обработки была немного перевешена большим преимуществом исключения 5 уникальных символов из 12. Вот сравнение окончательного завершения программы до исключений и после вылеты:

...4010014400  10[      b      ][  5  ][     b     ]123[      b      ][            :c            ]
...4010014400~~10~~100~~1~43c~c~4~~41c~100~~1~43c~c~123~~100~~1~43c~c~44~~14~~43c~c100~~40c~c43c~~
Runer112
источник
Хорошо, теперь я впечатлен. Как сравнить цифры 6, 7 и т. Д. С базой 5?
durron597
@ durron597 Они действительно не делают вычисления проще, так как коды символов операторов мне нужно , ( 98, 58и 99) по - прежнему вне диапазона. И увеличение базы только уменьшает общий размер программы на 8-10%, что недостаточно, чтобы компенсировать 10-15% баллов, полученных за счет нового уникального персонажа. Повторное включение bоператора также не стоит.
Runer112
Возьмите число x и конвертируйте его в базу b. Его длина будет floor(log_b(x)+1), и он будет содержать bразные символы. Так что счет b*floor(log_b(x)+1). x заданное большое число, и если вы построите это для b, вы обнаружите, что минимум в значительной степени равен b = 3. Т.е. длина уменьшается немного, когда вы используете более высокие основания (log), но размер кодировки увеличивается линейно, так что это того не стоит. Сделал простую пробелную программу, но получил всего 4134 баллов.
blutorange
@blutorange Вы должны запустить программу для пробелов. 4134 достаточно для второго места
durron597
16

Пробелы, 1157 937 байт * 3 уникальных = 3471 2811

По популярному (?) Запросу я публикую свое решение для пробелов.

Чтобы уменьшить необходимый код, я жестко закодировал всю строку как одно двоичное число (7 бит на каждый байт). Простой цикл извлекает символы и печатает их.

Исходный код на filebin.ca.

ПРИМЕЧАНИЕ . Спецификации допускают произвольные большие целые числа , но интерпретатор языка Haskell на официальной странице ограничен 20 битами. Используйте, например, этот интерпретатор ruby ​​в github / hostilefork / whitespaces.

Скрипт ruby ​​для создания программы пробелов (l = WHITESPACE, t = TAB, u = NEWLINE, все, что после // игнорируется, записывает в файл prog.h):

str = 'Elizabeth obnoxiously quoted (just too rowdy for my peace): "THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG," giving me a look.'

def b2ws(bin)
    bin.chars.map{|x|x=='0' ? "l" : "t"}.join
end
def d2ws(dec,pad=0)
    b2ws(dec.to_s(2).rjust(pad,'0'))
end

bin = str.reverse.chars.map do |x|
    "  " + d2ws(x.getbyte(0),7) + " // char <#{x=="\n" ? "LF" : x}>"
end
data = "lll // pushes string as one large number\n#{bin.join("\n")}\nu"

File.open('prog.h','w') do |fout|
    fout << data << "\n"
    fout << <<-eos

// output string loop
ulllu // label 0

  // extract, print, and remove the last 7 bits of the data
  lul   // dup
  llltlllllllu // push 128
  tltt // mod
  tull  // print as char
  llltlllllllu // push 128
  tltl // div

  // break loop if EOS
  lul   // dup
  utltu // jump to 1 if top of stack is zero

ululu // jump to 0

ulltu // label 1
uuu
    eos
end

Для иллюстрации, программа для пробелов в удобочитаемой форме. Ниже приведен простой скрипт для преобразования его в настоящую пробелную программу.

lll // pushes string as one large number
  ltltttl // char <.>
  ttltltt // char <k>
  ttltttt // char <o>
  ttltttt // char <o>
  ttlttll // char <l>
  ltlllll // char < >
  ttllllt // char <a>
  ltlllll // char < >
  ttlltlt // char <e>
  ttlttlt // char <m>
  ltlllll // char < >
  ttllttt // char <g>
  ttltttl // char <n>
  ttltllt // char <i>
  tttlttl // char <v>
  ttltllt // char <i>
  ttllttt // char <g>
  ltlllll // char < >
  ltllltl // char <">
  ltlttll // char <,>
  tlllttt // char <G>
  tlltttt // char <O>
  tllltll // char <D>
  ltlllll // char < >
  tlttllt // char <Y>
  tlttltl // char <Z>
  tlllllt // char <A>
  tllttll // char <L>
  ltlllll // char < >
  tllltlt // char <E>
  tlltlll // char <H>
  tltltll // char <T>
  ltlllll // char < >
  tltlltl // char <R>
  tllltlt // char <E>
  tltlttl // char <V>
  tlltttt // char <O>
  ltlllll // char < >
  tltlltt // char <S>
  tltllll // char <P>
  tllttlt // char <M>
  tltltlt // char <U>
  tlltltl // char <J>
  ltlllll // char < >
  tlttlll // char <X>
  tlltttt // char <O>
  tlllttl // char <F>
  ltlllll // char < >
  tlltttl // char <N>
  tltlttt // char <W>
  tlltttt // char <O>
  tltlltl // char <R>
  tlllltl // char <B>
  ltlllll // char < >
  tlltltt // char <K>
  tlllltt // char <C>
  tlltllt // char <I>
  tltltlt // char <U>
  tltlllt // char <Q>
  ltlllll // char < >
  tllltlt // char <E>
  tlltlll // char <H>
  tltltll // char <T>
  ltllltl // char <">
  ltlllll // char < >
  ltttltl // char <:>
  ltltllt // char <)>
  ttlltlt // char <e>
  ttllltt // char <c>
  ttllllt // char <a>
  ttlltlt // char <e>
  tttllll // char <p>
  ltlllll // char < >
  ttttllt // char <y>
  ttlttlt // char <m>
  ltlllll // char < >
  tttlltl // char <r>
  ttltttt // char <o>
  ttllttl // char <f>
  ltlllll // char < >
  ttttllt // char <y>
  ttlltll // char <d>
  tttlttt // char <w>
  ttltttt // char <o>
  tttlltl // char <r>
  ltlllll // char < >
  ttltttt // char <o>
  ttltttt // char <o>
  tttltll // char <t>
  ltlllll // char < >
  tttltll // char <t>
  tttlltt // char <s>
  tttltlt // char <u>
  ttltltl // char <j>
  ltltlll // char <(>
  ltlllll // char < >
  ttlltll // char <d>
  ttlltlt // char <e>
  tttltll // char <t>
  ttltttt // char <o>
  tttltlt // char <u>
  tttlllt // char <q>
  ltlllll // char < >
  ttttllt // char <y>
  ttlttll // char <l>
  tttlltt // char <s>
  tttltlt // char <u>
  ttltttt // char <o>
  ttltllt // char <i>
  ttttlll // char <x>
  ttltttt // char <o>
  ttltttl // char <n>
  ttllltl // char <b>
  ttltttt // char <o>
  ltlllll // char < >
  ttltlll // char <h>
  tttltll // char <t>
  ttlltlt // char <e>
  ttllltl // char <b>
  ttllllt // char <a>
  ttttltl // char <z>
  ttltllt // char <i>
  ttlttll // char <l>
  tllltlt // char <E>
u

// output string loop
ulllu // label 0

  // extract, print, and remove the last 7 bits of the data
  lul   // dup
  llltlllllllu // push 128
  tltt // mod
  tull  // print as char
  llltlllllllu // push 128
  tltl // div

  // break loop if EOS
  lul   // dup
  utltu // jump to 1 if top of stack is zero

ululu // jump to 0

ulltu // label 1
uuu

По сути, строка для вывода представляет собой длинное целое число, и вам нужно уменьшить его счет.

Возьмите число x и конвертируйте его в базу b. Его длина будет floor(log_b(x)+1), и он будет содержать bразные символы. Так что счет b*floor(log_b(x)+1). xэто заданное большое число, и если вы построите это для b, вы обнаружите, что минимум почти равен b=3b=2почти так же хорош). Т.е. длина уменьшается немного, когда вы используете более высокие основания (log), но размер кодировки увеличивается линейно, так что это того не стоит.

Таким образом, я искал язык только с 0/1, но не нашел ни одного, а потом вспомнил, что есть пробелы, и попробовал его. В пробеле вы можете ввести двоичные числа с 0 и 1 напрямую.


Старый код, хуже оценка, но интереснее

Старый код в filebin .

Сценарий ruby, который я использовал для создания программы (l = WHITESPACE, t = TAB, u = NEWLINE, все после //игнорирования записывает в файл prog.h):

str = 'Elizabeth obnoxiously quoted (just too rowdy for my peace): "THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG," giving me a look.' + "\n"

def shift(x)
    (x-97)%128
end

EOS = "lttltl" #26
STACK = []

bin = str.reverse.chars.map do |x|
    byte = shift(x.getbyte(0))
    rf = STACK.index(byte)
    STACK.unshift(byte)

    y = byte.to_s(2).chars.map{|y|y=='0' ? 'l' : 't'}.join
    ph = "lll#{y}u" # pushing directly
    if rf
        bn = rf.to_s(2).chars.map{|y|y=='0' ? 'l' : 't'}.join
        cp = "ltll#{bn}u" # copying from stack
    end

    if STACK.size>0 && STACK[0]==STACK[1]
        "lul // dup #{x.inspect}"
    elsif cp && cp.size < ph.size
        "#{cp} // copy <#{x.inspect}> (from #{rf})"
    else
        "#{ph} // push <#{x.inspect}> (#{shift(x.getbyte(0))})"
    end
end

File.open('prog.h','w') do |fout|
    fout << "ll#{EOS}u // push EOS" << "\n"
    fout << bin.join("\n") << "\n"
    fout << <<-eos
// output string
ullu // label 0
  // add 97 (128) before printing
  lllttlllltu // push 97
  tlll // add
  llltlllllllu // push 128
  tltt // mod
  tull  // print top of stack

  // break loop if EOS
  lul   // dup
  ll#{EOS}u // push EOS
  tllt // subtract
  utltu // jump to 1 if top of stack is zero
uluu // jump to 0

ulltu // label 1
uuu
    eos
end

Для иллюстрации, программа для пробелов в удобочитаемой форме. Ниже приведен простой скрипт для преобразования его в настоящую пробелную программу.

lllttltlu // push EOS
llltltlltu // push <"\n"> (41)
llltllttltu // push <"."> (77)
llltltlu // push <"k"> (10)
llltttlu // push <"o"> (14)
lul // dup "o"
llltlttu // push <"l"> (11)
lllttttttu // push <" "> (63)
llllu // push <"a"> (0)
ltlltu // copy <" "> (from 1)
llltllu // push <"e"> (4)
lllttllu // push <"m"> (12)
ltlltlu // copy <" "> (from 2)
lllttlu // push <"g"> (6)
lllttltu // push <"n"> (13)
llltlllu // push <"i"> (8)
llltltltu // push <"v"> (21)
ltlltu // copy <"i"> (from 1)
lllttlu // push <"g"> (6)
ltllttlu // copy <" "> (from 6)
llltllllltu // push <"\""> (65)
llltlltlttu // push <","> (75)
lllttllttlu // push <"G"> (102)
lllttltttlu // push <"O"> (110)
lllttlllttu // push <"D"> (99)
ltlltltu // copy <" "> (from 5)
lllttttlllu // push <"Y"> (120)
lllttttlltu // push <"Z"> (121)
lllttlllllu // push <"A"> (96)
lllttltlttu // push <"L"> (107)
ltlltllu // copy <" "> (from 4)
lllttlltllu // push <"E"> (100)
lllttlltttu // push <"H"> (103)
llltttllttu // push <"T"> (115)
ltllttu // copy <" "> (from 3)
llltttllltu // push <"R"> (113)
ltlltllu // copy <"E"> (from 4)
llltttltltu // push <"V"> (117)
ltlltttlu // copy <"O"> (from 14)
ltlltllu // copy <" "> (from 4)
llltttlltlu // push <"S"> (114)
lllttlttttu // push <"P"> (111)
lllttlttllu // push <"M"> (108)
llltttltllu // push <"U"> (116)
lllttltlltu // push <"J"> (105)
ltlltltu // copy <" "> (from 5)
llltttltttu // push <"X"> (119)
ltlltlllu // copy <"O"> (from 8)
lllttlltltu // push <"F"> (101)
ltllttu // copy <" "> (from 3)
lllttlttltu // push <"N"> (109)
llltttlttlu // push <"W"> (118)
ltlltllu // copy <"O"> (from 4)
ltlltllltu // copy <"R"> (from 17)
lllttlllltu // push <"B"> (97)
ltlltltu // copy <" "> (from 5)
lllttltltlu // push <"K"> (106)
lllttllltlu // push <"C"> (98)
lllttltlllu // push <"I"> (104)
ltllttttu // copy <"U"> (from 15)
llltttllllu // push <"Q"> (112)
ltlltltu // copy <" "> (from 5)
ltllttlltu // copy <"E"> (from 25)
ltllttttlu // copy <"H"> (from 30)
ltllttttlu // copy <"T"> (from 30)
llltllllltu // push <"\""> (65)
ltlltllu // copy <" "> (from 4)
llltlttlltu // push <":"> (89)
llltlltlllu // push <")"> (72)
llltllu // push <"e"> (4)
llltlu // push <"c"> (2)
llllu // push <"a"> (0)
llltllu // push <"e"> (4)
lllttttu // push <"p"> (15)
ltlltttu // copy <" "> (from 7)
lllttlllu // push <"y"> (24)
lllttllu // push <"m"> (12)
ltlltlu // copy <" "> (from 2)
llltllltu // push <"r"> (17)
llltttlu // push <"o"> (14)
llltltu // push <"f"> (5)
ltllttu // copy <" "> (from 3)
ltllttlu // copy <"y"> (from 6)
lllttu // push <"d"> (3)
llltlttlu // push <"w"> (22)
llltttlu // push <"o"> (14)
ltlltttu // copy <"r"> (from 7)
ltlltltu // copy <" "> (from 5)
ltlltlu // copy <"o"> (from 2)
lul // dup "o"
llltllttu // push <"t"> (19)
ltllttu // copy <" "> (from 3)
ltlltu // copy <"t"> (from 1)
llltlltlu // push <"s"> (18)
llltltllu // push <"u"> (20)
llltlltu // push <"j"> (9)
llltllltttu // push <"("> (71)
ltlltltu // copy <" "> (from 5)
lllttu // push <"d"> (3)
llltllu // push <"e"> (4)
ltlltttu // copy <"t"> (from 7)
llltttlu // push <"o"> (14)
ltlltttu // copy <"u"> (from 7)
llltllllu // push <"q"> (16)
ltllttlu // copy <" "> (from 6)
lllttlllu // push <"y"> (24)
llltlttu // push <"l"> (11)
llltlltlu // push <"s"> (18)
ltlltltu // copy <"u"> (from 5)
llltttlu // push <"o"> (14)
llltlllu // push <"i"> (8)
llltltttu // push <"x"> (23)
ltlltlu // copy <"o"> (from 2)
lllttltu // push <"n"> (13)
llltu // push <"b"> (1)
ltlltlu // copy <"o"> (from 2)
ltlltlttu // copy <" "> (from 11)
llltttu // push <"h"> (7)
llltllttu // push <"t"> (19)
llltllu // push <"e"> (4)
llltu // push <"b"> (1)
llllu // push <"a"> (0)
lllttlltu // push <"z"> (25)
llltlllu // push <"i"> (8)
llltlttu // push <"l"> (11)
lllttlltllu // push <"E"> (100)
// output string
ullu // label 0
  // add 97 (128) before printing
  lllttlllltu // push 97
  tlll // add
  llltlllllllu // push 128
  tltt // mod
  tull  // print top of stack

  // break loop if EOS
  lul   // dup
  lllttltlu // push EOS
  tllt // subtract
  utltu // jump to 1 if top of stack is zero
uluu // jump to 0

ulltu // label 1
uuu

Сама эта программа для пробелов довольно проста, но есть три оптимизации игры в гольф:

  • использовать lulдля клонирования стека, когда есть повторяющийся символ
  • используйте ltlдля клонирования n-й записи стека, если она короче, чем прямое нажатие на символ
  • сдвинуть все байты на 97 (мод 128), уменьшить двоичные числа

Простой скрипт ruby ​​для преобразования моего читаемого человеком кода в реальную программу (чтение файла prog.hи запись в файл prog.ws):

WHITESPACE = "l"
NEWLINE = "u"
TAB = "t"

File.open('prog.ws','w') do |fout|
    code = ""
    fin = File.read('prog.h')
    fin.each_line do |line|
        line.gsub!(/\/\/.*/,'')
        line.scan(/#{NEWLINE}|#{WHITESPACE}|#{TAB}/i) do |x|

            code << case x.downcase
            when NEWLINE.downcase
                "\n"
            when WHITESPACE.downcase
                " "
            when TAB.downcase
                "\t"
            else
                ""
            end
        end
    end
    fout << code
end
blutorange
источник
Конечный символ новой строки является необязательным, вы можете сохранить несколько символов, не печатая его.
durron597
Спасибо, изменил это. Первоначально я включил его, потому что интерпретатор Haskell добавляет некоторую отладочную информацию, но с ruby ​​он выглядит чисто.
Blutorange
7

Ruby 144 байта * 39 уникальных = 5616

puts"Elizabeth obnoxiously quoted (just too rowdy for my peace): \"#{'the quick brown fox jumps over the lazy dog,'.upcase}\" giving me a look."

Иногда самое простое - лучшее.

MegaTom
источник
Вы не используете никаких упрощений в данных. Примеры cjam и пробелов получили впечатляющие оценки вместе с некоторыми объяснениями. Даже с бонусом за использование аккуратного кода на вменяемом языке, это слишком много, чтобы придумывать! Может быть, вы можете повторно войти в длину + уникальный конкурс выигрыша.
Jose_X
6

Brainfuck, 1264 байта * 7 уникальных = 8848

Да, это ужасная оценка.

++++[++++>---<]>++.-[--->+<]>.---.-[--->+<]>++.[->+++++<]>-.+.+++.[--->+<]>---.------------.--[--->+<]>--.+++++[->+++<]>.-------------.++++++++++++.+.+++++++++.[->+++<]>+.++++++.++++++.--.-------.-[--->+<]>.-[---->+<]>++.----[->++++<]>+.++++.------.+++++.+++[->+++<]>.-.-[--->+<]>-.++++++++.-----[->+++<]>+.+++++++++++.--.+.[---->+<]>+++.---[->++++<]>.-----..[--->+<]>-----.---[----->++<]>.---.++++++++.[->+++<]>-.+[--->+<]>++.-[---->+<]>++.++[->+++<]>.+++++++++.+++.[-->+++++<]>+++.+[----->+<]>.--[--->+<]>.-[---->+<]>++.[-->+++++++<]>.-----------.----.++.++.--[->+++<]>.-[-->+++<]>--.[-->+<]>+++.++.>-[--->+<]>-.------------.---.-[-->+<]>--.[-->+++++<]>+.++++.------------.------.++++++++.---[->++++<]>.+[->++<]>.>-[--->+<]>---.---.++++++++.---------.++[----->++<]>.+++[->++<]>.+++++++++.+++++++++.[--->++++<]>.+++++[->++<]>.>-[--->+<]>.--------.+++.+++.+[--->+<]>++++.[-->+++++<]>-.+++++++.--[----->+<]>+.+++++++++++++.--[----->++<]>.>-[--->+<]>-.------------.---.-[-->+<]>--.++++++[->++<]>.-----------.-----[-->+++<]>.-.+[--->+<]>++.++[->++<]>.+++++++++++.--------.--[--->++<]>--.----------.--.++[->+++<]>+.++.[->++++++<]>.[------>+<]>.+++++.-------.-[--->+<]>--.+[----->+<]>.--------.--[--->+<]>-.[->+++<]>+.-[->+++<]>.++[--->++<]>.+++..----.[->++++++++++<]>.
mbomb007
источник
Я обнаружил, что можно использовать меньше уникальных символов, но длина будет 10795, умножить на 5 = 53975.
mbomb007
Вы могли бы сделать это только с +.уверенностью, что это будет немного меньше, хотя.
Captncraig
Используя только +и .я получаю 15018 * 2 = 30,036.
Captncraig
6

> <> (Рыба) - 578 байт * 8 уникальных = 4624

14121412412431421124321110441421130402401433401430421141143114240333221142303303210321143224241321121343212340321131301320302344221132340304221130322340321313221100323234202311321143224241341121131213110444324310422421114441421142412420421114400443412442421112412413421113403423411403121100410413412423432421114431403423412401404412402434312421140413410434324324401431443243*3*3+3*1+00p44*4+3*2+01p44*3*4+1+11p44*3*4+1+21p43+3*2*31p43+3*2*41p43*3*41+1p44*3*4+1+42+1p43+3*2*43+1p43+3*2*1+44+1p43+3*2*1+33*1p43*3*3*3+33*1+1p43*3*3*33*2+1p43+3*3*43*1p44*2*1+43*1+1p44*3+3*2+43*2+1p

Моя оценка не так конкурентоспособна, как я надеялся, но я подумал, что это решение было достаточно интересным для публикации.

объяснение

Первый раздел кода представляет собой длинную строку из цифр 0-4, которые представляют 3-значное базовое 5 представление для каждого символа в строке. В оставшемся коде используется pоператор Fish, который позволяет редактировать исходный код программы во время ее работы. Используя этот оператор, я смог сгенерировать код Фиша, необходимый для преобразования базовых 5 символов обратно в базовые 10 и их вывода, а затем поместить этот код обратно в исходный код в начале файла до того, как интерпретатор достигнет конца линии и обернуты вокруг. Когда интерпретатор достигает конца строки, код был изменен так:

v4121412412431421124321110441421130402401433401430421141143114240333221142303303210321143224241321121343212340321131301320302344221132340304221130322340321313221100323234202311321143224241341121131213110444324310422421114441421142412420421114400443412442421112412413421113403423411403121100410413412423432421114431403423412401404412402434312421140413410434324324401431443243*3*3+3*1+00p44*4+3*2+01p44*3*4+1+11p44*3*4+1+21p43+3*2*31p43+3*2*41p43*3*41+1p44*3*4+1+42+1p43+3*2*43+1p43+3*2*1+44+1p43+3*2*1+33*1p43*3*3*3+33*1+1p43*3*3*33*2+1p43+3*3*43*1p44*2*1+43*1+1p44*3+3*2+43*2+1p
>55**$5*++ol?!; 

Когда код оборачивается и попадает в vоператор, он переходит ко второй строке, попадает в >оператор и переходит к циклу, каждый раз преобразуя кодирование base 5 обратно в значение ascii base 10, а затем выводит это значение. Когда в стеке больше нет значений, ?оператор переходит к ;и программа завершается.

tallestpurpl
источник
5

7 , 273 байта × 7 уникальных байтов = 1911, неконкурентоспособен (языковые испытания после даты)

501513010250341012432044041204045104011053033043511402401130443235151151105240424404004144031133304214014044433043401032201433022042551243201043511102223044114403120042140450415114434050440500114042432010430032533041340424320250451514210501020420444010403043040402343447403

Попробуйте онлайн!

К сожалению, это старая проблема, а это значит, что я не смогу победить на одном из своих новейших языков. Тем не менее, язык был создан без знания задачи (я просто случайно наткнулся на него в «связанных вопросах»), но, тем не менее, оказалось, что он идеально подходит.

7 программ на PPCG обычно отправляются в упакованном формате, упаковывая восемь команд в три байта (язык имеет двенадцать команд, но в исходном файле может быть только восемь, то есть достаточно трех бит). Тем не менее, язык также поддерживает восьмеричный формат, в котором каждая команда записана в виде цифры ASCII, и это то, что я здесь использовал, это означает, что используются только семь различных байтов ( 6команда не требуется в программе, которая просто печатает простая строка).

Программа очень проста; он состоит из двух элементов стека: длинная строка, которая просто дословно печатается, a 7для разделения элементов (к сожалению, это неизбежно), и 403который является простым способом печати постоянной строки в 7 ( 40экранирует второй элемент стека, перемещая его в вершина стека, затем 3печатает его и удаляет старый первый элемент стека, то есть 403сам).

Итак, как я получил строку длиной 269 байт? 7 поддерживает несколько форматов ввода / вывода, и одним из его форматов является US-TTY , набор символов (в частности, вариант Baudot), который широко использовался до изобретения ASCII. (В 5начале второго элемента стека, т. Е. В начале программы, указывается кодировка строки; остальное - само содержимое строки.) Это пятибитный набор символов и команды 0для5может безопасно храниться в строках, будучи последовательно неэкранированным (так что выход из него один раз точно воспроизведет оригинал), поэтому язык использует пары команд (36 опций) для кодирования символов US-TTY (32 опции, причем 4 используется для директивы к самому 7-му переводчику). Конечно, есть более 32 уникальных символов, которые люди могут захотеть вывести (и более 32 символов появляются в строке), поэтому два символа являются «кодами сдвига», которые переключаются между четырьмя наборами символов (прописными буквами, строчными буквами , цифры и пользовательское «расширение цифр», которое 7 использует для оставшихся символов ASCII, которых нет в других наборах символов, однако все символы в строке «изначально» в US-TTY, поэтому подробности расширение не имело значения). Вот'

Ełlizabeth obnoxiously quoted Ø(Łłjust too rowdy for my peaceØ):
"ŁTHE QUICK BROWN FOX JUMPS OVER THE LAZY DOGØ," Łłgiving me a lookØ.

Я считаю десять смен, добавленных к 124 символам ввода, довольно незначительное соотношение. Таким образом, возможность использовать только чуть более двух байтов ввода на символ ввода, умноженный на 7 уникальных байтов, означает, что оценка по этой задаче невероятно хороша. (Я полагаю, что язык, который был разработан специально для этой задачи, использовал бы некое сжатие строк, а не ранее существовавший набор символов, но хотя Baudot и US-TTY не были предназначены для игры в гольф, они все еще довольно лаконичны .)


источник
Эта лазейка заключается в том, чтобы не допустить написания языка с целью ответить на вызов, что явно не так. Все еще заслуживает одобрения от меня, хотя я не могу принять это несмотря на то, что у меня самый низкий балл на сегодняшний день.
durron597
2

Python 2 163 147 145 143 байта * 35 36 35 уникально = 5705 5292 5220 5005

Это, вероятно, примерно так же хорошо, как я собираюсь получить это.

Редактирование:

  1. Удалено .capitalize()в пользу использования E.
  2. Изменено использование 'вместо обратной косой черты экранирующих кавычек.
  3. Удалены +и некоторые пробелы для использования запятых в printутверждении.
print"Elizabeth obnoxiously quoted (just too rowdy for my peace):",'"the quick brown fox jumps over the lazy dog,"'.upper(),"giving me a look."
mbomb007
источник
Я попытался начать с двоичного или шестнадцатеричного и преобразовать в строку, но преимущества теряются в процессе преобразования.
mbomb007
2

Python 2, 14508 11700 11088 10164 9486 9746 7860 145 байтов * 36 уникальных = 5220

Я увидел название и подумал, что это довольно интересный вызов для довольно многословного Python. Это мои заметки, когда я решил эту проблему.

Моя первая попытка уменьшила число уникальных игроков до 31:

print''.join(chr([69,108,105,122,97,98,101,116,104,32,111,98,110,111,120,105,111,117,115,108,121,32,113,117,111,116,101,100,32,40,106,117,115,116,32,116,111,111,32,114,111,119,100,121,32,102,111,114,32,109,121,32,112,101,97,99,101,41,58,32,34,84,72,69,32,81,85,73,67,75,32,66,82,79,87,78,32,70,79,88,32,74,85,77,80,83,32,79,86,69,82,32,84,72,69,32,76,65,90,89,32,68,79,71,44,34,32,103,105,118,105,110,103,32,109,101,32,97,32,108,111,111,107,46][r])for r in range(124))

Я думал, что мог сделать лучше. При использовании mapуникальности дошло до 26:

print''.join(map(chr,(69,108,105,122,97,98,101,116,104,32,111,98,110,111,120,105,111,117,115,108,121,32,113,117,111,116,101,100,32,40,106,117,115,116,32,116,111,111,32,114,111,119,100,121,32,102,111,114,32,109,121,32,112,101,97,99,101,41,58,32,34,84,72,69,32,81,85,73,67,75,32,66,82,79,87,78,32,70,79,88,32,74,85,77,80,83,32,79,86,69,82,32,84,72,69,32,76,65,90,89,32,68,79,71,44,34,32,103,105,118,105,110,103,32,109,101,32,97,32,108,111,111,107,46)))

Примерно в это же время я заметил в тексте вопроса, что оценка была uniques * bytesне просто уникальной! Это означало, что мои оценки за вышеупомянутые были 14508 и 11700. Не очень конкурентоспособны. Поэтому я теперь уменьшаю байты, сохраняя текст в виде шестнадцатеричной строки:

# 308*36 = 11088
print''.join(chr(int('456c697a6162657468206f626e6f78696f75736c792071756f74656420286a75737420746f6f20726f77647920666f72206d79207065616365293a202254484520515549434b2042524f574e20464f58204a554d5053204f56455220544845204c415a5920444f472c2220676976696e67206d652061206c6f6f6b2e'[i*2:i*2+2],16)) for i in range(124))

Размер был уменьшен, но больше уникальных персонажей. Но если бы я использовал упакованную двузначную десятичную строку со смещением 32:

# 308*33 = 10164
print''.join(chr(int('37767390656669847200796678798873798583768900818579846968000874858384008479790082798768890070798200778900806965676909260002524037004953413543003450475546003847560042534548510047543750005240370044335857003647391202007173867378710077690065007679797514'[i*2:i*2+2])+32) for i in range(124))

Это имеет такое же количество байтов, но сохраняет 3 уникальных.

Я вынашиваю новый план. Если я упаковываю длинное целое число Python с 7-битными символами, я могу извлечь каждое из них, сдвинув:

# 306*31 = 9486
h=1073974643401006528619595312441225198653732186368270382545648881135648217524502741093886285232362673460172159947573049818819511630304840724474679255867143965214892747087773876949021986013520804726327302180335979259392708372721217579101211940864406962137554744750
w=''
while h:w=chr(h&127)+w;h>>=7
print w

Ну, это уменьшило счет до 9486. Интересный эксперимент, но далеко не достаточно хороший. А что если я избавлюсь от имен функций и буду использовать форматирование строк?

# 443 * 22 = 9746
print('%c'*124)%(69,108,105,122,97,98,101,116,104,32,111,98,110,111,120,105,111,117,115,108,121,32,113,117,111,116,101,100,32,40,106,117,115,116,32,116,111,111,32,114,111,119,100,121,32,102,111,114,32,109,121,32,112,101,97,99,101,41,58,32,34,84,72,69,32,81,85,73,67,75,32,66,82,79,87,78,32,70,79,88,32,74,85,77,80,83,32,79,86,69,82,32,84,72,69,32,76,65,90,89,32,68,79,71,44,34,32,103,105,118,105,110,103,32,109,101,32,97,32,108,111,111,107,46)

У меня сейчас только 22 уникальности, но счет не улучшается.

Хорошо, что если я выбрал очевидный путь и просто напечатал строку:

# 131*60 = 7860
print'Elizabeth obnoxiously quoted (just too rowdy for my peace): "THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG," giving me a look.'

Оценка 7860. Я должен был сделать это первым. Но я бы так много не узнал.

Я думаю, я мог бы уменьшить уникальность на 26, если бы я динамически создавал заглавные буквы, так что:

# 145*36 = 5220
print'Elizabeth obnoxiously quoted (just too rowdy for my peace): '+'"the quick brown fox jumps over the lazy dog,"'.upper()+' giving me a look.'

Я думаю, что Python не станет намного лучше, чем 5220. Задача минимизации уникальных символов в Python, безусловно, была поучительной.

Обновление: mbomb007 имеет лучшее решение Python, набрав 5005. Хорошая работа.

Логика Найт
источник
Приятных оптимизаций в вашем решении +1. Я отредактировал название, как вы предложили.
Логика Найт
1

> <> (Рыба) - 138 байт * 65 уникально = 8970

Простой маршрут, т.е. Hello World:

!v'Elizabeth obnoxiously quoted (just too rowdy for my peace): "THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG," giving me a look.'r!
 >l?!;o

Ну, для моего первого набега на> <> это было проблемой. Я думаю, что вижу некоторые улучшения, но было весело учиться :)

Или сделать его слишком сложным - 1567 байт * 27 уникальных = 42309

!\f8+3*:o2*f2*-:o3-:of+2+:ofa+-:o1+:o3+:of+:oc-:o\7+:od-:oc+:o1+:o9+: of-:o6+:o6+:o2-:o7-: od+:o\8-:o4+:o6-:o5+:of -:o1-:o\\6+:ob+ :o2-:o1+:o\:o5-:o:o\3+ :o3-:o8+:of4+-:oab ++:o\f4+-:o9+ :o3+: o\!
!5:of+a+:o1-:off+2+o:f-6-oa-:o8-:of3*1-:oa-:o2-:!fo3*7+:o2+:o:d+o:o5!f+:o7-:off+2+o6+:o8-!f:off!f+2+o4-:off+2+ob+!f:o3+::\ff    f f          f        f  f                  f    f        f     \!f-
 -                                               f                   f                    f     f                 f       ff    3 f          f        f  f                  f    f        f       f
 :                                               +                   +                    +     +                 +       ++    * +          +        +  +                  +    +        +       +
 o                                               2                   2                    2     2                 2       2a    1 2          2        2  2                  2    2        2       2
 c                                               +                   +                    +     +                 +       ++    + +          +        +  +                  +    +        +       +
 +                                               o                   o                    o     o                 o      \oo4-o \ o;         o        o  o                  o    o        o       o
 \:off+2+o9-:ob-:o4-:o2+:o2+:of4*%:of2++:o2,3+:o2 +:o3*f-3-:oc-:o3-:o\c+:o4+:oc-:o6-:o8+:o\9-:of 1++:o3-:o8+:o9-:o\8-:o9+:  o9+: o\e-:ob+:o8- :o3+:o3+ :o\4-:o7+:o2-f-:od+:o\2+:o c-:o3-:o\7+:ob\
Vlad274
источник
Если вы напишите строку в обратном направлении, вы можете сбросить rстек в обратном порядке :) Также вы можете переместить финал oв пустое пространство в начале второй строки.
Sp3000
@ Sp3000 Спасибо за советы!
Влад274
В любом случае вы могли бы избежать f f + 2 + oстолько раз в сложной?
mbomb007
В лучшем случае, есть ли простой способ в верхнем регистре ? Цикл по подпрограмме, которая добавляет 32 к каждому в этой части строки, сохраняя вам некоторые уникальные символы, может быть?
mbomb007
@ mbomb007 Я мог бы оптимизировать это, используя регистр, или я мог даже прочитать пробел из самого исходного кода. Я супер новичок в Рыбе, поэтому я не знаю, возможно ли это
Vlad274
1

05AB1E , 380 байт * 11 символов = 4180 баллов

Это потенциально не конкурирует

"234413410442342343401431404112421343420421440410421432430413441112423432421431401400112130411432430431112431421421112424421434400441112402421424112414441112422401342344401131213112114314242234112311320243232300112231312304322303112240304323112244320302310313112304321234312112314242234112301230330324112233304241134114112403410433410420403112414401112342112413421421412141"3ô5öçJ

Попробуйте онлайн!

Выдвигает основание 5 представления символов ASCII, объединенных вместе.
Разбивает на части по 3, преобразует обратно в десятичную.
Преобразует ASCII целое число обратно в символ.
Присоединяется обратно вместе.

Урна волшебного осьминога
источник
0

Perl 6, 139 байт * 36 уникальных = 5004

say 'Elizabeth obnoxiously quoted (just too rowdy for my peace): "'~"the quick brown fox jumps over the lazy dog".uc~'," giving me a look.'
bb94
источник
0

Java 8, 141 байт * 64 уникальных символа = 9,024

()->{return"Elizabeth obnoxiously quoted (just too rowdy for my peace): \"THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG,\" giving me a look.";}

141 байт, 64 уникальных символа. Подходы, отличные от простого «возврата строки», увеличивают количество байтов, не сильно экономя на используемых символах.


источник
0

Tcl , 345 байтов, 345 x 13 = 4485

\160\165\164\163 [\163\165\142\163\164 [\162\145\147\163\165\142 \55\141\154\154 \50\\\144\\\144\51 "055451724142456450 5742565770515765635471 616557644544 \5052656364 645757 6257674471 465762 5571 6045414345\51\72 \"241005 2125110313 0222172716 061730 1225152023 17260522 241005 14013231 041707\"\54 475166515647 5545 41 54575753" \\\\1\\1]]\56

Попробуйте онлайн!


Tcl , 337 байт, 337 x 15 = 5055

\160\165\164\163 [\163\165\142\163\164 [\162\145\147\163\165\142 \55\141\154\154 (\\\144\\\144) "055451724142456450 5742565770515765635471 616557644544 (52656364 645757 6257674471 465762 5571 6045414345)\72 \"241005 2125110313 0222172716 061730 1225152023 17260522 241005 14013231 041707\"\54 475166515647 5545 41 54575753" \\\\1\\1]]\56

Попробуйте онлайн!

Tcl , 329 байт, 329 x 16 = 5264

\160\165\164\163 [\163\165\142\163\164 [\162\145\147\163\165\142 \55\141\154\154 (\\d\\d) "055451724142456450 5742565770515765635471 6165576445d (52656364 645757 625767d71 465762 5571 6045414345)\72 \"241005 2125110313 0222172716 061730 1225152023 17260522 241005 14013231 041707\"\54 475166515647 5545 41 54575753" \\\\1\\1]]\56

Попробуйте онлайн!


Tcl , 333 байта, 333 x 16 = 5328

\160\165\164\163 [\163\165\142\163\164 [\162\145\147\163\165\142 \55\141\154\154 (\\d\\d) "055451724142456450 5742565770515765635471 6165576445d \5052656364 645757 625767d71 465762 5571 6045414345\51\72 \"241005 2125110313 0222172716 061730 1225152023 17260522 241005 14013231 041707\"\54 475166515647 5545 41 54575753" \\\\1\\1]]\56

Попробуйте онлайн!


Tcl , 148 байтов, 148 x 37 = 5476

puts "Elizabeth obnoxiously quoted (just too rowdy for my peace): \"[string tou "the quick brown fox jumps over the lazy dog"],\" giving me a look."

Попробуйте онлайн!

Tcl , 277 байтов, 277 x 21 = 5817

\160u\164s [subs\164 [\162\145\147sub \55\141\154\154 (\\d\\d) "0554517241b456450 ob56o7051ous5471 61uo6445d(52us64 64oo 62o67d71 46o62 5571 6045414345): 241005 2125110313 0222172716 061730 1225152023 17260522 241005 14013231 041707\" 475166515647 5545 41 54oo53" \\\\1\\1]]\56

Попробуйте онлайн!

Tcl , 371 байт, 371 x 16 = 5936

puts "\105\154\151\172\141\142\145t\150 o\142\156o\170\151ous\154\171 \161uot\145\144 \50\152ust too \162o\167\144\171 \146o\162 \155\171 p\145\141\143\145\51\72 \"\124\110\105 \121\125\111\103\113 \102\122\117\127\116 \106\117\130 \112\125\115\120\123 \117\126\105\122 \124\110\105 \114\101\132\131 \104\117\107\54\" \147\151\166\151\156\147 \155\145 \141 \154oo\153\56"

Попробуйте онлайн!

Tcl , 401 байт, 401 x 16 = 6416

puts "\105\154\151\172\141\142\145\164\150 o\142\156o\170\151o\165\163\154\171 \161\165o\164\145\144 \50\152\165\163\164 \164oo \162o\167\144\171 \146o\162 \155\171 \160\145\141\143\145\51\72 \"\124\110\105 \121\125\111\103\113 \102\122\117\127\116 \106\117\130 \112\125\115\120\123 \117\126\105\122 \124\110\105 \114\101\132\131 \104\117\107\54\" \147\151\166\151\156\147 \155\145 \141 \154oo\153\56"

Попробуйте онлайн!


Tcl , 403 байта, 403 x 16 = 6448

puts "\105\154\151\172\141\142\145\164\150 o\142\156o\170\151o\165\163\154\171 \161\165o\164\145\144 \50\152\165\163\164 \164oo \162o\167\144\171 \146o\162 \155\171 \160\145\141\143\145\51\72 \42\124\110\105 \121\125\111\103\113 \102\122\117\127\116 \106\117\130 \112\125\115\120\123 \117\126\105\122 \124\110\105 \114\101\132\131 \104\117\107\54\42 \147\151\166\151\156\147 \155\145 \141 \154oo\153\56"

Попробуйте онлайн!


Tcl , 433 байта, 433 x 15 = 6495

puts "\105\154\151\172\141\142\145\164\150 \157\142\156\157\170\151\157\165\163\154\171 \161\165\157\164\145\144 \50\152\165\163\164 \164\157\157 \162\157\167\144\171 \146\157\162 \155\171 \160\145\141\143\145\51\72 \42\124\110\105 \121\125\111\103\113 \102\122\117\127\116 \106\117\130 \112\125\115\120\123 \117\126\105\122 \124\110\105 \114\101\132\131 \104\117\107\54\42 \147\151\166\151\156\147 \155\145 \141 \154\157\157\153\56"

Попробуйте онлайн!

Tcl , 473 байта, 473 x 14 = 6622

puts \105\154\151\172\141\142\145\164\150\40\157\142\156\157\170\151\157\165\163\154\171\40\161\165\157\164\145\144\40\50\152\165\163\164\40\164\157\157\40\162\157\167\144\171\40\146\157\162\40\155\171\40\160\145\141\143\145\51\72\40\42\124\110\105\40\121\125\111\103\113\40\102\122\117\127\116\40\106\117\130\40\112\125\115\120\123\40\117\126\105\122\40\124\110\105\40\114\101\132\131\40\104\117\107\54\42\40\147\151\166\151\156\147\40\155\145\40\141\40\154\157\157\153\56

Попробуйте онлайн!

Tcl , 133 байта, 133 x 60 = 7980

puts "Elizabeth obnoxiously quoted (just too rowdy for my peace): \"THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG,\" giving me a look."

Попробуйте онлайн!

sergiol
источник