Учитывая список уникальных строк, которые являются анаграммами друг друга, выведите анаграмму тех слов, которая отличается от каждого слова в списке.
Строки будут буквенно-цифровыми, и гарантированно будет действительной анаграммой.
Программа или функция могут, но не должны быть недетерминированными, то есть при наличии одного и того же ввода многократное выполнение кода может давать разные выходные данные, если каждый возможный вывод является допустимым.
Тестовые случаи
[Input] -> Possible output
-----------------
[ab] -> ba
[aba, aab] -> baa
[123, 132, 231, 312, 321] -> 213
[hq999, 9h9q9, 9qh99] -> 999hq
[abcde123, ab3e1cd2, 321edbac, bcda1e23] -> ba213ecd
code-golf
string
permutations
MildlyMilquetoast
источник
источник
itertools
ли ответ?f=\
заголовок Try it Online и оставить функцию анонимной, не влияя на автоматический счетчик байтов TiO05AB1E , 5 байтов
Попробуйте онлайн!
объяснение
источник
Pyth , 5 байт
Попробуйте онлайн!
объяснение
источник
Желе , 6 байт
Попробуйте онлайн!
На 1 байт больше, чем 05AB1E и Pyth.
Объяснение:
Я выбрал,
X
потому что это самый короткий способ, которым я знаю, чтобы выбрать любой элемент из списка, не изменяя список (Ḣ
иṪ
не работает,ḷ/
иṛ/
длиннее), и это может привести к некоторой случайности.µ
Здесь довольно лишними, но без него,Ḣ
будет работать в паре сḟ
, и это интерпретируется как «фильтр из головки ввода», который не то , что надо здесь (что мне нужно «отфильтровать вход, и получить голову ").источник
Javascript, 118 байт
использует плохой рандомизатор для перебора каждой «случайной» перестановки.
Возможно, ошибочно, но на самом деле плохой рандомизатор просто означает, что мы не получим истинную случайность, но все равно получим каждую перестановку.
Кажется, что работает для всех случаев в Chrome для меня, но, видимо, из-за неопределенного поведения в такого рода злоупотребления, он не может работать в некоторых браузерах.
(Вероятно, очень безрассудный, не стесняйтесь улучшать это в своих собственных решениях)
80 байт
Благодаря комментарию pirateBay - много байтов
-4 байта благодаря Рику
источник
a=>b
вместоfunction(a){return b}
). Это экономит много байтов.s.split("")
может быть[...s]
. Такжеjoin("")
можно `присоединиться```sort
функция никогда не возвращается0
(или, по крайней мере, крайне редко), поэтому она не работает.Haskell , 58 байт
-1 байт и исправление благодаря Laikoni.
Попробуйте онлайн!
Это, вероятно, не стоит импортировать
Data.List
для перестановок, но да.источник
notElem
. я был бы удивлен, если бы кто-то нашел функцию перестановки, которая превосходит импорт, мой самый короткий подход - 60 байтов против 29 байтов импорта.$
раньше его не былоl!!0
.Рубин , 46 байт
Попробуйте онлайн!
источник
Брахилог , 7 байт
Попробуйте онлайн!
объяснение
источник
Mathematica, 57 байт
недетерминирована
Попробуйте онлайн!
Mathematica, 56 байт
детерминистический
Попробуйте онлайн!
источник
Japt ,
76 байт-1 байт благодаря @Shaggy
Попробуйте онлайн!
Принимает входные строки как несколько входных данных, а не как массив. Выводит случайную перестановку; переключитесь,
ö
чтобыg
получить первый вместо этого.объяснение
источник
á kN ö
.MATL ,
15,13, 12 байтовПопробуйте онлайн!
Сохранено 2 байта благодаря Sanchises.
setdiff(...,'rows')
короче отрицанияismember(...,'rows')
и избегает одного дублирования. Благодаря Луису Мендо сохранил еще один байт, переключаясь на ячейки вместо массивов.Объяснение:
MATLAB / октавные эквиваленты также включены.
Ввод должен быть одного формата
{'abc', 'acb'}
.источник
Python 3 , 78 байт
Попробуйте онлайн!
-1 байт благодаря мистеру Xcoder
источник
if x not in a
этоif~-(x in a)
для 17878
, верно?Пип , 11 байт
Принимает входные данные в качестве аргументов командной строки. Попробуйте онлайн!
объяснение
источник
Python 3 , 87 байт
Я считаю, что это пока единственное представление, в котором не используется ни встроенная перестановка, ни случайная случайная выборка / сортировка. Хотя он длиннее, я думаю, что алгоритм довольно аккуратный.
Попробуйте онлайн!
объяснение
То, что мы делаем, в основном это:
Вот доказательство того, что это работает:
Код перебирает
front(S)
для каждогоS
вL
и выбираетS'
который не находится вL
. По приведенному выше результату будет хотя бы один,S'
который соответствует требованиям.источник
C # (интерактивный компилятор Visual C #) ,
11696 байтМои навыки игры в гольф, безусловно, улучшились с тех пор, как я впервые опубликовал это!
Попробуйте онлайн!
источник
JavaScript (ES7), 172 байта
Найдите первую лексикографическую перестановку первого элемента массива, который не содержится в массиве.
источник
Котлин , 104 байта
украшенный
Тест
источник
C ++, 169 байт
Попробуйте онлайн!
источник
Скала, 50 байт
Попробуйте онлайн!
объяснение
источник
R, 89 байт
Повторно сэмплируйте буквы из первой записи (поскольку они должны быть анаграммами друг друга) и остановитесь, когда один из этих сэмплов отсутствует в исходном списке.
источник
Шелуха , 6 байт
Попробуйте онлайн!
источник
PHP , 70 байт
Запустите на веб-сервере, введя 0 проиндексированных значений get или попробуйте онлайн!
Ungolfed
источник
do{...}while($j);
вместо$j=1;while($j){...}
. Используйте определение на месте для того,$g
чтобы избавиться от скобок (и сохранить четыре байта).PHP,
5855 байтнедетерминированная; принимает входные данные из аргументов командной строки
Запустите с
php -r <code>
разделенными пробелами словами или попробуйте онлайн .источник
Атташе , 16 байт
Попробуйте онлайн!
объяснение
альтернативы
17 байт :
{&\S! !S@_[0]Ø_}
18 байт :
{&\S! !Id@_[0]Ø_}
19 байт :
{&\S!(!Id)@_[0]Ø_}
26 байт :
{&\S!Permutations@_[0]Ø_}
26 байт :
{&\S!Permutations[_@0]Ø_}
26 байт :
{(Permutations[_@0]Ø_)@0}
26 байт :
&\S##~`Ø#Permutations@&\S
27 байт :
Last@{Permutations[_@0]Ø_}
27 байт :
`@&0@{Permutations[_@0]Ø_}
28 байт :
Last##~`Ø#Permutations@&{_}
28 байт :
Last##~`Ø#Permutations@Last
28 байт :
First@{Permutations[_@0]Ø_}
30 байтов :
{NestWhile[Shuffle,`in&_,_@0]}
33 байта :
{If[(q.=Shuffle[_@0])in _,$@_,q]}
33 байта :
{q.=Shuffle[_@0]If[q in _,$@_,q]}
34 байта :
{If[Has[_,q.=Shuffle[_@0]],$@_,q]}
источник
J , 25 байт
Входные данные представляют собой список строк в штучной упаковке - я чувствовал, что это справедливо, и не объявлять списки строк явно как 4 8 $ 'abcde123', 'ab3e1cd2', '321edbac', 'bcda1e23'.
Мне не нравится @ беспорядок в моем коде, но на этот раз много сериализованных глаголов.
Как это работает:
Попробуйте онлайн!
источник
{.@(-.~i.@!@#@{.A.{.)
. Попробуйте онлайн!05AB1E , 5 байтов
Попробуйте онлайн!
объяснение
Практически тот же ответ, который нашел @ThePirateBay.
источник
JavaScript, 87 байт
Попробуйте онлайн!
Этот ответ основан (хотя и сильно изменен) на ответе Имме . Он предложил в комментарии, что это должен быть другой ответ.
Проблема старого подхода заключается в том, что
sort
он полностью зависит от реализации. Стандарт не гарантирует порядок вызова функции сортировки, поэтому теоретически он может никогда не закончиться для первого или второго контрольного примера.Этот подход на несколько байтов длиннее, но он гарантирует, что он завершится в течение ограниченного времени, даже если
Math.random
никогда не вернется.5
.источник
CJam , 11 байт
Попробуйте онлайн!
объяснение
источник
Perl 6 , 42 байта
Попробуйте онлайн!
Случайно перемешивает первую строку ввода, пока она не станет элементом ввода.
Объяснение:
источник