Dada una lista de cadenas únicas que son anagramas entre sí, genera un anagrama de esas palabras que es diferente de cada palabra en la lista.
Las cadenas serán alfanuméricas, y se garantiza que habrá un anagrama válido.
El programa o función puede, pero no tiene que ser no determinista, lo que significa que, dada la misma entrada, la ejecución múltiple de un código puede producir diferentes salidas, siempre que cada salida posible sea válida.
Casos de prueba
[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
Levemente Milquetoast
fuente
fuente
itertools
alguna vez es la respuesta?f=\
el encabezado Probar en línea y dejar la función en el anonimato, sin afectar el contador automático de bytes de TiO05AB1E , 5 bytes
Pruébalo en línea!
Explicación
fuente
Pyth , 5 bytes
Pruébalo en línea!
Explicación
fuente
Jalea , 6 bytes
Pruébalo en línea!
1 byte más que el 05AB1E y la respuesta Pyth.
Explicación:
Elegí
X
porque es la forma más corta que conozco para elegir cualquier elemento de la lista sin alterar la lista (Ḣ
yṪ
no funciona,ḷ/
yṛ/
es más larga), y resulta que causa algo de aleatoriedad.El
µ
aquí es bastante redundante, pero sin él,Ḣ
se emparejaría con elḟ
, y se interpreta como "filtrar la cabeza de la entrada", que no es lo que necesito aquí (lo que necesito es "filtrar la entrada, y obtener la cabeza ").fuente
Javascript, 118 bytes
utiliza un aleatorizador incorrecto para iterar sobre cada permutación "aleatoria".
Probablemente sea incorrecto, pero afaik, el aleatorizador incorrecto solo significa que no obtendremos una aleatoriedad verdadera, pero aún obtendremos cada permutación.
Parece funcionar en todos los casos en Chrome para mí, pero aparentemente debido a un comportamiento indefinido en este tipo de abuso, no puede funcionar en algunos navegadores.
(Probablemente muy poco golfista siéntase libre de mejorarlo en sus propias soluciones)
80 bytes
Gracias al comentario de pirateBay -muchos bytes
-4 bytes gracias a Rick
fuente
a=>b
lugar defunction(a){return b}
). Ahorra muchos bytes.s.split("")
puede ser[...s]
. Tambiénjoin("")
puede ser `join```sort
función nunca regresa0
(o al menos extremadamente rara), por eso no funcionó.Haskell , 58 bytes
-1 byte y una solución gracias a Laikoni.
Pruébalo en línea!
Probablemente no valga la pena importar
Data.List
para permutaciones, pero eh.fuente
notElem
. Me sorprendería si alguien encuentra una función de permutación que supera la importación, mi enfoque más corto es de 60 bytes frente a los 29 bytes de la importación.$
falta antesl!!0
.Ruby , 46 bytes
Pruébalo en línea!
fuente
Brachylog , 7 bytes
Pruébalo en línea!
Explicación
fuente
Mathematica, 57 bytes
no determinista
Pruébalo en línea!
Mathematica, 56 bytes
determinista
Pruébalo en línea!
fuente
Japt ,
76 bytes-1 byte gracias a @Shaggy
Pruébalo en línea!
Toma las cadenas de entrada como varias entradas en lugar de como una matriz. Emite una permutación aleatoria; cambie
ö
ag
para obtener el primero.Explicación
fuente
á kN ö
.MATL ,
15,13, 12 bytesPruébalo en línea!
Guardado 2 bytes gracias a Sanchises.
setdiff(...,'rows')
es más corto que negarismember(...,'rows')
y evita una duplicación. Ahorré otro byte gracias a Luis Mendo, al cambiar a celdas en lugar de matrices.Explicación:
También se incluyen los equivalentes de MATLAB / Octave.
La entrada debe ser uno del formato
{'abc', 'acb'}
.fuente
Python 3 , 78 bytes
Pruébalo en línea!
-1 byte gracias al Sr. Xcoder
fuente
if x not in a
esif~-(x in a)
para 17878
verdad?Pip , 11 bytes
Toma las entradas como argumentos de línea de comandos. Pruébalo en línea!
Explicación
fuente
Python 3 , 87 bytes
Creo que esta es la única presentación hasta el momento que no utiliza ni una permutación incorporada ni un aleatorio aleatorio / clasificación. Aunque es más largo, creo que el algoritmo es bastante bueno.
Pruébalo en línea!
Explicación
Lo que estamos haciendo es básicamente esto:
Aquí hay una prueba de que funciona:
El código itera sobre
front(S)
para cadaS
enL
y selecciona unaS'
que no está enL
. Por el resultado anterior, habrá al menos unoS'
que califique.fuente
C # (compilador interactivo de Visual C #) ,
11696 bytes¡Mis habilidades de golf ciertamente han mejorado desde la primera vez que publiqué esto!
Pruébalo en línea!
fuente
JavaScript (ES7), 172 bytes
Encuentre la primera permutación lexicográfica del primer elemento de la matriz que no está contenida en la matriz.
fuente
Kotlin , 104 bytes
Embellecido
Prueba
fuente
C ++, 169 bytes
Pruébalo en línea!
fuente
Scala, 50 bytes
Pruébalo en línea!
Explicación
fuente
R, 89 bytes
Muestre repetidamente las letras de la primera entrada (ya que deberían ser anagramas entre sí) y deténgase cuando una de esas muestras no esté en la lista original.
fuente
Casco , 6 bytes
Pruébalo en línea!
fuente
PHP , 70 bytes
Ejecútelo en un servidor web, ingresando 0 valores de indexación o ¡ Pruébelo en línea!
Sin golf
fuente
do{...}while($j);
lugar de$j=1;while($j){...}
. Utilice la definición en el lugar para$g
deshacerse de las llaves (y guardar cuatro bytes).PHP,
5855 bytesno determinista; toma datos de los argumentos de la línea de comandos
Corre con
php -r <code>
palabras separadas por espacios o pruébalo en línea .fuente
Adjunto , 16 bytes
Pruébalo en línea!
Explicación
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]}
fuente
J , 25 bytes
La entrada es una lista de cadenas en caja: sentí que era justo así y no declarar las listas de cadenas explícitamente como 4 8 $ 'abcde123', 'ab3e1cd2', '321edbac', 'bcda1e23'.
No me gusta el @ mess en mi código, pero esta vez hay muchos verbos serializados.
Cómo funciona:
Pruébalo en línea!
fuente
{.@(-.~i.@!@#@{.A.{.)
. Pruébalo en línea!05AB1E , 5 bytes
Pruébalo en línea!
Explicación
Más o menos la misma respuesta que encontró @ThePirateBay.
fuente
JavaScript, 87 bytes
Pruébalo en línea!
Esta respuesta se basa (aunque muy modificada) en la respuesta de Imme . Sugirió en un comentario que esta debería ser una respuesta diferente.
El problema con el viejo enfoque es porque
sort
depende completamente de la implementación. El estándar no garantiza el orden de invocación de la función de clasificación, por lo tanto, en teoría, puede que nunca termine para el primer o el segundo caso de prueba.Este enfoque es de unos pocos bytes más, pero garantiza que terminará en un tiempo limitado, incluso si
Math.random
nunca regresa.5
.fuente
CJam , 11 bytes
Pruébalo en línea!
Explicación
fuente
Perl 6 , 42 bytes
Pruébalo en línea!
Aleatoriza aleatoriamente la primera cadena de la entrada hasta que no sea un elemento de la entrada.
Explicación:
fuente