Bei zwei Ganzzahlen größer als eins, A und B, werden vier mathematische Ausdrücke in dieser Reihenfolge ausgegeben:
Der einfache Ausdruck A ^ B (A hoch B). zB wenn A = 2 und B = 3
2^3
,.Die Expansion von A ^ B in Bezug auf wiederholte Multiplikationen von A. z
2*2*2
.Die Expansion von A ^ B in Bezug auf wiederholte Zugaben von A. z
2+2+2+2
.Die Erweiterung von A ^ B in Bezug auf wiederholte Hinzufügungen von 1. z
1+1+1+1+1+1+1+1
.
Die vier Ausdrücke können auf jede vernünftige Weise ausgegeben werden, solange sie geordnet und klar voneinander getrennt sind. Sie können sie beispielsweise in eine Liste aufnehmen oder in separaten Zeilen drucken
2^3
2*2*2
2+2+2+2
1+1+1+1+1+1+1+1
oder vielleicht in einer durch Gleichheitszeichen getrennten Zeile:
2^3=2*2*2=2+2+2+2=1+1+1+1+1+1+1+1
Leerzeichen können so neben mathematischen Operatoren eingefügt werden
2^3 = 2 * 2 * 2 = 2 + 2 + 2 + 2 = 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1
wäre gleichermaßen gültig, wenn A = 2 und B = 3.
Sie können Symbole alternativ zu ^
, *
und verwenden +
, aber nur, wenn die neuen Symbole für Ihre Sprache idiomatischer sind (z. B. **
statt ^
in Python).
Sie können davon ausgehen, dass A und B ausreichend klein sind, damit A ^ B den Standard-Integer-Typ Ihrer Sprache nicht überläuft (vorausgesetzt, dieser Typ hat ein angemessenes Maximum, mindestens 255).
Der kürzeste Code in Bytes gewinnt.
Testfälle
Ein Ausgang pro Zeile. Die Eingabe kann abgeleitet werden, da der erste Ausdruck immer A ^ B ist.
2^2 = 2*2 = 2+2 = 1+1+1+1
2^3 = 2*2*2 = 2+2+2+2 = 1+1+1+1+1+1+1+1
2^4 = 2*2*2*2 = 2+2+2+2+2+2+2+2 = 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1
2^5 = 2*2*2*2*2 = 2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+2 = 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1
3^2 = 3*3 = 3+3+3 = 1+1+1+1+1+1+1+1+1
3^3 = 3*3*3 = 3+3+3+3+3+3+3+3+3 = 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1
3^4 = 3*3*3*3 = 3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3 = 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1
3^5 = 3*3*3*3*3 = 3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3 = 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1
4^2 = 4*4 = 4+4+4+4 = 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1
4^3 = 4*4*4 = 4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4 = 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1
10^2 = 10*10 = 10+10+10+10+10+10+10+10+10+10 = 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1
13^2 = 13*13 = 13+13+13+13+13+13+13+13+13+13+13+13+13 = 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1
quelle
=
links von irgendjemandem3
.2^3
ein gültiges Eingabeformat? Oder muss es ein Leerzeichen, ein Komma oder ein Zeilenumbruch sein?Antworten:
Python 3.6 ,
8874 Bytes-2 Bytes dank Dada (Verwendung
~
)-5 Bytes dank Erwan (Verwendung von F-Strings aus Python 3.6)
Online für jemanden?
Wie?
Dies ist eine unbenannte Funktion, die die beiden Ganzzahleingaben
a
undb
jeweils größer als0
(obwohl die Spezifikation nur für diejenigen größer als gilt1
) verwendet.In Python 3.6 ist eine neue Funktion verfügbar, nämlich formatierte String-Literale oder "f-Strings". Diese ermöglichen einen zur Laufzeit bewerteten Stringaufbau. Ein führendes
f
(oderF
) erzeugt solches Konstrukt, beispielsweisef"blah"
oderf'blah'
. Innerhalb einer f-Zeichenfolge ist alles zwischen zwei geschweiften Klammern{...}
ein auszuwertender Ausdruck.Als solche
f"{a}^{b}={a}{f'*{a}'*~-b}={a}{f'+{a}'*~-a**~-b}=1"
auswertet jedera
,b
,a
,f'*{a}'*~-b
,a
, undf'+{a}'*~-a**~-b}
als Ausdruck, halten die^
,=
,=
und=1
als Zeichenfolgen, von denen alle miteinander verkettet wird.Die
a
undb
Ausdrücke auswerten zu den Darstellungena
undb
jeweils.Die
f'*{a}'
und sindf'+{a}'
wiederum auch F-Strings in diesen Ausdrücken, diea
mit einem führenden'*'
bzw. einem führenden'+'
Ergebnis bewertet werdenUm die erforderliche Anzahl von
a
s und Operationen für die Teile*
und zu erstellen, ist zu+
beachten, dassb
a
s multipliziert unda**(b-1)
a
s addiert werden. In jedem Fall ist dann ein Vorzeichen weniger als die Anzahl vona
s erforderlich . So können wir die f-Zeichenfolgen wiederholenf'*{a}
und so oftf'+{a}'
(mit*
), wie es Operatoren gibt, und jeder eine einzelne voranstellena
.(b-1)
ist~-b
und(a**(b-1))-1
ist~-a**~-b
.Dasselbe gilt für das
1
s using(a**b)-1
being~-**b
, aber wir brauchen den Overhead von f-Strings nicht, da1
es konstant ist, sodass ein wiederholter Standard-String mit verkettet wird+
.Frühere Python-Versionen, 81:
Probieren Sie es online!
quelle
(b-1)
durch~-b
?lambda a,b:f"{a}^{b}={(f'*{a}'*b)[1:]}={(f'+{a}'*a**~-b)[1:]}=1"+'+1'*~-a**b
Cubix,
238 234 217 151 110100 Bytes14 Bytes gespart dank ETHProductions
Erweitert:
Probieren Sie es online!
Probieren Sie es hier aus
Erläuterung
Der Code besteht aus 8 Schritten mit zwei Schleifen. Ich werde den Code Teil für Teil durchgehen.
Schritt 1 (A ^ B)
Dies ist der Würfel, bei dem die Teile, die für den ersten Schritt irrelevant sind, entfernt wurden. Das Fragezeichen zeigt die No-Ops, die die IP besuchen wird, um ihren Weg klarer zu machen.
Der Stack sieht nun so aus:
A, B, A, B
Schritt 2 (Druckschleife vorbereiten)
Die Druckschleife dauert 3 Argumente (die Top - 3 - Elemente auf dem Stapel)
P
,Q
undR
.P
ist die Anzahl der Wiederholungen,Q
ist das Trennzeichen (Zeichencode) undR
ist die zu wiederholende Zahl. Glücklicherweise erfüllt die Schleife auch die Anforderung, dass die resultierende Zeichenfolge auf enden sollR
, nichtQ
.Wir wollen
A*
genauB
mal wiederholen , also ist das Trennzeichen*
. Beachten Sie, dass der Stapel als beginntA, B, A, B
. Wieder entfernte ich alle irrelevanten Anweisungen. Die IP beginnt imS
Norden.Der Stapel ist jetzt
A, B, B, *, A
.Schritt 3/6/8 (die Druckschleife)
Konzept
Die IP tritt in die Schleife ein
S
und zeigt nach Norden. Sie verlässt die Schleife unterE
und zeigt wieder nach Norden. Für diese Erklärung wird der Stack auf gesetzt[..., A, B, C]
. Die folgenden Anweisungen werden ausgeführt. Beachten Sie, dass die IP die Schleife nicht vor dem Fragezeichen verlassen kann, sodass die ersten vier Anweisungen immer ausgeführt werden.Implementierung
Hier ist wieder der Würfel, wobei die irrelevanten Teile entfernt sind. Die IP beginnt bei
S
und zeigt nach Osten.Wie Sie sehen können, trifft die IP auf vier Anweisungen, bevor sie in die Schleife eintritt. Da der Zeichencode wieder entfernt wird, erreichen wir die Schleife mit genau demselben Stapel, mit dem wir diesen Teil betreten haben.
Innerhalb der Schleife gilt die obige Erklärung.
Schritt 4 (Unterscheidung der IPs)
Da wir die obige Schleife mehrmals verwenden und sie alle dazu führen, dass die IP an derselben Stelle endet, müssen wir zwischen mehreren Läufen unterscheiden. Erstens können wir zwischen dem Trennzeichen unterscheiden (der erste Lauf hat ein
*
, während der zweite und der dritte Lauf ein+
Trennzeichen haben). Wir können zwischen den Läufen 2 und 3 unterscheiden, indem wir den Wert der Zahl überprüfen, die wiederholt wird. Wenn dies der Fall ist, sollte das Programm beendet werden.Erster Vergleich
So sieht es auf dem Würfel aus. Die IP beginnt bei S und zeigt nach Norden. Der Stapel enthält
[..., * or +, A or 1, 0]
. Die Nummer 1 gibt an, wo die IP enden wird, wenn dies die erste Schleife ist (nach Norden zeigend), und die Nummer 2 gibt an, wo die IP enden wird, wenn dies die zweite (oder dritte) Schleife ist (nach Osten zeigend).Wenn die IP jetzt auf ist
1
, ist der Stack[A, *, +, -1]
. Ansonsten ist der Stack[A or 1, +, +, 0]
. Wie Sie sehen, befindet sich im Stapel des zweiten Falls noch ein Unbekannter, sodass wir einen weiteren Vergleich durchführen müssen.Zweiter Vergleich
Da die IP hat durch Schritt 5, der Stapel sieht wie folgt fort:
[A^(B-1) or nothing, A or 1, +, +, 0]
. Wenn das erste Element istnothing
, ist das zweite Element1
und das Gegenteil gilt auch. Der Würfel sieht so aus, wobei die IP bei S beginnt und nach Osten zeigt. Wenn dies die zweite Schleife ist, endet die IP beiE
und zeigt nach Westen. Ansonsten schlägt das Programm zu@
und bricht ab.Die ausgeführten Anweisungen, die nichts mit dem Steuerungsfluss zu tun haben, sind unten aufgeführt.
Der Stack ist jetzt
[A^B, +, A^(B-1), A-1]
, sofern das Programm nicht beendet wurde.Schritt 5 (Vorbereitung für "A +" (Wiederholung von A ^ (B-1))
Leider hat Cubix keinen Netzbetreiber, also brauchen wir eine weitere Schleife. Wir müssen jedoch zuerst den Stapel bereinigen, der jetzt enthält
[B, A, *, +, -1]
.Aufräumen
Hier ist wieder der Würfel. Wie üblich beginnt die IP bei S (nach Norden zeigend) und endet bei E (nach Westen zeigend).
Berechnung von A ^ (B-1)
Eine weitere Schleife, die ungefähr so funktioniert wie die Druckschleife, aber etwas kompakter ist. Die IP beginnt mit
S
nach Westen zeigendem Stack[B, A, *]
. Die IP-AdresseE
zeigt nach Norden.Der Schleifenkörper ist der folgende.
Der resultierende Stapel ist
[A, A^(B-1), 0]
.Stapel (wieder) aufräumen
Jetzt müssen wir wieder zur Druckschleife gelangen, wobei die Oberseite des Stapels enthält
[..., A^(B-1), +, A]
. Dazu führen wir Folgendes aus. Hier ist wieder der Würfel,Schritt 7 (Vorbereitung für die letzte Schleife)
Der Stack ist jetzt
[A^B, +, A^(B-1), A-1]
, die IP beginnt beiS
, geht nach Westen und endet beiE
, geht nach rechts.Die ausgeführten Anweisungen:
Der Stapel sieht nun so aus
[A^B, +, 1]
und die IP wird in die Druckerschleife eingegeben, also sind wir fertig.quelle
MATL , 46 Bytes
Probieren Sie es online!
Die Grenzen des "vernünftigen Weges" hier ausdehnen, aber die Ausdrücke sind getrennt.
Erläuterung
Erster Ausdruck:
Zweiter Ausdruck:
Dritter Ausdruck:
Vierter Ausdruck:
quelle
JavaScript (ES7), 78 Byte
Übernimmt Eingaben in der Currying-Syntax
(a)(b)
. Gibt einen String aus.Testfälle
Code-Snippet anzeigen
quelle
Ruby, 52 Bytes
quelle
05AB1E , 30 Bytes
Erläuterung:
Probieren Sie es online!
quelle
¹²'^ý ¹'*¹«²<׫¹²m¹÷¹s×S'+ý 1¹²m×S'+ý»
, warum hast du mich um 5 Bytes geschlagen :(?¹²«¹²×¹¹²m©¹÷×1®×)vySN"^*++"èý,
es ist näher ;). Du gewinnst jetzt erst mit 1;).C (GCC) ,
156149 Bytes-2 Bytes, wenn wir 0 Potenzen ignorieren können;
y=!!i
kann werdeny=1
Probieren Sie es online!
quelle
Java 7, 170 Bytes
Ungolfed:
Testcode:
Probieren Sie es hier aus.
Ausgabe:
quelle
Pip ,
383534 Bytes33 Byte Code, +1 für
-n
Flag.Nimmt A und B als Befehlszeilenargumente; druckt einen Ausdruck pro Zeile. Probieren Sie es online!
Erläuterung
Ya**b
ist der Setup-Code: Ziehea**b
in diey
Variable. Danach haben wir eine Liste (in[]
), die unsere vier Ausdrücke enthält:gJ'^
: nimm eine vollständige AR-g
Liste (hier eine Liste mita
undb
) undJ
oin es auf^
aRLbJ'*
: benutzeR
epeatL
ist um eine Liste mitb
Kopien von zu erstellena
, dannJ
oin es auf*
aRLy/aJ'+
: Verwenden Sie diese OptionRL
, um eine Liste mity/a
(dha**(b-1)
) Kopien von zu erstellena
, undJ
schließen Sie sie dann an+
1XyJ'+
:1
, Zeichenfolge multipliziert mity
,J
eingezeichnet auf+
Die Liste wird dank des
-n
Flags mit Zeilenvorschub als Trennzeichen gedruckt .quelle
Javascript
115113104 BytesVielen Dank an @Neil und @TuukkaX für das Golfen mit jeweils einem Byte und an @ETHproductions und an Luke für das Golfen mit 9 Byte
Probieren Sie es online
quelle
a=>b=>
.'=1'+'+1'.repeat
?.join
:a=>b=>[a+'^'+b,(a+'*').repeat(b-1)+a,(a+'+').repeat(Math.pow(a,b-1)-1)+a,1+'+1'.repeat(Math.pow(a,b)-1)].join`=`
.join()
...Gelee , 29 Bytes
Probieren Sie es online!
Wie?
quelle
tinylisp repl,
178186 bytesDurch die Verwendung von repl werden 8 Bytes in impliziten schließenden Klammern am Zeilenende gespeichert. Definiert eine Funktion,
X
die zwei Zahlen annimmt und eine Liste von Ausdrücken zurückgibt. Jeder Ausdruck steht in Klammern mit Leerzeichen um die Operatoren (tatsächlich handelt es sich um eine Liste von Zahlen und Operatorsymbolen):Hoffentlich ist dieses Ausgabeformat akzeptabel. Probieren Sie es online! (mit mehreren Testfällen).
Erläuterung
Wir benötigen zwei Funktionen aus der Standardbibliothek:
list
und*
.Definieren Sie eine Funktion
W
(kurz für "Weben"), die einen Akkumulator_
, eine ZahlN
, ein SymbolS
und eine Zählung enthält#
. Wir werden diese Funktion verwenden die meisten unserer Ausdrücke generieren: zum Beispiel(W () 2 (q +) 3)
führt zu(2 + 2 + 2)
.Wenn der Zähler 1 ist
(e # 1)
, tragen Sie die Nummer auf die Vorderseite des Akkus(c N _)
und geben Sie diese zurück. Ansonsten rekursiv:(c S(c N _))
: das Symbol und die Nummer vor dem vorherigen Akku;N
undS
sind gleich;(s # 1)
: Zählung - 1.Das Akkumulator-Idiom wird benötigt, um eine ordnungsgemäße Schwanzrekursion zu erreichen und einen Rekursionstiefenfehler zu vermeiden. (Diese Änderung ist für die Erhöhung der Bytezahl um 8 verantwortlich. In
13^2
der vorherigen Version funktionierte die Groß- / Kleinschreibung nicht.)Leider hat die Bibliothek zu diesem Zeitpunkt keine Potenzierungsfunktion, daher müssen wir eine definieren.
^
nimmtx
undy
. Wenny
wahr ist (ungleich Null), verwenden wiry-1
((s y 1)
) und multiplizieren das Ergebnis mitx
. Ansonsteny
ist Null und wir kehren zurück1
.(Hinweis: Diese Funktion verwendet keine ordnungsgemäße Schwanzrekursion. Ich gehe davon aus, dass die Exponenten so klein sind, dass es keine Rolle spielt. Einige Experimente mit TIO ergaben einen maximalen Exponenten von 325, der meiner Meinung nach für diese Frage ausreichen sollte. Wenn das OP nicht einverstanden ist, werde ich es ändern.)
Schließlich wird in der Funktion , die wir interessiert sind,
X
nimmt,A
undB
und gibt eine Liste der vier Elemente:(list A(q ^)B)
: eine Liste mitA
, einem Literal^
undB
;(W()A(q *)B)
: Rufen SieW
an, um eine Liste derB
Kopien vonA
, mit wörtlichen verwoben zu bekommen*
;(W()A(q +)(^ A(s B 1)))
: Rufen SieW
an, um eine Liste derA^(B-1)
Kopien vonA
, mit wörtlichen verwoben zu bekommen+
;(W()1(q +)(^ A B))
: rufen SieW
an, um eine Liste vonA^B
Kopien zu erhalten1
, die mit dem Wortlaut verwoben sind+
.quelle
Brainfuck , 372 Bytes
Probieren Sie es online!
Anmerkungen
A**B
sie nicht überschreiten255
. Dies liegt daran, dass Brainfuck nur Werte von einem Byte speichern kann.10
wird:
,11
wird;
usw. Dies liegt daran, dass Brainfuck nur Eingaben von einem Byte annehmen kann.Erläuterung
Hier ist mein etwas kommentierter Code. Ich werde später darauf eingehen.
quelle
Pyth,
3231 BytesNimmt Eingaben als
[2,10]
, Ausgaben als["2^10", "2*2*2*2*2*2*2*2*2*2", "2+2+...
Erläuterung:
Probieren Sie es hier aus.
quelle
Perl , 81 Bytes
78 Byte Code +
-n
Flag (gezählt als 3 Byte, da der Code enthält$'
).Probieren Sie es online!
quelle
R, 147 Bytes
Anonyme Funktion, die die erforderlichen Informationen Zeile für Zeile ausgibt. Diese Lösung nutzt die
switch
Funktion in großem Umfang .Die
switch
Funktion verwendet einen Ausdruck (hiers
), der zu einer Zahl oder einer Zeichenfolge (siehe?switch
) ausgewertet wird , gefolgt von den entsprechenden Alernativens
. Fehlt eine Alternative (z. B.switch(s, a=, b= "PPCG")
wird die nächste nicht fehlende Alternative ausgewertet (im Beispiels="a"
Ausgänge"PPCG"
).Die
rep
Funktionen wiederholen ihr erstes Argument so oft, wie es im zweiten Argument angegeben ist.cat
, um die Objekte fertigzustellen, zu verketten und auszudrucken, mit einem Trennzeichen, das mit demsep =
Argument ausgewählt werden kann. Die zweitecat
Funktion ist hier für den Zeilenumbruch.Ungolfed:
quelle
CJam , 42 Bytes
Probieren Sie es online!
quelle
k, 44 Bytes
Testfälle.
quelle
Kardinal 202 Bytes
Funktioniert nur für Zahlen, bei denen der berechnete Wert <256 ist, da die Werte, die Zeiger in Cardinal enthalten können, begrenzt sind
Probieren Sie es online
Erläuterung:
Schritt 1
Erhält zwei Zahlen a und b als Eingabe und gibt sie als "a ^ b =" aus.
Übergibt einen Zeiger mit aktivem Wert a und inaktivem Wert b
Schritt 2
Erhält einen Zeiger mit aktivem Wert a und inaktivem Wert b, der "a" + ("* a") (b-1) mal
druckt. Übergibt einen Zeiger mit aktivem Wert a ^ (b-1) an den nächsten Teil
Schritt 3
Erhält einen Zeiger mit dem Wert a ^ (b-1) und gibt "= a" + ("+ a") aus, und zwar wiederholt (a ^ (b-1) -1) mal + "="
Übergibt einen Zeiger mit dem Wert a ^ b zum nächsten Teil
Schritt 4
Erhält einen Zeiger mit dem Wert a ^ b und gibt "1" + ("+ 1") aus, der a ^ b-1-mal wiederholt wird
quelle
Retina,
8988 BytesDie Eingabe erfolgt durch Kommas getrennte unäre Zahlen.
Probieren Sie es online!
quelle