Задача: реализовать ROT-47 в коде, который работает как сам по себе, так и в качестве версии ROT-47.
Подсчет очков:
Ваша оценка рассчитывается как процент использованных, ROT-47 приемлемых байтов в сумме обеих версий программы, деленный на общее количество байтов (всех символов) обеих версий .
Используется, ROT-47 байт право любой символ , который будет преобразован в ROT-47 шифром , который не является частью комментария или игнорируется компилятором / переводчика. Например, любой символ в программе brainfuck, который не +-<>[],.
является неиспользуемым байтом, не считается используемым байтом, а любой символ в программе на C, включая и после //
или внутри /* */
, не считается использованным байтом. Все специальные символы в APL не считаются используемыми, как и все символы в программе Whitespace (извините).
Связи будут нарушены программой с наибольшим количеством голосов. Если все еще есть ничья, выигрывает самая короткая программа.
Пример оценки:
С: 62/64 = 96,875%.
Обратите внимание, что в этой программе есть пробел. Очевидно также, что эта программа не является допустимой записью, потому что она даже не компилируется, но я хотел показать, как работает скоринг.
main(){printf("Hello World!");}
источник
>2:?WXLAC:?E7WQw6==@ (@C=5PQXjN
компилируется?Ответы:
Рубин, 100% (74 символа)
Вход на STDIN, выход на STDOUT.
Вторая строка - это первая строка ROT-47'd. Поэтому, когда ROT-47 выполняет всю программу, она становится:
Моя стратегия здесь основана на том факте, что:
V
это'
когда ROT-47'dj
это;
когда ROT-47'dСледовательно,
Vj=...Vj;
превращается в';l...';
, который по сути является неоперациейVj=...Vj;
может поддерживать запуск любого кода, как вы могли быVj=0;{INSERT ANY CODE};Vj;
, и это станет,'...';
когда ROT-47'd. Вы просто должны быть осторожны, чтобы не использоватьV
этот код, так как это сломает его.Аналогичная логика может быть использована в обратном порядке для производства второй половины (
jV
вместоVj
)источник
С - 54,6%
При переводе ROT-47 мы получаем
Обе программы компилируются, а ROT-47-переводит первый аргумент:
источник
GolfScript, 120/120 байт = 100%
или в ROT-47:
Нет комментариев или злоупотребления строкой. Команда undefined
LiUUbamUUZadckYLfZfZhcTbbZNYNT
(равная остальной части кода в ROT-47) не работает, но все равно выполняется интерпретатором, поэтому я считаю, что она считается использованной.На самом деле это было довольно легко выпустить в GolfScript. Основная трудность заключалась в том, чтобы избежать цифры
1
, которая отображается ROT-47 в команде GolfScript`
. Команды.
,-
,,
,\
,[
,/
,]
и^
также было избежать, но это было довольно легко в этом случае, поскольку задача не требует строительства массива.Бонус:
Вот квин - код GolfScript period-2 (то есть программа, которая печатает вторую программу, которая снова печатает первую программу), где две программы являются преобразованиями ROT-47 друг друга:
Эта программа выводит себя в кодировке ROT-47, получая другую программу GolfScript:
который, в свою очередь, также выводит сам код ROT-47, снова получая предыдущую программу. Таким образом, эта программа также является вращающейся квинной .
источник
A
в Brainfuck будет учитываться в числителе, но не знаменатель. Это одно и то же или другое?LiUUbamUUZadckYLfZfZhcTbbZNYNT
является допустимым идентификатором в GolfScript и будет выполнен как команда. Однако это не одна из встроенных команд , и ей не присваивается значение программой, поэтому по умолчанию она просто ничего не делает.питон, 96,1% (?)
Согласно вашему определению, строки считаются используемым кодом?
источник