Вам поручено написать две программы. Программа A не должна ничего распечатывать на всех входах, кроме случаев, когда вводится программа B , и в этом случае она должна печататься 1
. Программа B должна распечатывать 1
на всех входах, кроме случаев, когда вводится программа A , и в этом случае она не должна ничего печатать.
Подсчет очков:
- +1 за каждого персонажа из обеих программ.
- Самый низкий балл побеждает.
Ответы:
БРГ , 25
Выполнено из калькулятора ТИ-84
программа
A
программа
B
объяснение
`_
Введите строку@_eq;"
Проверьте, равен ли он исходному коду (#
автоматически удаляется вместе со строчными буквами)$w;&
Если это так, отобразите 1 (иначе ничего) [дляB
этого$#w;&
- если нет, отобразите 1 (иначе ничего)]источник
Баш - 32 символа
Сценарий А - 16 символов
Скрипт B - 16 символов
использование
источник
Руби, 54
A
В
Примеры:
источник
J (62)
Так как вы не запретили это ...
Храните программы как
A
иB
соответственно.Программа А (30):
Программа Б (32):
Как это работает (программа B, A похожа):
1!:1[3
: читать стандартный1!:1<'A'
: прочитать файлA
-:
: посмотрите, равны ли они-.
: отменить результат#~
: повторить результат сам по себе (итак,1
приводит к одному1
и0
приводит к нулю0
s, то есть ничего)echo
: выходexit
: выход (интерпретатор J не завершается по умолчанию, когда достигает конца файла)источник
Haskell - БЕЗ загрузки источника - 478
644символовЭто предполагает, что getContents ВСЕГДА оканчивается символом новой строки и поэтому удаляет последний символ без проверки, потому что я не чувствую необходимости экранировать его
A
В
Он работает как стандартный quine, но меняет местами - для *, чтобы получить другую программу (избегая этих символов в другом месте).
Следующий тест печатает как ожидалось (замена main = взаимодействует с $ на a = и b =)
-
источник
Python 2.7 - 82
Файл A (буквально названный просто
a
):Файл B (буквально названный просто
b
):источник
.py
- это вообще работает?python a
.touch a
вы создадите пустой файл, если у вас есть разрешения. Для дополнительного жестокого удовольствия вы можете дажеtouch \~
создать файл, названный одной тильдой (~
), а затем посмотреть, как кто-то безрассудно пытается его удалить;)Рубин, 166 символов, нет источника чтения
A:
B:
Убедитесь, что ваш текстовый редактор не сохраняет с новой строкой.
Использование (пример):
Каждая программа создает источник другой программы, используя HEREdoc и строковые преобразования, затем сравнивает результат с входными данными.
источник
p
это встроенный метод ruby, который печатает переданные ему аргументы, а затем возвращает эти аргументы, что делает его полезным для вывода в гольф. При вызове без аргументов возвращает ноль. Аргументомgets
является разделитель, поэтому передачаp
приводит к нулевому разделителю, что означает, что он читает STDIN, пока не достигнет EOF. Выражение heredoc<<2
, таким образом, оно заканчивается (и не включает) цифрой 2 в конце файла.2
качестве разделителя heredoc является традиционной частью запутывания. Это может быть практически любая строка.Хаскелл - 138
Не очень хороший ответ, но хотел, чтобы обе программы использовали один и тот же источник. Можно сохранить некоторые символы, переименовав файл, но это не сделает это решение выигрышным, поэтому я не думаю, что оно того стоит.
Скомпилируйте этот источник как
A
иB
.Тестовое задание:
источник
A
, а потом копироватьA
вB
?Node.js - 142 символа
Скрипт
|
(иначе известный как Скрипт A) - 80 символовСкрипт
&
(иначе известный как Скрипт B) - 62 символаиспользование
Описание
Скрипт B читает содержимое скрипта A и уничтожает его после замены имен файлов и
and
оператора наor
.Я назвал файлы
&
и|
могу выполнить одну замену в сценарии B.источник
Python 3 - 102 символа
Печатает 1, если ввод совпадает с вводом программы 2, иначе ничего:
Печатает 1, если ввод не совпадает с программой 1, иначе ничего:
источник
bash / grep - 59 символов
51 символ, если мы считаем только фактическую строку программы.
источник
R (62 символа)
производит:
Мета-комментарий: R ярмарки относительно плохие в коде гольф, поскольку нет ярлыка для
function
...источник