Напишите программу, использующую только печатные символы ASCII, которые не требуют ввода. Для справки, вот 95 печатных символов ASCII по порядку:
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
Когда ваша программа запущена, она должна напечатать 0
(плюс необязательный завершающий перевод строки) в stdout, а затем нормально завершиться.
Когда каждый символ в вашей программе заменяется символом N пробелов справа от него в печатаемом ASCII с циклическим переходом из одного места в другое ~
, результирующая печатаемая строка ASCII в идеале должна быть исполняемой программой на том же языке, которая не требует ввода и выводит N (плюс необязательный завершающий символ новой строки) в stdout, затем обычно завершается при N = 1 до 94.
Например, если ваша оригинальная программа была
@Cat~(88 !)
запуск должен вывести 0
и сдвинуть все символы вверх по шкале ASCII для печати на единицу
ADbu )99!"*
должно привести к другой программе, которая выводит 1
. Повторное выполнение в идеале приведет к другой программе, которая выводит2
BEcv!*::"#+
и т. д. с 3 и 4 и т. д. до момента сдвига 94 раза
?B`s}'77~ (
в идеале это программа, которая выводит 94
.
Облегчение в том, что это только идеальное поведение. Ваша программа и ее производные не обязательно должны работать, но чем больше последовательно с самого начала, тем лучше. (Программы, которые не работают, могут иметь какое-либо поведение.)
счет
Ваша оценка - это количество последовательных программ, начиная с исходной (той, которая выводит 0
), которые работают, то есть правильно выводят свой соответствующий N. Ответ с наибольшим количеством очков (максимум 95) выигрывает. Если есть связь, то побеждает программа с самой короткой длиной в байтах.
Например, если @Cat~(88 !)
выход 0
и ADbu )99!"*
выход , 1
но BEcv!*::"#+
ошибочный, то ваша оценка будет 2. Это 2 , даже если ?B`s}'77~ (
точно выходы 94
и даже если все программы для N = 30 до 40 работали. Подсчитывается только последовательное количество рабочих программ, начиная с нуля.
Примечания
- Для борьбы с потенциальными раздорами и пробелами конкурирующие ответы должны выводить свои числа в десятичном виде без начальных нулей, знаков или десятичных точек (т. Е. Обычного
0
1
2
...94
). - Языки, которые используют разные базы или числовые форматы, разрешены, но не имеют права на победу.
- Наличие необязательного завершающего символа новой строки не обязательно должно быть согласованным между программами.
- Функции и команды REPL не допускаются, только полные программы.
источник
ans = 0
?0
напечатано на стандартный вывод. Вы можете сделать неконкурентный ответ, хотя.Ответы:
Ук! , 95 программ,
1999214066 байтСамый простой способ решить эту проблему - использовать язык токенов, который не нуждается в новых строках и игнорирует недействительные токены.
Протестировано с использованием этого интерпретатора *. Предполагает 8-битные ячейки для дополнительной игры в гольф. Программы также слегка перекрываются, чтобы сохранить некоторые байты.
* Этот интерпретатор имеет странную причуду, из-за которой последнему токену после регистрации требуется символ, который влияет
n = 62
. Есть 8-битные переводчики в автономном режиме без этой причуды, но это был лучший онлайн, который я мог найти.источник
PHP, 95 программ,
24392063 байтаТребует, чтобы опция output_buffering была включена , или некоторые значения, такие как 4096. По умолчанию для веб-службы (но не для CLI) она равна 4096, по крайней мере, для моей установки.
Док говорит, что
ob_clean
ничего не возвращает. Но это вернулось, тем не менее.Сдвинутые программы выглядят так:
Создано с помощью этой программы CJam:
источник
CJam , 10 программ, 1 байт
Я подумал, что лучше добавить это прямо сейчас, пока кто-нибудь другой не станет дерзким и сделает это: P
Программа CJam с простым числом выводит это число, так что это простой способ получить 10 работающих программ, а именно:
0
,1
,2
,3
,4
,5
,6
,7
,8
, И9
.:
Неудивительно, что следующая программа не выводит,10
но выдает ошибку «незаконченный оператор».Это, несомненно, работает на многих языках.
источник