Напишите полную программу, которая принимает логические или неотрицательные целочисленные значения. Это должно:
- Вывести собственный исходный код, если введенное значение ложно
- Вывести собственный исходный код в обратном порядке, если введенное значение верно
Ваша программа не может быть палиндромной и не может читать свой собственный исходный код каким-либо образом.
Это код гольфа - выигрывает самый короткий код в байтах.
Ответы:
Gol> <> , 9 байт
Я чувствую себя немного неловко, когда пишу это, поскольку у нас уже есть ответы> <>, Vitsy и Minkolang. Единственными дополнениями к стандартному quine являются
I
(чтение целочисленного ввода),?
(выполнение далее, если верно) иr
(обратный стек).Попробуйте онлайн .
источник
sP#Hr?I"
CJam,
1716 байтовПроверьте это здесь.
Довольно прямолинейная модификация стандартного квайна. Другие решения для 17 байтов:
Если я могу предположить, что ввод равен 0 или 1 (в качестве замены для логического значения, для которого в CJam нет выделенного типа), я получу 15, пропустив
g
:объяснение
источник
g
.Pyth, 17 байт
Простая модификация стандартной Pyth Quine.
источник
> <>, 17 байт
Требуется флаг -v (+1 байт) для помещения ввода в стек (или для того, чтобы вы заранее поместили ввод в стек в онлайн-интерпретаторе).
Вы можете сделать следующее для того же количества байтов (без флага), если разрешены только целочисленные входные данные (т. Е. 0 для ложного, 1 для правдивого).
Попробуйте онлайн
Истина / ложь для> <> - это ничто, кроме 0 и 0 соответственно.
источник
Витси , 15 байт
... Я ... Я бью CJam! (кричит) Мама! Смотри, мама, я сделал это!
Объяснение:
Новая версия Vitsy , 11 байт
источник
Javascript (ES6), 42 байта
Это модификация моего Bling Quine . Это вдвое длиннее тоже.
источник
prompt()
необходимы, если мы не переключимся на Node.JS. Я считаю, что$=_=>(A=`$=${$};$(prompt())`,alert(_?A:[...A].reverse().join``));$(prompt())
работает должным образом, хотя, возможно, это может быть в гольфе больше.Бурлеск, 40 байт
Объяснение:
Burlesque имеет расширенные встроенные функции для работы со стеком и кодами. Фактически, вы не можете получить доступ к исходному коду программы, но вы можете получить доступ к оставшемуся коду, который должен быть выполнен в будущем. Это означает,
#Q
что вернет весь код, который следует за ним, поэтому мы должны добавить все#Q
к этому коду, что мы и делаемri#Q
.++1 2
технически недопустимый код, так как он основан на стеке. Но мы можем манипулировать кодом, чтобы он выполнялся как1 2++
:Работать с этими встроенными модулями невероятно сложно, и никто до сих пор не использовал их для чего-то продуктивного, кроме вещей, связанных с Quine. Если вы перевернете,
++1 2
вы получите то,2 1++
что будет производить,21
а не12
. Причина, по которой приведенный выше код12
состоит в том, что он#Q
также включает в себя то,<-
что в итоге мы выполняем намного больше, чем просто2 1++
: p. Мы заканчиваем тем, что выполняем,2 1++#q<-
который производит12
.Мы можем фактически заменить вещи в нашем коде, например, этот код заменяет все вхождения
?+
в себе?*
Использование:
источник
Haskell,
126118108 байтовОжидается
0
или1
как вход.источник
Минколанг 0,10 , 13 байт
Попробуй это здесь.
Это так же , как стандартный Куайном этих четырех символов , за исключением:
n,?r
.n
берет целое число из ввода,,
инвертирует его, поэтому?
пропускает,r
если ввод верен. В противном случаеr
стэк переворачивает стек так, чтобы он выводился в обратном порядке.источник
Python 2, 51 байт
источник
Java 10 (полная программа), 282 байта
Попробуйте онлайн.
Java 10 (как лямбда-функция), 154 байта
Попробуйте онлайн.
Объяснение:
Куайн объяснение:
var s
Содержит исходный код неформатированную%s
используется, чтобы поместить эту строку в себя сs.format(...)
%c
,%1$c
И34
используются для форматирования двойных кавычекs.format(s,34,s)
складывает все вместеИ затем
new StringBuffer(s).reverse()
используется, чтобы при необходимости перевернуть строку quine-String на основе логического значения input.источник
05AB1E , 21 байт
Попробуйте онлайн.
Модификация по умолчанию квин
0"D34çý"D34çý
, добавив‚sè
.Объяснение:
PS: автоматически печатает завершающий перевод строки. Если это также должно быть обращено, вместо этого это 23 байта:
Попробуйте онлайн. (
?
явная печать без новой строки )источник