Несмотря на 17 вопросов, помеченных анаграммами , у нас все еще нет этого вопроса, так что вот он.
Твое задание
Вы должны написать программу или функцию, которая при получении строки распечатывает все возможные ее анаграммы. Для целей этого вопроса анаграмма - это строка, которая содержит тот же символ, что и исходная строка, но не является точной копией исходной строки. Анаграмма не должна быть или содержать реальные слова.
вход
Вы можете принять строку, которая может иметь любую длину> 0, любым стандартным методом ввода. Он может содержать любые символы ASCII.
Выход
Вы можете вывести все возможные анаграммы введенной строки любым стандартным способом. Вы не должны выводить одну и ту же строку дважды или выводить строку, равную вводу.
Другие правила
Стандартные лазейки запрещены
счет
Это код-гольф , выигрывает минимум байтов.
источник
Ответы:
05AB1E , 3 байта
Функция, которая покидает стек со списком анаграмм сверху (и как его единственный элемент). В качестве полной программы печатается представление этого списка.
Попробуйте онлайн!
Как?
источник
Рубин , 45 байт
Попробуйте онлайн!
Несмотря на наличие встроенного, слово «перестановка» действительно длинное :(
источник
|[]
Кажется ненужным?|[]
короче чем.uniq
.MATL , 7 байт
Попробуйте онлайн!
объяснение
источник
Pyth ,
84Интернет тест .
источник
Japt , 6 байт
Попробуйте онлайн!
объяснение
источник
Haskell,
4840 байтПопробуйте онлайн!
Сохранено 8 байтов благодаря
tail
подсказке Лео .источник
tail
вместоdelete x
, так как исходная строка всегда будет первой в списке перестановок. Это позволит вам переключиться на бессмысленное решение, а затем на безымянную функцию, сохраняя много байтов!CJam , 8 байт
Попробуйте онлайн!
объяснение
источник
Mathematica, 47 байт
источник
StringJoin/@Rest@Permutations@Characters@#&
составляет 43 байта.Желе , 4 байта
Монадическая ссылка, принимающая список символов и возвращающая список списков символов - все различные анаграммы, которые не равны входным данным.
Попробуйте онлайн! (нижний колонтитул формирует программу, которая соединяет список новыми строками и печатает, чтобы избежать разбитого представления).
Как?
источник
Y
если функции были разрешены ... Я вижу, что вы только что отменили мое редактирование вопроса: /Python 3,
857663 байтаКак функция и возвращая строки в виде списка символов (спасибо @ pizzapants184 за сообщение, что это разрешено):
Как функция:
85 байт как полная программа:
Может быть немного уменьшен, если разрешен вывод строк как ('a', 'b', 'c') (я не уверен, что это так).
источник
Java 8,
245239237 байт-6 байт благодаря @ OlivierGrégoire .
Типичная многословная Java .. Я вижу много <10-байтовых ответов, и вот я с 200+ байтами .. XD
Объяснение:
Попробуй это здесь.
источник
l.forEach(System.out::println);
вместо вашего цикла печати. Кроме того, мне не нравится, когда меняSet
определяют на уровне класса без включающего его класса, лямбда-определитель никто не знает, где и метод. Это слишком много для меня. Я могу понять, что импорт отделен от остальных, но там нет ничего автономного, он больше похож на коллекцию фрагментов, чем на что-либо еще. Извините, но впервые в PCG я даю -1 :(forEach
. Что касается классаSet
, что является альтернативой? Опубликовать весь класс, включая main-method? Опубликовать весь класс, исключая метод main, но включая сам класс, интерфейс и имя функции?public static void main
, просто скажите «метод ввода ...». Дело в том, что ваш ответ в его нынешнем виде нарушает все «автономные» правила. Я не против обязательных правил, но нарушать? Да, я возражаю :(Perl 6 ,
3938 байтПопытайся
Попытайся
расширенный
источник
C ++, 142 байта
ungolfed
источник
K (ок) , 13 байтов
Решение:
Попробуйте онлайн!
Объяснение:
Оценка выполняется справа налево.
источник
JavaScript (ES6), 101 байт
Принято из моего прошлого ответа .
Показать фрагмент кода
источник
Perl 5 , 89 + 2 (
-F
) = 91 байтПопробуйте онлайн!
источник