Dada uma lista de cadeias únicas que são anagramas uma da outra, produza um anagrama daquelas palavras que são diferentes de cada palavra da lista.
As strings serão alfanuméricas e é garantido que haja um anagrama válido.
O programa ou função pode, mas não precisa ser não determinístico, ou seja, dada a mesma entrada, a execução múltipla de um código pode produzir saídas diferentes, desde que todas as saídas possíveis sejam válidas.
Casos de teste
[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
fonte
fonte
itertools
sempre a resposta?f=\
na experimentá-header-line e deixar a função anônima, apesar de não afetar o contador automático TiO byte05AB1E , 5 bytes
Experimente online!
Explicação
fonte
Pitão , 5 bytes
Experimente online!
Explicação
fonte
Gelatina , 6 bytes
Experimente online!
1 byte a mais que a resposta 05AB1E e Pyth.
Explicação:
Eu escolhi
X
porque é a maneira mais curta que eu conheço de escolher qualquer elemento da lista sem alterar a lista (Ḣ
eṪ
não funciona,ḷ/
eṛ/
é mais longa), e isso causa alguma aleatoriedade.O
µ
aqui é bastante redundante, mas sem ele,Ḣ
seria emparelhado com oḟ
e é interpretado como "filtrar a cabeça da entrada", que não é o que eu preciso aqui (o que eu preciso é "filtrar a entrada, e pegue a cabeça ").fonte
Javascript, 118 bytes
usa um randomizador ruim para iterar sobre cada permutação "aleatória".
Provavelmente errado, mas, apesar do aleatorizador ruim, significa que não obteremos a aleatoriedade verdadeira, mas ainda assim obteremos toda permutação.
Parece funcionar em todos os casos no chrome para mim, mas aparentemente devido a um comportamento indefinido nesse tipo de abuso, ele não pode funcionar em alguns navegadores.
(Provavelmente muito despreocupado, fique à vontade para aprimorá-lo em suas próprias soluções)
80 bytes
Graças ao comentário de pirateBay - muitos bytes
-4 bytes graças a Rick
fonte
a=>b
vez defunction(a){return b}
). Economiza muitos bytes.s.split("")
pode ser[...s]
. Tambémjoin("")
pode ser `join`` #sort
função nunca retorna0
(ou pelo menos extremamente rara), é por isso que não funcionou.Haskell , 58 bytes
-1 byte e uma correção graças a Laikoni.
Experimente online!
Provavelmente não vale a pena importar
Data.List
para permutações, mas eh.fonte
notElem
. eu ficaria surpreso se alguém encontrar uma função de permutação que supera a importação, minha abordagem mais curta é de 60 bytes contra os 29 bytes da importação.$
está faltando antesl!!0
.Ruby , 46 bytes
Experimente online!
fonte
Braquilog , 7 bytes
Experimente online!
Explicação
fonte
Mathematica, 57 bytes
não determinístico
Experimente online!
Mathematica, 56 bytes
determinista
Experimente online!
fonte
Japonês ,
76 bytes-1 byte graças a @Shaggy
Experimente online!
Toma seqüências de caracteres de entrada como várias entradas em vez de como uma matriz. Emite uma permutação aleatória; mude
ö
parag
para obter o primeiro.Explicação
fonte
á kN ö
.MATL ,
15,13, 12 bytesExperimente online!
Economizou 2 bytes graças a Sanchises.
setdiff(...,'rows')
é mais curto que negarismember(...,'rows')
e evita uma duplicação. Economizou outro byte graças a Luis Mendo, alternando para células em vez de matrizes.Explicação:
Os equivalentes MATLAB / Oitava também estão incluídos.
A entrada deve estar no formato
{'abc', 'acb'}
.fonte
Python 3 , 78 bytes
Experimente online!
-1 byte graças ao Sr. Xcoder
fonte
if x not in a
éif~-(x in a)
para 17878
né?Pip , 11 bytes
Toma as entradas como argumentos da linha de comando. Experimente online!
Explicação
fonte
Python 3 , 87 bytes
Acredito que esta seja a única submissão até agora que não usa uma permutação incorporada nem uma aleatória aleatória / classificação. Embora seja mais longo, acho que o algoritmo é bem organizado.
Experimente online!
Explicação
O que estamos fazendo é basicamente isso:
Aqui está uma prova de que funciona:
O código itera
front(S)
para cadaS
emL
e selecciona umS'
que não está emL
. Pelo resultado acima, haverá pelo menos umS'
que se qualifica.fonte
C # (Compilador interativo do Visual C #) ,
11696 bytesMinhas habilidades no golfe certamente melhoraram desde quando publiquei isso pela primeira vez!
Experimente online!
fonte
JavaScript (ES7), 172 bytes
Encontre a primeira permutação lexicográfica do primeiro elemento da matriz que não está contida na matriz.
fonte
Kotlin , 104 bytes
Embelezado
Teste
fonte
C ++, 169 bytes
Experimente online!
fonte
Scala, 50 bytes
Experimente online!
Explicação
fonte
R, 89 bytes
Faça amostragens repetidas das letras da primeira entrada (como devem ser anagramas umas das outras) e pare quando uma dessas amostras não estiver na lista original.
fonte
Casca , 6 bytes
Experimente online!
fonte
PHP , 70 bytes
Execute em um servidor da Web, inserindo 0 valores de obtenção indexados ou Experimente online!
Ungolfed
fonte
do{...}while($j);
vez de$j=1;while($j){...}
. Use a definição no local para$g
se livrar dos chavetas (e salvar quatro bytes).PHP,
5855 bytesnão determinístico; recebe entrada dos argumentos da linha de comando
Corra com
php -r <code>
palavras seguidas por espaços separados ou tente online .fonte
Anexo , 16 bytes
Experimente online!
Explicação
Alternativas
17 bytes :
{&\S! !S@_[0]Ø_}
18 bytes :
{&\S! !Id@_[0]Ø_}
19 bytes :
{&\S!(!Id)@_[0]Ø_}
26 bytes :
{&\S!Permutations@_[0]Ø_}
26 bytes :
{&\S!Permutations[_@0]Ø_}
26 bytes :
{(Permutations[_@0]Ø_)@0}
26 bytes :
&\S##~`Ø#Permutations@&\S
27 bytes :
Last@{Permutations[_@0]Ø_}
27 bytes :
`@&0@{Permutations[_@0]Ø_}
28 bytes :
Last##~`Ø#Permutations@&{_}
28 bytes :
Last##~`Ø#Permutations@Last
28 bytes :
First@{Permutations[_@0]Ø_}
30 bytes :
{NestWhile[Shuffle,`in&_,_@0]}
33 bytes :
{If[(q.=Shuffle[_@0])in _,$@_,q]}
33 bytes :
{q.=Shuffle[_@0]If[q in _,$@_,q]}
34 bytes :
{If[Has[_,q.=Shuffle[_@0]],$@_,q]}
fonte
J , 25 bytes
A entrada é uma lista de seqüências de caracteres em caixa - eu senti que era justo assim e não declarar as listas de sequências explicitamente como 4 8 $ 'abcde123', 'ab3e1cd2', '321edbac', 'bcda1e23'.
Eu não gosto da bagunça @ no meu código, mas há muitos verbos serializados dessa vez.
Como funciona:
Experimente online!
fonte
{.@(-.~i.@!@#@{.A.{.)
. Experimente online!05AB1E , 5 bytes
Experimente online!
Explicação
Praticamente a mesma resposta que @ThePirateBay encontrou.
fonte
JavaScript, 87 bytes
Experimente online!
Esta resposta é baseada (embora fortemente modificada) na resposta de Imme . Ele sugeriu em um comentário que essa deveria ser uma resposta diferente.
O problema com a abordagem antiga é porque
sort
é completamente dependente da implementação. O padrão não garante a ordem de chamar a função de classificação, portanto, teoricamente, nunca pode terminar no primeiro ou no segundo caso de teste.Essa abordagem tem alguns bytes a mais, mas garante que será concluída em tempo restrito, mesmo que
Math.random
nunca retorne.5
.fonte
CJam , 11 bytes
Experimente online!
Explicação
fonte
Perl 6 , 42 bytes
Experimente online!
Aleatoriamente embaralha a primeira sequência da entrada até que não seja um elemento da entrada.
Explicação:
fonte