Tâche
Votre objectif, si vous l'acceptez, est d'écrire un programme qui, étant donné une chaîne d'entrée (ou un tableau de caractères), génère toutes les permutations possibles des lettres de cette chaîne. Je suis tatillon avec ma sortie, donc elle doit être triée par ordre alphabétique, sans doublons.
Exemple:
Contribution: buzz
Sortie:
buzz
bzuz
bzzu
ubzz
uzbz
uzzb
zbuz
zbzu
zubz
zuzb
zzbu
zzub
Règles
- C'est le code-golf donc le code le plus court l'emporte.
- Les espaces de fin sur chaque ligne / n'importe quelle ligne sont corrects
- Une seule nouvelle ligne après la dernière ligne est autorisée (mais pas plus)
code-golf
string
permutations
Brian Gradin
la source
la source
["buzz" "bzuz" "bzzu" "ubzz" "uzbz" "uzzb" "zbuz" "zbzu" "zubz" "zuzb" "zzbu" "zzub"]
-il être ?N*
àp
) :-)Réponses:
Gelée , 5 octets
Essayez-le en ligne!
Explication
la source
05AB1E ,
43 octetsMise à jour, depuis une mise à jour pour
œ
casser l'ancienne version,qui a également enregistré un octet comme suggéré par Magic Octopus Urn .
Essayez-le en ligne!
Explication
la source
œê»
est bien pour les non-hérités.œ
renvoie maintenant une liste de chaînes dans les deux.MATL , 4 octets
Essayez-le en ligne!
Explication
la source
Python 3.5, 79 octets
Une fonction qui prend en entrée une liste de caractères et sort par impression.
Effectue récursivement chaque permutation distincte en retirant alphabétiquement chaque caractère suivant possible des caractères distincts restants et en l'ajoutant à la sortie en cours
w
. Ensuite, nous récursions avec ce personnage supprimé. Une fois l'entrée vide, nous imprimonsw
.la source
CJam , 5 octets
Merci à @EriktheOutgolfer pour une correction (
q
au lieu der
)Essayez-le en ligne!
Explication
la source
Pyth - 5 octets
Essayez-le en ligne ici .
la source
S
vraiment nécessaire?Haskell, 46 octets
2 octets économisés grâce à nimi
la source
f=
.J, 19 octets
Cas de test
Explication
Il s'agit d'un 4 trains:
Fondamentalement:
la source
[:~.i.@!@#A./:~
devrait vous faire économiser quelques octetsJavaScript (Firefox 30+),
129124 octetsPas trop mal pour une langue sans permutation intégrée ...
la source
Python 3.5, 81 octets:
Vraiment ... 81 octets lorsque la prochaine réponse la plus longue est de 48 octets ... soupir . Eh bien, je vais essayer ce golf autant que possible, mais les conseils de golf sont toujours très appréciés.
En outre, voici la solution la plus courte que j'ai pu obtenir en Python 2 à 86 octets :
Apparemment en Python 2,
[*...]
retourne unSyntax Error
, et depuispermutations
retourneitertools.permutations object at 0x...
, la prochaine façon la plus courte (que je connaisse) d'extraire les permutations uniques utilise{''.join(i)for i in permutations(f)}
oùf
est la chaîne d'entrée.Enfin, notez que ce sont deux fonctions lambda et doivent donc être appelées dans le format
print(<Function Name>(<Input String>))
.la source
Mathematica,
3423 octetsL'entrée doit être une liste de caractères.
Explication
Trouvez toutes les permutations de l'entrée, triées et sans doublon.
Imprimez-les un par un.
la source
Brachylog , 9 octets
Essayez-le en ligne!
Explication
la source
Perl 6 ,
4944 octetsChaîne en entrée
Liste des caractères en entrée
Étendu
la source
#perl6
canal freenode.net .».say
place de.map: *.put
».say
est autorisé à les faire dans n'importe quel ordre, et à un moment donné, il a été délibérément fait hors service.Brachylog (v2), 5 octets
Essayez-le en ligne!
Trouver
ᵘ
niquep
ermutations d'entrée, so
les rt,ᵐ
apẉ
riteln (écriture avec saut de ligne) sur ce tableau.la source
Python 3,
7785 octetsMaintenant, trie!
la source
from itertools import*
plutôt queimport itertools as i
. Vous pourrez enregistrer un octet en le remplaçanti.permutations
parpermutations
.{*...}
au lieu deset(...)
vous permet d' économiser deux octets supplémentaires.PowerShell v3 +, 171 octets
PowerShell v3 a introduit le
-Unique
drapeau sur leSort-Object
applet de commande, il est donc plus court de quelques octets que la version v2 ci-dessous, car nous n'avons pas besoin deSelect
commencer.version v2, 178 octets:
PowerShell n'a pas de permutations intégrées, j'ai donc emprunté mon code à Prime Factors Buddies et l' ai légèrement modifié pour l'utiliser ici.
Il s'agit essentiellement de trois parties, que je développerai ci-dessous.
param([char[]]$x)$a,$b=$x;$a=,$a
Prend l'entrée$x
, lachar
transforme en tableau, supprime la première lettre$a
et le reste$b
, puis la refonte$a
sous forme de tableau avec l'opérateur virgule.while($b){$z,$b=$b;$a+=$a|%{0..($y=($c="$_").Length)|%{-join($c[0..$_]+$z+$c[++$_..$y])};"$z$c";"$c$z"}}
Boucle à travers les lettres restantes ($b
), chaque itération prenant la lettre suivante et la stockant dans$z
et en laissant le reste$b
, puis concaténant le tableau sur$a
le résultat de l'envoi$a
via sa propre boucle - chaque élément de$a
(temporairement stocké dans$c
) est bouclé son propre.length
, puis$z
est inséré dans chaque position, y compris pré-ajout et ajout avec$z$c
et$c$z
. Par exemple, pour$c = '12'
et$z = '3'
, cela se traduira par'132','312','123'
une nouvelle concaténation dans$a
.La dernière partie
$a|?{$_.length-eq$x.count}|select -u|sort
prend chaque élément$a
et utilise laWhere-Object
clause pour filtrer uniquement ceux qui ont la même longueur que la chaîne d'entrée, puisselect
s uniquement les-u
éléments niques et enfinsort
s ceux par ordre alphabétique. Les chaînes résultantes sont toutes laissées sur le pipeline, et la sortie via impliciteWrite-Output
se produit à la fin du programme.la source
|select -u|sort
à|sort -u
. Je suis sûr que 2.0 n'a pas ça.JavaScript (ES6), 119 octets
Où
\n
représente le caractère de nouvelle ligne littéral. Port de la réponse de @ ETHproduction pour utiliser des chaînes au lieu de tableaux. Inverser la sortie, ou déplacer le retour à la ligne au début, économise 3 octets.la source
R, 113 octets
Lit l'entrée de stdin. Le
permute
package est supposé être installé afin d'appeler leallPerms
fonction.Ajoutera une explication à mon retour du travail.
la source
Java
302300 octetsCode non testé et testé:
Essayez-le ici.
Entrée: test
Sortie:
la source
Raquette 82 octets
Non golfé:
Essai:
Sortie:
la source
Groovy, 69 octets
la source
Rubis, 51 octets
la source
puts s.chars.permutation().map(&:join).uniq
43 octetss
sans définition préalable.En fait , 8 octets
Suggestions de golf bienvenues! Essayez-le en ligne!
Ungolfing
la source
Pip , 8 octets
7 octets de code, +1 pour l'
-n
indicateur.Prend une chaîne comme argument de ligne de commande. Essayez-le en ligne!
Le scanner de Pip divise les séries de lettres majuscules en blocs de deux lettres. Donc, ce code est
SS UQ PM a
--ieSortString(UniQue(PerMutations(a)))
, aveca
l'argument de la ligne de commande. L'-n
indicateur garantit que la liste des résultats est séparée par des sauts de ligne. C'est tout ce qu'on peut en dire.la source
K (oK) , 14 octets
Solution:
Essayez-le en ligne!
Explication:
Utilisez la fonction de permutation intégrée,
prm
pour générer des permutations de la longueur de l'entrée, appliquez ces permutations à l'entrée, triez par ordre alphabétique, puis prenez des valeurs distinctes.la source
Perl 5
-MList::Util=uniq -F
, 68 octetsEssayez-le en ligne!
la source
Japt v2.0a0
-R
, 5 octetsEssayez-le
la source
û
est la méthode du pas central; Je pense que tu voulais diren
;)sort
la barre de recherche dans votre interprète et j'ai cliqué sur le premier que j'ai trouvé. Maisá
semble déjà donner chaque permutation dans l'ordre alphabétiqueü
. Je vais le réparer demain. Les permutations de "buzz" se trouvent être triées parce que le mot lui-même est - essayez-le avec "zzub" à la place, par exemple.n
(c'est plus facile à taper)C ++ (gcc) ,
132128 octetsEssayez-le en ligne!
la source
Palourde , 9 octets
Explication
la source