Перспектива этой проблемы:
- Если ваша программа работает нормально, весь код в речевых метках (
"
- двойные кавычки) должен быть напечатан. - Если ваша программа заключена в двойные кавычки (в свою очередь, инвертирует речевые метки), код, который обычно не в кавычках, должен быть напечатан.
Например:
Допустим, у вас есть следующий код:
fancyStuff("myCode"); "I like".isGreat();
Если бы я запустил его, я бы ожидал вывод:
myCode
I like
Однако, если бы я обернул это в кавычки, я получил бы:
"fancyStuff("myCode"); "I like".isGreat();"
Когда этот код выполняется, ожидаемый результат будет:
fancyStuff(
);
.isGreat();
Очевидно, что приведенный выше пример не является функциональным ответом ни на одном языке. Ваша задача - написать код, который работает таким образом.
правила
- Применяются стандартные лазейки.
- Напечатанные значения, как в кавычках, так и в кавычках, должны быть непустыми или состоять исключительно из пробелов. Это также означает, что все программы должны включать хотя бы один набор цитат.
- Однако, пробел / предшествующий пробел разрешен.
- Не смотрите на свой собственный код, необходимые имена файлов и т. Д.
- Несовпадающие цитаты запрещены
- Если есть несколько строк, они могут быть напечатаны как новые строки (как в примере), или в некоторых других удобочитаемых человеком способом, - без массивов или объектов
- Это код-гольф , поэтому выигрывает самый короткий ответ в байтах.
code-golf
restricted-source
quine
Геза Кереченьи
источник
источник
Ответы:
Python 2 , 20 байт
-7 байт благодаря тш
Попробуйте онлайн!
Старый ответ:
Python 2 , 27 байт
Попробуйте онлайн!
Ход мыслей за этим ответом:
Начните с простой печати, потому что нам нужно что-то напечатать .
Нам также нужно что-то напечатать в перевернутом кейсе, т.е. есть печать внутри кавычек.
Неинвертированный случай довольно хорош в этой точке. Давайте сосредоточимся на перевернутом случае. Теперь мы начнем со строки
print
, за которой не может сразу следовать оператор print. Давайте исправим это с помощью точки с запятой.Хорошая вещь. За исключением того, что инвертированный код на самом деле ничего не печатает. Нам нужно будет печатать
print
в начале, потому что он заканчивается в кавычках, но также печатать все, что идет после второй кавычки, потому что он тоже заканчивается в кавычках. Очевидный способ обойти это - добавитьprint
и умножить последнюю строку на 2.Теперь инвертированный код работает нормально, хотя мы должны с осторожностью относиться к тому, что раздел перед первой цитатой и раздел после второй цитаты должны оставаться неизменными в течение будущих изменений. Что касается неинвертированного кода, он генерирует синтаксическую ошибку - еще раз, мы должны ввести точку с запятой для разделения выражений.
Python на самом деле не нравится внешний вид этой одиночной точки с запятой, поэтому мы должны утолить голод змеи двумя одинаковыми выражениями no-op, вставленными перед первой и последней точкой с запятой. Большинство выражений будет работать нормально в первом случае, но во втором случае оно должно следовать
print";print 2*"
в неинвертированном коде, ничего не нарушая. Мы можем использовать''
, который просто объединяется с предыдущей строкой.источник
print(";print('print()');")
также 27 байтов, а также Python 3.CSS, 66 байт
CSS решает не так много вопросов ...
источник
body:after
также работает на некоторых реализациях?:after
доступно в большинстве браузеров по причине обратной совместимостиHQ9 + [см. Примечания ниже] , 1016 байт
Используйте реализацию на https://esolangs.org/w/index.php?title=HQ9%2B&oldid=59995 и скомпилируйте интерпретатор с MinGW GCC 5.3.0 для Windows. Я не уверен, работает ли он с другой версией компилятора, так как для завершения программы требуется неопределенное поведение C. Длина буфера составляет 1000 байт. И исходный код больше 1000 байтов делает свое дело. Я не уверен, как это случилось.
источник
05AB1E , 4 байта
Выходы объединены без разделителя.
Попробуйте онлайн или попробуйте онлайн с окружающими цитатами .
Объяснение:
источник
Japt , 4 байта
Попробуйте это без кавычек или цитаты
P
переменная Japt для пустой строки, иs
метод разрезает строку - без каких-либо аргументов он ничего не делает.Или немного менее тривиально:
Попробуйте это без кавычек или цитаты
Первый в верхнем регистре,
+
а второйu
- в пустой строке.источник
C # (интерактивный компилятор Visual C #) ,
1131121077064 байтаСохранено 5 байт благодаря @negative seven
Не цитируется и цитируется
Через некоторое время я понял, что мое решение было слишком сложным. Новейшая программа, показанная здесь, просто скрывает остальную часть программы в комментарии, чтобы избежать ошибок при заключении в кавычки.
Когда заключено в кавычки,
Write(
передается метод расширения, который печатает его вместе с);
.источник
Split()
->Trim()
иvar a
->_
Remove
и использовалInsert
ее, теперь я могу просто использовать метод расширения!Perl 6 , 11 байт
Попробуйте онлайн!
Печать
.say~
с завершающим переводом строки. Кажется, слишком просто. Я что-то пропустил?При заключении в кавычки выдает
say
пробел и завершающий перевод строки.источник
Foo , 4 байта
Попробуйте онлайн! Также работает в Japt.
5 байтов (UTF-8)
Попробуйте онлайн! Также работает в 05AB1E.
9 байт
Попробуйте онлайн! Также работает в Рунических чарах.
11 байт
Попробуйте онлайн! Также работает в Perl 6.
20 байт
Попробуйте онлайн! Также работает в Python 2.
69 байт
Попробуйте онлайн! Также работает в CSS.
Хм ... Фу это очень адаптируемый язык.
источник
"a"b
1"2"
же работает в Foo. Единственный ответ в этой задаче, который пока не является полиглотом Foo, находится в HQ9 +, потому что интерпретатор Foo также имеет проблему переполнения.> <> ,
189 байт-9 байт благодаря Джо Кингу
Попробуйте онлайн! ( цитируется )
объяснение
источник
Befunge-98 (FBBI) , 12 байт
Без кавычек цитируется
Оба случая печатаются
<@,k4
. Вместо этого@
можно заменить любой (или оба) из sq
.источник
Рунические чары , 9 байт
Попробуйте онлайн! а также
""!""$;"$;"
От Кевина Круйссена, который по сути исправил мою первую попытку, используя то, что я сделал во вторую.
Спускаясь "у грибов никогда не бывает непревзойденных кавычек" изгибание правил ", есть что-то в этом, что не должно быть в порядке", на что ссылается мой собственный комментарий:
7 байт
Попробуйте онлайн! а также
"0".""$;"
При нормальных обстоятельствах эта программа выполняется как
0".""$;0".""$;
нажатие целого числа0
, затем строка.
, объединяет$;0
, NOP, объединяет пустую строку, печатает верхнюю часть стека (строку.$;0
) и завершается. Заключение в кавычки приводит к"0".""$;"
выталкиванию строки0
, NOP, объединению пустой строки, печати верхней части стека и завершению (рендеринг ранее непечатного целого числа0
в строковой форме). Последний"
остается неисполненным (и в любом случае не является частью исходной программы).У грибов нет строковых литералов, у них есть команда, которая переключает режим «чтение собственного источника в виде строки», и некоторая форма правила «указатель инструкции достиг границы источника» (обычно ребро-перенос), поэтому тот же исходный код -positional-byte действует как инструкция «начало строки» и «конец строки», создавая строковый литерал всей строки / столбца (исключая
"
саму себя).источник
$;
в конце в цитируемой версии."$;
и""$;"
(Рунические кавычки в паре с самим собой).!.
(что правильно), но не должна ли ваша программа выводить кавычки0$;
? PS: я вообще не знаю Runic Enchantments, но потенциальное исправление, основанное на вашем текущем макете, которое, я думаю, будет правильным0"!""$;"$;
(которое выводит!$;
как есть или выводит,0$;
если заключено в кавычки). РЕДАКТИРОВАТЬ: На самом деле, я думаю, вы можете отбросить0
и вывод!$;
и$;
.$
- это «печать вершины стека» и;
заканчивается. Но вы, по сути, получили правильный ответ.Haskell, 31 байт
Попробуйте онлайн! Или в кавычках: попробуйте онлайн!
источник
MathGolf , 4 байта
Попробуйте онлайн!
;
Иq
могут быть обменены на много различных команд, в том числе не-OPS.источник
Рубин , 8 байт
Попробуйте онлайн!
Заключает вывод в кавычки, что может быть недопустимым.
Рубин , 17 байт
Попробуйте онлайн!
источник
JavaScript (SpiderMonkey) , 25 байт
Попробуйте онлайн!
Попробуйте онлайн!
Тривиально, но функционально.
источник
Japt , 4 байта
Без кавычек это преобразовывает строку
P
в верхний регистр. Цитируется, это печатаетu
.Попытайся
Japt , 4 байта
Без кавычек, он переворачивает строку
P
. Цитируется, это печатаетw
.Попытайся
источник
Q
вместоP
, это больше мета! ;)R, 16 байт
Обратите внимание, что приведенный выше код не заключен в дополнительные кавычки и имеет как начальные, так и конечные пробелы.
Попробуй (версия без упаковки)
источник
AppleScript, 9 байт
Разъяснение:
Цитируется:
источник