В этом вопросе я попросил вас угадать анаграмму, основываясь на ее результатах. Однако, похоже, что у нас еще нет вопроса о том, чтобы поиграть в анаграмму. Таким образом, ваша задача состоит в том, чтобы создать самую короткую анаграмму, какую только можно.
Что такое анаграмма?
Qua anagram - это непустая программа, которая печатает анаграмму своего исходного кода, отличную от исходного.
Вот пример анаграммы quine в Python 2:
print`'`print`*2'*2`
Вы не должны читать свой собственный источник для этой проблемы.
code-golf
quine
permutations
Мастер пшеницы
источник
источник
Ответы:
Pyth , 2 байта
Выходы
Попробуйте онлайн!
источник
()
квинна намного короче, чем хорошо известнаяjN*2]"jN*2]
?V , 4 байта
Выходы:
Попробуйте онлайн!
источник
i2
?2 -> do the next thing twice
i -> insert the following
> <> ,
987 байтГольф 1 байт благодаря @WheatWizard, используя
!
и увеличивая его, чтобы получить"
Гольф 1 байт благодаря @ ConorO'Brien с использованием
#
вместо<!
Попробуйте онлайн!
Выходы
"#o>-1:
.объяснение
источник
":1+>o<!
немного короче.":1->o#
Brainfuck, 158 байт
Попробуйте онлайн!
Это может быть не самая короткая версия, но, по крайней мере, она работает.
Интересный факт , что выходной код действительно может быть выполнен (и он действительно завершается).
Выход
объяснение
источник
Python 3, 32 байта
Отпечатки
p"r"i"n"t"2(")*p"r"i"n"t"2(")*\n
, отсортированный вывод:\n""""""""""""(())**22iinnpprrtt
источник
Рубин , 8 байт
Попробуйте онлайн!
Это печатает
объяснение
Это работает аналогично Python ответ на вопрос. Он создаст строку, а
p*2p*2
затем с помощью Rubyp
напечатает представление строки.источник
p
вместоputs
?! Так много потраченного времени ...p x
эквивалентноputs x.inspect
JavaScript (ES6),
4032 байтаНикакого возни с Function.toString тоже нет. В качестве бонуса, код внутри строки выглядит почти законно. Редактировать: Сохранено 8 байт, используя
+
вместоrepeat(2)
.источник
*2
вместо.repeat(2)
, это не работает?*
строкиКляйн , 7 + 6 = 13 байт
Вот ответ, основанный на ответе > <> .
Попробуйте онлайн!
Это выводы
источник
Japt ,
109 байтНашел лучший способ :-)
Выходы
"Q+2çQ+2ç
. Проверьте это онлайн!объяснение
Также может быть
Qi2ç"Qi2ç
, что печатаетQi2çQi2ç"
. Этот ближе к стандартному япошке Quine:Но я не верю, что есть какой-либо простой способ вставить кавычку в середине строки для 9-байтовой квинны.
источник
Q+"+Q² " ²
Рубин, 20 байтов
Это выводы
Использование
%q(...)
строкового синтаксиса Ruby , который поддерживает вложенные скобки.источник
Сетчатка , 8 байт
Попробуйте онлайн!
Печать
Оба содержат один
_
, дваn
, два$
и три перевода строки.Обратите внимание, что перевод строки, за которым следует почти любой другой символ, является тривиальным решением, но сомнительно, действителен ли он, потому что второй символ кодирует только себя, а перевод строки в действительности не кодирует ни один выходной символ.
объяснение
Замените пустой ввод на
_
.Сопоставьте пустую строку, которая происходит как до, так и после,
_
и вставьте перевод строки ($n
), ann
и a$
. Так как мы сначала вставили это_
, это добавляет каждый из этих символов дважды, поэтому иn
и$
учитывают$n
, и мы получаем два из трех перевода строки, которые нам нужны в выводе. Третий перевод строки печатается, потому что Retina печатает завершающий перевод строки по умолчанию.Мы могли бы также использовать
n$n$
на этом этапе, который бы напечатал:источник
Python Repl, 4 байта
Это мое первое решение Code Golf, поэтому я надеюсь, что оно соответствует правилам. В Python 2 или 3 интерактивный переводчик:
Вывод представляет собой анаграмму ввода.
Другая:
В Python 2:
В Python 3:
Обновление 2017-06-15: Еще одно:
источник
Haskell ,
3839 байтПопробуйте онлайн! Выход:
Изменить: +1 байт, потому что я ранее забыл о неявном конце новой строки
print
.Альтернатива: (Тот же счетчик байтов, но не содержит ASCII-сову)
Попробуйте онлайн!
Выход:
источник
Groovy,
2420 байт-4 благодаря CalculatorFeline, пробел не был нужен в конце концов!
Выход:
Объяснение:
Анонимное закрытие, которое при вызове возвращается
{""*""2""}
два раза (сцеплено).источник
*2
заполнение между кавычками:{"""{""*""2""}"""*2}
05AB1E , 10 байтов
Попробуйте онлайн!
Выход:
Объяснение:
источник
CJam , 6 байтов
Попробуйте онлайн!
Печать
объяснение
источник
Баш, 36 байт
Это выводы
(и создает файл
f
как побочный эффект, но это разрешено для каждой мета ).И у программы, и у выхода есть завершающий перевод строки.
Мысленный процесс: я подумал, что самый простой способ вывести строку два раза, кроме присвоения ее переменной, это сделать
Строка должна быть заключена в кавычки, потому что она будет содержать пробелы и
<
символы, так что тогда у меня былокоторый почти работает, за исключением того, что он не выводит кавычки. К счастью, Bash поддерживает конкатенацию строковых литералов, просто помещая их рядом друг с другом, поэтому добавление
"''"
к строке и вставка""
внутри части одинарных кавычек дает это решение.источник
PHP , 44 байта
Попробуйте онлайн!
источник
CJam , 8 байт
Попробуйте онлайн!
объяснение
Аналогично примеру с Python в вопросе
Выход есть
"2*`2*`"
.источник
Befunge, 11 байт
Печать:
Объяснение:
источник
"
. Какое именно ограничение на это?"
это считается чтением из собственного источника, это просто строковый литерал.g
однако довольно нагло читает свой собственный источник.":1+>:#,_@!
тоже работает но не короче.' 2+"8k,@
за 9 байтQBIC , 8 байт
Я только что понял, как сделать правильный quine в QBIC. Создание из нее анаграммы осуществляется простым переключением символов в строковом литерале. Таким образом, существует 24 возможных анаграммы.
источник
Befunge-98 , 8 байт
Попробуйте онлайн!
источник
Ом , 14 байт
Попробуйте онлайн!
Выход:
объяснение
источник
JavaScript (ES6), 15 байт
Выходы:
Отрывок:
Показать фрагмент кода
источник
Деление 2 ,
9 86 байтПопробуйте онлайн!
объяснение
Создается атом
R
, который движется вправо. Этот атом затем попадает в точку"
, которая запускает режим печати. В режиме печати все символы (до совпадения"
) печатаются. Это означает, что он печатает'!+OR
в этом случае. Затем все, что осталось, это печать"
, которая выполняется оставшимися символами.'!
устанавливает массу атома в код символа!
и+
увеличивает его в код символа"
. Затем код символа выводится с помощью,O
и атом уничтожается, завершая программу.(На самом деле, это просто вращение самой короткой квины)
источник
R"'!+O
, что не проверялось).Mathematica, 2 байта
Выход:
Число, начинающееся с десятичной точки, например,
.123
интерпретируется как0.123
, поэтому.0
интерпретируется как0.0
. Поскольку часть числа после десятичной точки равна нулю, Mathematica не печатает его.источник
.
кодирование само по себе, но я не думаю, что0
делает? Значение 0 после десятичной запятой не может рассматриваться как кодирование начального нуля перед десятичной запятой, последний является побочным эффектом печати числа с плавающей запятой. Так что по старым правилам Куайна здесь нет проблем. (Я не уверен, вступили ли новые правила в силу.)JavaScript (еще один), 11 байт
Вызывается с
f()
выходамиПоказать фрагмент кода
источник
Python 3, 31 байт
источник
Stax ,
84 байтаЗапускать и отлаживать онлайн!
Прямой порт этого ответа .
Старая версия, 8 байт
Запускать и отлаживать онлайн!
Альтернативная версия с довольно дешевым трюком, который может быть применен к нужным ссылкам практически на любом языке.
Запускать и отлаживать онлайн!
Потому что
"34bL"34bL
что это правильный Quine в Stax.Еще одна версия, использующая только строковые литералы с одним символом.
Запускать и отлаживать онлайн!
объяснение
источник
05AB1E , 13 байтов
Выходы:
Попробуйте онлайн!
источник