SPEZIFIKATION
m
Erstellen Sie bei gegebenen Variablen jede Kombination bis zur Reihenfolge n
. Beispielsweise,
Die Ausgabe der Zuordnung von zwei Variablen ( a
und b
) zur Reihenfolge 1
wäre:
- ein
- b
- ab
Die Ausgabe der Zuordnung von zwei Variablen ( a
und b
) zur Reihenfolge 2
wäre:
- ein
- a 2
- b
- b 2
- ab
- a 2 b
- ab 2
- a 2 b 2
Die Ausgabe der Zuordnung von zwei Variablen ( a
und b
) zur Reihenfolge 3
wäre:
- ein
- a 2
- a 3
- b
- b 2
- b 3
- ab
- 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
Das Ausgangssignal des Mapping drei Variablen ( a
, b
, und c
) , um zu bestellen 1
wäre:
- ein
- b
- c
- ab
- bc
- ac
- ABC
Die Ausgabe der Zuordnungsvariablen m
zur Reihenfolge n
wäre:
- etc.
GEWINNKRITERIEN
Geben Sie jede mögliche Kombination wie oben beschrieben aus. Bestellung spielt keine Rolle. Wo in Ihrem Code Sie auf dem Bildschirm drucken, spielt keine Rolle. Alles was zählt ist, dass das, was in Ihrer Ausgabe angezeigt wird, korrekt ist.
code-golf
arithmetic
code-golf
code-golf
string
chemistry
code-golf
code-golf
code-golf
string
code-golf
string
parsing
code-golf
counting
user1873073
quelle
quelle
^
?m
größer als 26 ist? Müssen wir so hohe Werte unterstützen?given m variables
impliziert jedoch, dass eine Liste von Variablen angegeben wird. Wenn nur die Anzahl der Variablen angegeben und 0,1,2,3..27,28,29 auf Potenzen ^ 0, ^ 1, ^ 2 usw. angehoben wird, ist dies eine akzeptable Ausgabe (wie ich aus Ihrem letzten Kommentar schließe) Dinge einfacher.Antworten:
Brachylog , 6 Bytes
Nimmt die Eingabe als Paar entgegen und enthält die Liste der Variablen und die Reihenfolge. Die Ausgabe ist eine Liste von Variablenlisten, in denen Potenzen durch wiederholte Variablen dargestellt werden. (zB "a²b" ist ["a", "a", "b"])
Probieren Sie es online aus!
j₎
verbindet den ersten Eingang so oft mit sich selbst, wie der zweite Eingang angibt.o
ordnet die erhaltene Liste an und⊇ᵘ
findet dann alle eindeutigen Teilmengen dieser geordneten Liste. Schließlich entfernen wir das erste Element mitb
, da dies immer die leere Antwort ist, die von der Herausforderung nicht berücksichtigt wird.quelle
L A T E X, 354 Bytes
Als ich das sah, wusste ich, dass es in Latex gemacht werden musste. Gleichungen sehen in Latex einfach so klar und sauber aus, und ich kann es nicht ertragen, sie
^
für Strom zu verwenden.Erläuterung
Hier wirken drei Hauptkräfte,
\typein
die es uns ermöglichen, Eingaben über die Befehlszeileintcalc
vorzunehmen , das Paket, mit dem wir Berechnungen mit unseren Variablen durchführen können, und die Latexumgebungequation
.Sobald wir die Eingabe eingegeben haben, beginnen wir eine Schleife, die wir einmal wiederholen
\intcalcPow{\b+1}{\a}
, einmal für jedes Ergebnis, das wir drucken möchten. In jeder Schleife beginnen wir eineequation
Umgebung und durchlaufen das Alphabet, wobei wir\y
den aktuellen Buchstaben und\i
die aktuelle Anzahl der Läufe verfolgen . Wenn\i
größer oder gleich ist,\a
drucken wir überhaupt nichts (gemäß den Spezifikationen ist dies nicht unbedingt erforderlich, aber Latex läuft bei Werten größer als 1 über, wenn wir dies nicht tun). Wir drucken dann\y
nach unserer Gleichung und erhöhen sie auf die Potenz vonDieses ganze Durcheinander bedeutet einfach, die
\i
dritte Ziffer\x
in der Basis zu nehmen\b+1
. Dies stellt sicher, dass die Kräfte richtig dekodiert werden.Beispielausgabe:
Hier ist die Ausgabe für 3, 2
quelle
Mathematica,
5150 BytesAngenommen, "gegebene
m
Variablen" bedeutet, dass die erste Eingabe eine Liste von Variablen ist.Wenn die erste Eingabe eine Ganzzahl ist, 69 Bytes
Die Variablen haben die Form
$<integer>
(zB$5
)quelle
PowerRange
ist eine Sache! Ich bin mit der Interpretation Ihrer ersten Einreichung übrigens einverstandenHaskell,
71585453 BytesGibt eine Liste von Zeichenfolgen zurück und verwendet das Ausgabeformat
"aabbb"
für"a^2 b^3"
.Anwendungsbeispiel:
3 # "ab"
->["b","bb","bbb","a","ab","abb","abbb","aa","aab","aabb","aabbb","aaa","aaab","aaabb","aaabbb"]
. Probieren Sie es online aus! .Viele Bytes werden für die Ausgabeformatierung ausgegeben. Eine flexiblere Ausgabe, zB Paare von (variabel, Leistung) ->
[('a',2),('b',3),('c',1)]
für"a^2 b^3 c^1"
würde viel sparen.Wie es funktioniert
Mit maximaler Flexibilität, dh Ausgabeformat als (variable, Leistungs-) Paare und einschließlich Null-Potenzen (
"a^0 b^0 c^0"
), läuft es darauf hinausHaskell, 25 Bytes:
Anwendungsbeispiel:
f 2 "ab"
:Das Löschen von Nullen kostet 5 Bytes für insgesamt 30 :
f n=tail.mapM((<$>[0..n]).(,))
.quelle
[('a',0),('b',0)]
sollte nicht in der Ausgabe sein ...a^0 b^0
kostet 5 Bytes. Ich werde eine weitere Notiz hinzufügen.Gelee ,
2017 BytesA dyadischen Link (Funktion) , die eine Liste von Variablennamen * und der maximale Ordnung (eine ganze Zahl) und gibt eine Liste akzeptiert , wobei jeder Eintrag eine vollständig expandierte Darstellung der Multiplikation ist (zB foo 0 bar 3 BOF 2 wäre
['bar', 'bar', 'bar', 'bof', 'bof']
.* Die Variablennamen können eine Zeichenfolge aus eindeutigen Zeichen sein (Zeichenfolgen werden zu Listen von Zeichen).
Probieren Sie es online aus! - Die Fußzeile ruft den Link als Dyade auf und trennt dann die resultierende Liste der Listen nach Zeilenvorschüben und jeden Eintrag nach Leerzeichen, um das Lesen zu erleichtern.
Hinweis: Enthält die 0- Bestellung (leeres Produkt) eine Warteschlange
Ḋ
, kann hier eingefügt werden...ŒPḊç...
, um dies zu vermeiden.Wie?
13-Byte-Version, die nur für eine einzelne Zeichenfolge eindeutiger Zeichen (oder eine Liste eindeutiger Zeichen) funktioniert:
Versuch es
quelle
JavaScript (ES-Vorschlag), 142 Byte
Benötigt einen Browser mit beidem
**
undpadStart
Unterstützung, versuchen Sie es also mit Firefox 52 oder Chrome 57.quelle
Mathematica 100 Bytes
Sicher gibt es einen effizienteren Weg, dies zu erreichen!
Zwei Variablen zur Bestellung 4:
quelle
Bash + sed, 60
Ein anderer, kürzerer Ansatz für meine vorherige Antwort.
Eingabe als Befehlszeilenparameter -
m
wird als durch Kommas getrennte Liste von Variablennamen undn
als Ganzzahl angegeben:Probieren Sie es online aus .
Vorherige Antwort:
Bash + Coreutils, 91
Willkommen in der Hölle der Eval-Escape-Brace. Manchmal bietet das Shell-Skript wirklich genau das richtige Werkzeug für den Job. Dies ist hier nicht der Fall, aber es funktioniert.
Eingabe als Befehlszeilenparameter -
m
wird als durch Kommas getrennte Liste von Variablennamen undn
als Ganzzahl angegeben. Die Ausgabe wird in Langschrift ausgeschrieben - zBa^2
tatsächlich geschriebenaa
. Dies ist gemäß diesem Kommentar akzeptabel .Möglicherweise gibt es dafür kürzere Möglichkeiten.
Probieren Sie es online aus .
Erläuterung
printf -vc {%$[$2-1]s}
Weist die Variablec
einer Zeichenfolge zu{ }
, bei der die Anzahl der Leerzeichen in der Reihenfolgen
1 liegt. Wenn alson
= 1, ist das Ergebnis{}
, wennn
= 2, ist das Ergebnis{ }
usw.${a[$1]}
wirdm
als Index für das Array verwendeta
. Wennm
also 3 ist, ist das Ergebnisc
\{{a..${a[$1]}}${c// /,}\\,}
ist eine mehrteilige Zahnspangenerweiterung:\{
- ein wörtliches{
{$1}
ist a ist die Klammererweiterung der Listem
, zB{a,b,c}
odera b c
${c// /,}
Ersetzt die Leerzeichen$c
durch Kommas, z. B.{,,}
fürn
= 3, was auch eine Klammererweiterung ist, die jedes Element der{a..c}
n
Zeit effektiv wiederholt\\\,}
- ein wörtliches,}
m
= "a, b" undn
= 2 wird dies auf erweitert{a,} {a,} {b,} {b,}
printf
entfernt die Räume, um zu geben{a,}{a,}{b,}{b,}
, was selbst eine Klammererweiterung istaabb aab aab aa abb ab ab a abb ab ab a bb b b
printf
setzt jedes dieser Elemente in eine eigene Liniesort -u
entfernt die Duplikatetr -d {}
ist der Fall zu handhaben, alsn
1. In diesem Fall = die Variablec
sein wird ,{}
die nicht eine Verstrebung Expansion ist, sondern die Literal - Zeichen eingefügt sind. Dastr
entfernt sie.eval
s und\
Fluchtwege werden sehr sorgfältig platziert, um sicherzustellen, dass alle Erweiterungen in der erforderlichen Reihenfolge erfolgen.quelle
Röda ,
494846 BytesProbieren Sie es online aus!
Ich denke es ist richtig. Es wird kein Trennzeichen zwischen einer Variablen und ihrer Reihenfolge verwendet. Die vorherige Version verwendet
!
, aber ich erkannte, dass es nicht unbedingt erforderlich ist.Erklärt:
quelle
Python, 112 Bytes
Verwendungszweck:
Ausgabe:
Schöneres Format in 115 Bytes :
Ausgabe (gleiche Verwendung):
Noch schöner in 125 Bytes :
Ausgabe:
Die letzten 4 Bytes (
[1:]
) dienen zum Entfernen des leeren Produkts.Diese funktionieren sowohl in Python 2 als auch in Python 3.
quelle
C ++ 14,
146140 Bytes-6 Byte für einfacheres Ausgabeformat.
Unbenanntes Lambda, unter der Annahme von Eingaben
s
wiestd::string
undo
alsstd::ostream
:Verwendung und Erklärung:
Ausgabe:
quelle