Tarea
Su objetivo, si elige aceptarlo, es escribir un programa que, dada una cadena de entrada (o conjunto de caracteres), produzca todas las permutaciones posibles de las letras en esa cadena. Soy quisquilloso con mi salida, por lo que debe ordenarse alfabéticamente, sin duplicados.
Ejemplo:
Entrada: buzz
Salida:
buzz
bzuz
bzzu
ubzz
uzbz
uzzb
zbuz
zbzu
zubz
zuzb
zzbu
zzub
Reglas
- Este es el código de golf, por lo que gana el código más corto.
- Los espacios finales en cada / cualquier línea están bien
- Se permite una nueva línea después de la última línea (pero no más)
code-golf
string
permutations
Brian Gradin
fuente
fuente

["buzz" "bzuz" "bzzu" "ubzz" "uzbz" "uzzb" "zbuz" "zbzu" "zubz" "zuzb" "zzbu" "zzub"]?N*ap) :-)Respuestas:
Jalea , 5 bytes
Pruébalo en línea!
Explicación
fuente
05AB1E ,
43 bytesActualizado, desde una actualización para
œromper la versión anterior,que también salvó un byte como lo sugiere Magic Octopus Urn .
Pruébalo en línea!
Explicación
fuente
œê»está bien para el no legado.œahora devuelve una lista de cadenas en ambas.MATL , 4 bytes
Pruébalo en línea!
Explicación
fuente
Python 3.5, 79 bytes
Una función que toma entrada como una lista de caracteres y salidas imprimiendo.
Realiza recursivamente cada permutación distinta al tomar alfabéticamente cada uno de los siguientes caracteres posibles de los caracteres distintos restantes y agregarlos a la salida en progreso
w. Luego, recurrimos con este personaje eliminado. Una vez que se vacía la entrada, imprimimosw.fuente
CJam , 5 bytes
Gracias a @EriktheOutgolfer por una corrección (en
qlugar der)Pruébalo en línea!
Explicación
fuente
Pyth - 5 bytes
Pruébelo en línea aquí .
fuente
Srealmente necesario?Haskell, 46 bytes
2 bytes guardados gracias a nimi
fuente
f=.J, 19 bytes
Caso de prueba
Explicación
Este es un tren de 4:
Básicamente:
fuente
[:~.i.@!@#A./:~debería ahorrarte unos pocos bytesJavaScript (Firefox 30+),
129124bytesNo está mal para un idioma sin permutación incorporada ...
fuente
Python 3.5, 81 bytes:
Realmente ... 81 bytes cuando la siguiente respuesta más larga es 48 bytes ... suspiro . Bueno, intentaré este golf tanto como pueda, pero los consejos de golf todavía son muy apreciados.
Además, aquí está la solución más corta que pude obtener en Python 2 en 86 bytes :
Aparentemente en Python 2,
[*...]devuelve aSyntax Error, y comopermutationsdevuelveitertools.permutations object at 0x..., la siguiente forma más corta (que sé) de extraer las permutaciones únicas es usar{''.join(i)for i in permutations(f)}wherefes la cadena de entrada.Finalmente, tenga en cuenta que estas son funciones lambda y, por lo tanto, deben llamarse en el formato
print(<Function Name>(<Input String>)).fuente
Mathematica,
3423 bytesLa entrada debe ser una lista de caracteres.
Explicación
Encuentre todas las permutaciones de la entrada, ordenadas y sin duplicados.
Imprimirlos uno por uno.
fuente
Brachylog , 9 bytes
Pruébalo en línea!
Explicación
fuente
Perl 6 ,
4944 bytesCadena como entrada
Lista de caracteres como entrada
Expandido
fuente
#perl6canal freenode.net .».saylugar de.map: *.put».saypuede hacerlos en cualquier orden, y en un momento se hizo fuera de servicio a propósito.Brachylog (v2), 5 bytes
Pruébalo en línea!
Encuentra
ᵘniquepermutations de entrada, soellos, RTᵐAPẉriteln (escritura con la nueva línea) sobre la matriz.fuente
Python 3,
7785 bytesAhora tipo!
fuente
from itertools import*lo contrarioimport itertools as i. Podrá guardar un byte reemplazándoloi.permutationsporpermutations.{*...}lugar deset(...)ahorra dos bytes más.PowerShell v3 +, 171 bytes
PowerShell v3 introdujo el
-Uniqueindicador en elSort-Objectcmdlet, por lo que es unos pocos bytes más corto que la versión v2 a continuación, ya que no necesitamosSelectprimero.Versión v2, 178 bytes:
PowerShell no tiene permutaciones integradas, por lo que tomé prestado mi código de Prime Factors Buddies y lo modifiqué ligeramente para usarlo aquí.
Esto es esencialmente tres porciones, que ampliaré a continuación.
param([char[]]$x)$a,$b=$x;$a=,$aToma la entrada$x, lacharconvierte como una matriz, elimina la primera letra$ay el resto$b, y luego la vuelve a proyectar$acomo una matriz con el operador de coma.while($b){$z,$b=$b;$a+=$a|%{0..($y=($c="$_").Length)|%{-join($c[0..$_]+$z+$c[++$_..$y])};"$z$c";"$c$z"}}Recorre las letras restantes ($b), cada iteración toma la siguiente letra y la almacena$zy la deja dentro$b, luego concatena la matriz en$ael resultado del envío$através de su propio bucle: cada elemento de$a(almacenado temporalmente$c) se repite propio.length, y luego$zse inserta en cada posición, incluso anteponer y anexar con$z$cy$c$z. Por ejemplo, para$c = '12'y$z = '3', esto dará como resultado que'132','312','123'se concatenen nuevamente$a.La parte final
$a|?{$_.length-eq$x.count}|select -u|sorttoma cada elemento de$ay usa laWhere-Objectcláusula para filtrar solo aquellos que tienen la misma longitud que la cadena de entrada, luegoselectsolo los-uelementos nique y finalmentesortlos alfabéticamente. Todas las cadenas resultantes se dejan en la tubería, y la salida a través de lo implícitoWrite-Outputocurre al finalizar el programa.fuente
|select -u|sorta|sort -u. Estoy bastante seguro de que 2.0 no tiene eso.JavaScript (ES6), 119 bytes
Donde
\nrepresenta el carácter literal de nueva línea. La respuesta del puerto de @ ETHproduction para usar cadenas en lugar de matrices. Invertir la salida, o mover la nueva línea al comienzo, ahorra 3 bytes.fuente
R, 113 bytes
Lee la entrada de stdin. Se
permutesupone que el paquete está instalado para llamar a laallPermsfunción.Agregaré una explicación cuando llegue a casa del trabajo.
fuente
Java
302300 bytesUngolfed y código de prueba:
Pruébalo aquí
Entrada: prueba
Salida:
fuente
Raqueta 82 bytes
Sin golf:
Pruebas:
Ouput:
fuente
Groovy, 69 bytes
fuente
Ruby, 51 bytes
fuente
puts s.chars.permutation().map(&:join).uniq43 Bytessin una definición previa.Actualmente , 8 bytes
Sugerencias de golf bienvenidas! Pruébalo en línea!
No golfista
fuente
Pip , 8 bytes
7 bytes de código, +1 para
-nbandera.Toma una cadena como argumento de línea de comandos. Pruébalo en línea!
El escáner de Pip divide series de letras mayúsculas en pedazos de dos letras. Entonces, este código es
SS UQ PM a--ieSortString(UniQue(PerMutations(a))),asiendo la línea de comando arg. El-nindicador garantiza que la lista de resultados esté separada por una nueva línea. Eso es todo al respecto.fuente
K (oK) , 14 bytes
Solución:
Pruébalo en línea!
Explicación:
Use la función de permutación incorporada,
prmpara generar permutaciones de longitud de la entrada, aplique estas permutaciones a la entrada, ordene alfabéticamente y luego tome valores distintos.fuente
Perl 5
-MList::Util=uniq -F, 68 bytesPruébalo en línea!
fuente
Japt v2.0a0
-R, 5 bytesIntentalo
fuente
ûes el método pas central; Creo que quisiste decirn;)sorten la barra de búsqueda de su intérprete e hice clic en el primero que encontré. Peroáparece dar cada permutación en orden alfabético yaü. Lo arreglaré mañana. Las permutaciones de "zumbido" se ordenan porque la palabra en sí es - intente con "zzub", por ejemplo.n(es más fácil de escribir)C ++ (gcc) ,
132128bytesPruébalo en línea!
fuente
Almeja , 9 bytes
Explicación
fuente