Напишите программу, которая должна быть максимально короткой (измеряемой по счетчику байтов), не требует ввода, не содержит комментариев и выводит строку / последовательность символов, так что составная программа + вывод имеет длину ровно 95 символов и содержит каждый печатный символ ASCII ровно один раз , то есть программа + вывод представляет собой перестановку из 95 символов с кодами ASCII 32-126:
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
В случае ничьей, победителем становится запись, чья (95-символьная) каскадная программа + выходные данные находится ближе всего к вышеуказанной строке, что измеряется расстоянием редактирования Левенштейна (т. Е. Числом удалений, вставок или односимвольных удалений). замены, необходимые для приведения его в порядок ASCII).
echo $0
, дисквалифицирован ли старый .Ответы:
GolfScript, 14 символов
Выход :
источник
),
- Вау. Я люблю это.Perl, 89 символов
Это лучшее, что я смог сделать до сих пор:
Для тех, кто не знаком с Perl minutae, два аргумента к
print
заявлению могут быть представлены как~(-($=)) . (73 * 2)
иtr///
.Программа выводит 6 символов:
К сожалению , каждая итерация конструкт , что я могу думать в Perl (
for
,while
,until
,map
,grep
) акций , по крайней мере один символ сprint
. Если бы в выводе было разрешено переводить строки, я мог бы использовать Perl 5.010, чтобы получить решение из 87 символов:источник
$=
- количество горизонтальных линий в текущем устройстве вывода. По умолчанию 60.~-$=
это побитовая инверсия отрицательного дополнения к двум, равного 6059
.73*2
146..
и,
делать то, что вы ожидаете от них.y[]{}
это еще один способ сказатьtr///
, который является оператором транслитерации. Он берет$_
и ничего не делает, потому что вы не дали ему никаких символов для замены. Возвращает количество замененных символов0
. Итак, имеем~-$= . 73*2 , y[]{}
=59 . 146 , 0
= '591460`.PHP 67 байт
Выход:
Кажется, что должно быть 65-байтовое решение, выдающее 30 символов вместо только 28, но я не мог заставить его выстроиться в линию.
OSXouz
Вместо этого 6 неиспользованных символов были прикреплены к одному из строковых литералов.Изменить: После дальнейшего размышления, невозможно создать более 28 символов таким образом.
UPPER ^ lower
всегда будет содержать символы от 32 до 63, поэтому все 10 цифр требуются для@[\]_`{|}~
. Четыре из оставшихся 22 используются в самом сценарии, оставляя только 18, которые можно получить только с помощью букв. Хотя тай-брейк может быть значительно улучшен.источник
Рубин, 91 символ
Выходы
6273
.%{...}
трюк украден у Яна Дворакаисточник
%{ !"#$&\',-/450:<=>ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcefghijklmnqvwxyz|~};puts(?@.ord*98+1)
это то, что, я думаю, вы хотите (для 91 символа) с точкой с запятой, которую нужно переместить, чтобы использовать в качестве разделителя для печати (вместо новой строки), и с буквами 'ord', удаленными из фигурных скобок.Perl, 61 символов
Выход:
$:
по умолчанию" \n-"
.x8
повторяет это восемь раз; 24-символьный результат затем поразрядно закрашивается 23-символьным символом (последний-
остается без изменений). Вторая часть представляет собой 12-символьную q-строку поразрядно и 10-символьную линию (последние 2 символа отбрасываются).источник
Рубин, 95 знаков, 6 правок
Ага. Вот и все. Просто свободно плавающий строковый литерал, который никогда не печатается. Ruby поддерживает строковые литералы (заимствованные из Perl, я думаю) в форме процента-типа-разделителя - разделителем является любой не алфавитно-цифровой символ, а если открывающим разделителем является открывающая скобка (любая из
[({<
), закрывающим разделителем является соответствующий закрывающая скобка (допускаются вложенные скобки).Я понимаю, что это скорее базовая отправка, но если кому-то не удастся действительно что-то напечатать или если не будет языка со строковым литералом свободной формы из двух символов с другим открывающим и закрывающим разделителями, это лучшее, что есть.
источник
Tcl 96, редактировать расстояние 12
источник
join {!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghklmpqrstuvwxyz|~}
Кажется, работает с использованием 95 символов? (Спасибо за вашу запись. Извините за хамелеона - к сожалению, я отредактировал на скорую руку, и должен был поступить по-другому.)