A pesar de tener 17 preguntas etiquetadas anagramas , todavía no tenemos esta pregunta, así que aquí está.
Tu tarea
Debe escribir un programa o función que, al recibir una cadena, imprima todos los anagramas posibles de la misma. A los fines de esta pregunta, un anagrama es una cadena que contiene el mismo carácter que la cadena original, pero no es una copia exacta de la cadena original. Un anagrama no tiene que ser o contener palabras reales.
Entrada
Puede aceptar la cadena, que puede ser de cualquier longitud> 0, por cualquier método de entrada estándar. Puede contener caracteres ASCII.
Salida
Puede generar todos los anagramas posibles de la cadena ingresada de cualquier manera estándar. No debe generar la misma cadena dos veces, ni generar una cadena igual a la entrada.
Otras reglas
Las lagunas estándar no están permitidas
Puntuación
Este es el código de golf , gana menos bytes.
fuente
Respuestas:
05AB1E , 3 bytes
Una función que deja la pila con una lista de los anagramas en la parte superior (y como su único elemento). Como un programa completo imprime una representación de esa lista.
Pruébalo en línea!
¿Cómo?
fuente
Ruby , 45 bytes
Pruébalo en línea!
A pesar de tener una función incorporada, la palabra "permutación" es realmente larga :(
fuente
|[]
parece innecesario?|[]
es más corto que.uniq
.MATL , 7 bytes
Pruébalo en línea!
Explicación
fuente
pyth ,
84Prueba en línea .
fuente
Japt , 6 bytes
Pruébalo en línea!
Explicación
fuente
Haskell,
4840 bytesPruébalo en línea!
Guardado 8 bytes gracias a la
tail
sugerencia de Leo .fuente
tail
lugar dedelete x
, ya que la cadena original siempre aparecerá primero en la lista de permutaciones. Esto le permitirá cambiar a una solución sin puntos, y luego a una función sin nombre, ¡muchos bytes para guardar!CJam , 8 bytes
Pruébalo en línea!
Explicación
fuente
Mathematica, 47 bytes
fuente
StringJoin/@Rest@Permutations@Characters@#&
es de 43 bytes.Jalea , 4 bytes
Un enlace monádico que toma una lista de caracteres y devuelve una lista de listas de caracteres, todos anagramas distintos que no son iguales a la entrada.
Pruébalo en línea! (el pie de página forma un programa que se une a la lista mediante nuevas líneas e impresiones para evitar la representación destrozada).
¿Cómo?
fuente
Y
si se permitían las funciones ... Sin embargo, veo que simplemente invirtió mi edición a la pregunta: /Python 3,
857663 bytesComo una función, y devolviendo cadenas como una lista de caracteres (gracias a @ pizzapants184 por decirme que está permitido):
Como una función:
85 bytes como un programa completo:
Podría reducirse un poco si la salida de cadenas como ('a', 'b', 'c') está permitida (no estoy seguro de que lo sea).
fuente
Java 8,
245239237 bytes-6 bytes gracias a @ OlivierGrégoire .
Java verbosa típica. Veo muchas respuestas de <10 bytes, y aquí estoy con más de 200 bytes. XD
Explicación:
Pruébalo aquí
fuente
l.forEach(System.out::println);
lugar de su bucle de impresión. Además, no me gustaSet
que me definan a nivel de clase sin su clase adjunta, una lambda definida que nadie sabe dónde y un método. Esto es demasiado para mí. Puedo entender que las importaciones se separen del resto, pero no hay nada autónomo allí, parece más una colección de fragmentos que cualquier otra cosa. Lo siento, pero por primera vez en PCG, doy -1 :(forEach
. En cuanto al nivel de claseSet
, ¿cuál es la alternativa? ¿Publicar toda la clase, incluido el método principal? ¿Publicar toda la clase excluyendo el método principal, pero incluyendo la clase en sí, la interfaz y el nombre de la función?public static void main
, solo diga "el método de entrada es ...". La cuestión es que su respuesta tal como es actualmente rompe todas las reglas "autónomas". No estoy en contra de atar las reglas, sino ¿romperlas? Sí, me importa :(Perl 6 ,
3938 bytesIntentalo
Intentalo
Expandido
fuente
C ++, 142 bytes
sin golf
fuente
K (oK) , 13 bytes
Solución:
Pruébalo en línea!
Explicación:
La evaluación se realiza de derecha a izquierda.
fuente
JavaScript (ES6), 101 bytes
Adoptado de una respuesta anterior mía .
Mostrar fragmento de código
fuente
Perl 5 , 89 + 2 (
-F
) = 91 bytesPruébalo en línea!
fuente