SPÉCIFICATION
Étant donné les m
variables, créez chaque combinaison dans l'ordre n
. Par exemple,
Le résultat du mappage de deux variables ( a
et b
) à l'ordre 1
serait:
- une
- b
- un B
Le résultat du mappage de deux variables ( a
et b
) à l'ordre 2
serait:
- une
- un 2
- b
- b 2
- un B
- a 2 b
- ab 2
- a 2 b 2
Le résultat du mappage de deux variables ( a
et b
) à l'ordre 3
serait:
- une
- un 2
- un 3
- b
- b 2
- b 3
- un B
- a 2 b
- a 3 b
- a 3 b 2
- ab 2
- ab 3
- a 2 b 3
- a 2 b 2
- a 3 b 3
La sortie de la cartographie trois variables ( a
, b
, et c
) à l' ordre 1
serait:
- une
- b
- c
- un B
- avant JC
- ac
- abc
Le résultat du mappage des m
variables à l'ordre n
serait:
- etc.
CRITÈRES GAGNANTS
Sortez toutes les combinaisons possibles comme indiqué ci-dessus. L'ordre n'a pas d'importance. Peu importe où dans votre code vous imprimez à l'écran. Tout ce qui compte, c'est que ce qui apparaît dans votre sortie soit correct.
code-golf
arithmetic
code-golf
code-golf
string
chemistry
code-golf
code-golf
code-golf
string
code-golf
string
parsing
code-golf
counting
user1873073
la source
la source
^
?m
est supérieur à 26? devons-nous soutenir des valeurs aussi élevées?given m variables
implique qu'une liste de variables sera donnée. Si seul le nombre de variables est donné et 0,1,2,3..27,28,29 élevé aux puissances ^ 0, ^ 1, ^ 2 etc. est une sortie acceptable (comme je le déduis de votre dernier commentaire) cela fait les choses plus faciles.Réponses:
Brachylog , 6 octets
Prend l'entrée en couple, contenant la liste des variables et l'ordre. La sortie est une liste de listes de variables, où les puissances sont représentées par des variables répétées. (par exemple, "a²b" est ["a", "a", "b"])
Essayez-le en ligne!
j₎
joint la première entrée avec elle-même autant de fois que indiqué par la deuxième entrée.o
ordonne la liste obtenue, puis⊇ᵘ
trouve tous les sous-ensembles uniques de cette liste ordonnée. Enfin, nous supprimons le premier élément avecb
, car ce sera toujours la réponse vide, qui n'est pas envisagée par le défi.la source
L A T E X, 354 octets
Quand j'ai vu cela, je savais que cela devait être fait en latex. Les équations ont l'air si nettes et propres en Latex et je ne supporte pas d'utiliser
^
de la puissance.Explication
Il y a trois forces principales à l'œuvre ici,
\typein
ce qui nous permet de prendre des entrées à partir de la ligne de commande, leintcalc
package qui nous permet de faire des calculs avec nos variables et l'equation
environnement Latex .Une fois que nous avons pris en entrée, nous commençons une boucle, nous bouclons
\intcalcPow{\b+1}{\a}
fois, une fois pour chaque résultat que nous voulons imprimer. À chaque boucle, nous commençons unequation
environnement et parcourons l'alphabet en gardant une trace de\y
la lettre actuelle et\i
du nombre actuel de tirages. Si\i
est supérieur ou égal à,\a
nous n'imprimons rien du tout (selon les spécifications, cela n'est pas strictement nécessaire, mais Latex débordera pour les valeurs supérieures à 1 si nous ne le faisons pas). Nous imprimons ensuite\y
à notre équation et l'élever à la puissance deTout ce gâchis signifie simplement prendre le
\i
troisième chiffre de la\x
base\b+1
. Cela garantit que les pouvoirs sont décodés correctement.Exemple de sortie:
Voici la sortie pour 3, 2
la source
Mathematica,
5150 octetsSuppose que "
m
variables données " signifie que la première entrée est une liste de variables.Si la première entrée est un entier, 69 octets
Les variables sont sous la forme
$<integer>
(par exemple$5
)la source
PowerRange
est une chose! Je suis d'accord avec l'interprétation de votre première soumission btwHaskell,
71585453 octetsRenvoie une liste de chaînes et utilise le format de sortie
"aabbb"
pour"a^2 b^3"
.Exemple d'utilisation:
3 # "ab"
->["b","bb","bbb","a","ab","abb","abbb","aa","aab","aabb","aabbb","aaa","aaab","aaabb","aaabbb"]
. Essayez-le en ligne! .De nombreux octets sont dépensés pour le formatage de sortie. Une sortie plus flexible, par exemple des paires de (variable, puissance) ->
[('a',2),('b',3),('c',1)]
pour"a^2 b^3 c^1"
économiserait beaucoup.Comment ça fonctionne
Avec une flexibilité maximale, c'est-à-dire un format de sortie sous forme de paires (variables, de puissance) et incluant des puissances entièrement nulles (
"a^0 b^0 c^0"
)Haskell, 25 octets:
Exemple d'utilisation
f 2 "ab"
::Laissant tomber tous les pouvoirs zéro coûte 5 octets pour un total de 30:
f n=tail.mapM((<$>[0..n]).(,))
.la source
[('a',0),('b',0)]
ne devrait pas être dans la sortie ...a^0 b^0
coûte 5 octets. J'ajouterai une autre note.Gelée ,
2017 octetsUn lien dyadique (fonction) qui accepte une liste de noms de variables * et l'ordre maximal (un entier) et renvoie une liste où chaque entrée est une représentation entièrement développée de la multiplication (par exemple, foo 0 bar 3 bof 2 le serait
['bar', 'bar', 'bar', 'bof', 'bof']
.* les noms de variables peuvent être une chaîne de caractères uniques (les chaînes deviennent des listes de caractères).
Essayez-le en ligne! - le pied de page appelle le lien comme une dyade puis sépare la liste résultante des listes par des sauts de ligne et chaque entrée par des espaces pour faciliter la lecture.
Remarque: comprend la commande 0 (produit vide) une file d'attente,,
Ḋ
peut être inséré ici...ŒPḊç...
pour éviter cela.Comment?
Version de 13 octets qui ne fonctionnera que pour une seule chaîne de caractères uniques (ou une liste de caractères uniques):
essayez-le
la source
JavaScript (proposition ES), 142 octets
Nécessite un navigateur avec
**
etpadStart
support, essayez donc Firefox 52 ou Chrome 57.la source
Mathematica 100 octets
Il y a sûrement un moyen plus efficace d'accomplir cela!
Deux variables à commander 4:
la source
Bash + sed, 60
Une approche différente et plus courte de ma réponse précédente.
L'entrée en tant que paramètres de ligne de commande -
m
est donnée sous la forme d'une liste de noms de variables séparés par des virgules etn
sous forme d'entier:Essayez-le en ligne .
Réponse précédente:
Bash + coreutils, 91
Bienvenue dans l'enfer eval-escape-brace. Parfois, shell-script donne vraiment juste le bon outil pour le travail. Ce n'est pas le cas ici, mais ça marche.
Entrée en tant que paramètres de ligne de commande -
m
est donnée sous la forme d'une liste de noms de variables séparés par des virgules etn
sous forme d'entier. La sortie est écrite à la main - par exemple, ellea^2
est réellement écriteaa
. C'est acceptable selon ce commentaire .Il peut y avoir des moyens plus courts de le faire.
Essayez-le en ligne .
Explication
printf -vc {%$[$2-1]s}
assigne la variablec
à une chaîne comme{ }
, où le nombre d'espaces est l'ordren
- 1, donc sin
= 1, le résultat est{}
, sin
= 2, le résultat est{ }
, etc.${a[$1]}
utilisem
comme index du tableaua
, donc sim
est 3, alors le résultat estc
\{{a..${a[$1]}}${c// /,}\\,}
est une extension de renfort en plusieurs parties:\{
- un littéral{
{$1}
est un est l'extension d'accolade de la listem
, par exemple{a,b,c}
oua b c
${c// /,}
remplace les espaces$c
par des virgules, par exemple{,,}
pourn
= 3, qui est également une expansion d'accolade qui répète efficacement chaque élément de{a..c}
n
temps\\\,}
- un littéral,}
m
= "a, b" etn
= 2, cela se développe pour{a,} {a,} {b,} {b,}
printf
supprime les espaces à donner{a,}{a,}{b,}{b,}
, ce qui est lui-même une expansion de l'orthèseaabb aab aab aa abb ab ab a abb ab ab a bb b b
printf
met chacun de ces éléments sur sa propre lignesort -u
supprime les doublonstr -d {}
est là pour gérer le cas lorsquen
= 1. Dans ce cas, la variablec
sera{}
qui n'est pas une expansion d'accolade, mais à la place les caractères littéraux sont insérés. Le lestr
supprime.eval
s et les\
évasions sont placées très soigneusement pour garantir que toutes les expansions se produisent dans l'ordre nécessaire.la source
Röda ,
494846 octetsEssayez-le en ligne!
Je pense que c'est correct. Il n'utilise aucun séparateur entre une variable et son ordre. La version précédente était utilisée
!
, mais j'ai réalisé qu'elle n'était pas strictement requise.Expliqué:
la source
Python, 112 octets
Usage:
Production:
Format plus agréable en 115 octets :
Sortie (même usage):
Encore plus agréable en 125 octets :
Production:
Les 4 derniers octets (
[1:]
) au total sont destinés à supprimer le produit vide.Ils fonctionnent à la fois en Python 2 et 3.
la source
C ++ 14,
146140 octets-6 octets pour un format de sortie plus simple.
Lambda sans nom, en supposant l'entrée
s
commestd::string
eto
commestd::ostream
:Utilisation et explication:
Production:
la source