Étant donné une liste de chaînes uniques qui sont des anagrammes les unes des autres, affichez une anagramme de ces mots qui est différente de chaque mot de la liste.
Les chaînes seront alphanumériques et il est garanti qu'il y aura une anagramme valide.
Le programme ou la fonction peut, mais ne doit pas être non déterministe, ce qui signifie que pour la même entrée, plusieurs exécutions de code peuvent produire des sorties différentes, tant que chaque sortie possible est valide.
Cas de test
[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
la source
la source
itertools
jamais la réponse?f=\
en-tête Try it Online et laisser la fonction anonyme, sans affecter le compteur d'octets TiO automatique05AB1E , 5 octets
Essayez-le en ligne!
Explication
la source
Pyth , 5 octets
Essayez-le en ligne!
Explication
la source
Gelée , 6 octets
Essayez-le en ligne!
1 octet de plus que le 05AB1E et la réponse Pyth.
Explication:
J'ai choisi
X
parce que c'est la façon la plus courte que je connaisse de choisir n'importe quel élément de la liste sans modifier la liste (Ḣ
etṪ
cela ne fonctionne pas,ḷ/
etṛ/
c'est plus long), et il se trouve que cela cause un certain caractère aléatoire.L'
µ
ici est assez redondant, mais sans lui, leḢ
serait couplé avec leḟ
, et il est interprété comme "filtrer la tête de l'entrée", ce qui n'est pas ce dont j'ai besoin ici (ce dont j'ai besoin est "filtrer l'entrée, et prenez la tête ").la source
Javascript, 118 octets
utilise un mauvais randomiseur pour itérer sur chaque permutation "aléatoire".
Probablement peut-être faux, mais afaik le mauvais randomiseur signifie simplement que nous n'obtiendrons pas le vrai hasard, mais nous obtiendrons toujours chaque permutation.
Semble fonctionner sur tous les cas dans Chrome pour moi, mais apparemment en raison d'un comportement indéfini dans ce type d'abus, il ne peut pas fonctionner dans certains navigateurs.
(Probablement très non golfé, n'hésitez pas à l'améliorer dans vos propres solutions)
80 octets
Merci au commentaire de pirateBay - beaucoup d'octets
-4 octets grâce à Rick
la source
a=>b
au lieu defunction(a){return b}
). Il économise beaucoup d'octets.s.split("")
peut être[...s]
.join("")
Peut également être `` rejoindre ''sort
fonction ne revient jamais0
(ou du moins extrêmement rare), c'est pourquoi cela n'a pas fonctionné.Haskell , 58 octets
-1 octet et un correctif grâce à Laikoni.
Essayez-le en ligne!
Ça ne vaut probablement pas la peine d'être importé
Data.List
pour des permutations mais hein.la source
notElem
. je serais surpris si quelqu'un trouve une fonction de permutation qui bat l'importation, mon approche la plus courte est de 60 octets contre les 29 octets de l'importation.$
est manquante auparavantl!!0
.Rubis , 46 octets
Essayez-le en ligne!
la source
Brachylog , 7 octets
Essayez-le en ligne!
Explication
la source
Mathematica, 57 octets
non déterministe
Essayez-le en ligne!
Mathematica, 56 octets
déterministe
Essayez-le en ligne!
la source
Japt ,
76 octets-1 octet grâce à @Shaggy
Essayez-le en ligne!
Prend les chaînes d'entrée comme plusieurs entrées au lieu d'un tableau. Génère une permutation aléatoire; passez
ö
à la placeg
pour obtenir le premier.Explication
la source
á kN ö
.MATL ,
15,13, 12 octetsEssayez-le en ligne!
Sauvegardé 2 octets grâce à Sanchises.
setdiff(...,'rows')
est plus court que la négationismember(...,'rows')
et évite une duplication. Un autre octet enregistré grâce à Luis Mendo, en passant aux cellules au lieu des tableaux.Explication:
Les équivalents MATLAB / Octave sont également inclus.
L'entrée doit être un format
{'abc', 'acb'}
.la source
Python 3 , 78 octets
Essayez-le en ligne!
-1 octet merci à M. Xcoder
la source
if x not in a
estif~-(x in a)
pour 17878
, non?Pip , 11 octets
Prend les entrées comme arguments de ligne de commande. Essayez-le en ligne!
Explication
la source
Python 3 , 87 octets
Je crois que c'est la seule soumission jusqu'à présent qui n'utilise ni une permutation intégrée ni un mélange aléatoire / tri. Même s'il est plus long, je pense que l'algorithme est assez soigné.
Essayez-le en ligne!
Explication
Ce que nous faisons est essentiellement le suivant:
Voici une preuve que cela fonctionne:
Le code itère sur
front(S)
chaqueS
dansL
et sélectionne unS'
qui ne soit pasL
. Par le résultat ci-dessus, il y en aura au moins unS'
qui se qualifie.la source
C # (Visual C # Interactive Compiler) ,
11696 octetsMes compétences en golf se sont certainement améliorées depuis la première fois que j'ai posté ça!
Essayez-le en ligne!
la source
JavaScript (ES7), 172 octets
Trouvez la première permutation lexicographique du premier élément du tableau qui n'est pas contenu dans le tableau.
la source
Kotlin , 104 octets
Embellie
Tester
la source
C ++, 169 octets
Essayez-le en ligne!
la source
Scala, 50 octets
Essayez-le en ligne!
Explication
la source
R, 89 octets
Échantillonnez à plusieurs reprises les lettres de la première entrée (car elles devraient être des anagrammes les unes des autres) et arrêtez lorsque l'un de ces échantillons ne figure pas dans la liste d'origine.
la source
Husk , 6 octets
Essayez-le en ligne!
la source
PHP , 70 octets
Exécutez sur un serveur Web, saisissez 0 valeurs indexées ou essayez-le en ligne!
Non golfé
la source
do{...}while($j);
au lieu de$j=1;while($j){...}
. Utilisez la définition sur place pour$g
se débarrasser des accolades (et économisez quatre octets).PHP,
5855 octetsnon déterministe; prend l'entrée des arguments de ligne de commande
Exécutez avec
php -r <code>
des mots séparés par des espaces ou essayez-le en ligne .la source
Attaché , 16 octets
Essayez-le en ligne!
Explication
Alternatives
17 octets :
{&\S! !S@_[0]Ø_}
18 octets :
{&\S! !Id@_[0]Ø_}
19 octets :
{&\S!(!Id)@_[0]Ø_}
26 octets :
{&\S!Permutations@_[0]Ø_}
26 octets :
{&\S!Permutations[_@0]Ø_}
26 octets :
{(Permutations[_@0]Ø_)@0}
26 octets :
&\S##~`Ø#Permutations@&\S
27 octets :
Last@{Permutations[_@0]Ø_}
27 octets :
`@&0@{Permutations[_@0]Ø_}
28 octets :
Last##~`Ø#Permutations@&{_}
28 octets :
Last##~`Ø#Permutations@Last
28 octets :
First@{Permutations[_@0]Ø_}
30 octets :
{NestWhile[Shuffle,`in&_,_@0]}
33 octets :
{If[(q.=Shuffle[_@0])in _,$@_,q]}
33 octets :
{q.=Shuffle[_@0]If[q in _,$@_,q]}
34 octets :
{If[Has[_,q.=Shuffle[_@0]],$@_,q]}
la source
J , 25 octets
L'entrée est une liste de chaînes encadrées - je pensais que c'était juste comme ça et de ne pas déclarer les listes de chaînes explicitement comme 4 8 $ 'abcde123', 'ab3e1cd2', '321edbac', 'bcda1e23'.
Je n'aime pas le @ mess dans mon code, mais il y a beaucoup de verbes sérialisés cette fois.
Comment ça marche:
Essayez-le en ligne!
la source
{.@(-.~i.@!@#@{.A.{.)
. Essayez-le en ligne!05AB1E , 5 octets
Essayez-le en ligne!
Explication
À peu près la même réponse que @ThePirateBay a trouvée.
la source
JavaScript, 87 octets
Essayez-le en ligne!
Cette réponse est basée (bien que fortement modifiée) sur la réponse d'Imme . Il a suggéré dans un commentaire que cela devrait être une réponse différente.
Le problème avec l'ancienne approche est parce que cela
sort
dépend complètement de l'implémentation. La norme ne garantit pas l'ordre d'appel de la fonction de tri, par conséquent, elle ne peut théoriquement jamais se terminer pour le premier ou le deuxième cas de test.Cette approche prend quelques octets de plus, mais elle garantit qu'elle se terminera dans un temps limité, même si elle
Math.random
ne revient jamais.5
.la source
CJam , 11 octets
Essayez-le en ligne!
Explication
la source
Perl 6 , 42 octets
Essayez-le en ligne!
Mélange aléatoirement la première chaîne de l'entrée jusqu'à ce qu'elle ne soit pas un élément de l'entrée.
Explication:
la source