Eingänge:
Zwei einzelne Ziffern (nennen wir sie m
und n
) und zwei Zeichen (nennen wir sie a
und b
) in einem Eingabeformat Ihrer Wahl.
Ausgabe:
Stellen Sie sich für die Komplettlösung vor m=2, n=5, a='a', b='b'
.
Ihre Ausgabe ist eine Zeichenfolge, die aus Ihren vier Eingaben erstellt wird. Nennen wir den String result
mit Wert ""
. Erstens, verketten Sie a
auf result
m
Zeiten, also verketten Sie a
auf result
2
Zeiten. result
jetzt gleich aa
. Zweitens, verketten Sie b
auf result
m
Zeiten, also verketten Sie b
auf result
2
Zeiten. result
jetzt gleich aabb
. Wenn das Ergebnis bereits länger als ist n
, schneiden Sie result
es ab, damit es die Länge hat n
. Ansonsten abwechselnd mit m
Längenläufen von a
und b
bis result
Länge fortsetzen n
. Das Finale result
ist aabba
, was Länge hat 5
.
Testfälle:
Input: m = 2, n = 4, a = A, b = B
Output: AABB
Input: m = 3, n = 8, a = A, b = B
Output: AAABBBAA
Input: m = 4, n = 3, a = A, b = B
Output: AAA
Input: m = 2, n = 10, a = A, b = B
Output: AABBAABBAA
Wie alle wissen, wird weniger die Welt regieren, also gewinnen die kleinsten Programme in Bytes! :)
quelle
m=2,n=10,a=A,b=B
Antworten:
Python , 32 Bytes
Probieren Sie es online!
quelle
f=
für -2 Bytes entfernen können .f=
in den Header-Bereich von TIO einfügen, sodass Sie es nicht manuell entfernen müssen. TIO(a*m+b*m)
->(a+b)*m
: das funktioniert nicht.MATL , 5 Bytes
Eingaben sind eine Zeichenfolge mit den beiden Zeichen then
m
, thenn
.Probieren Sie es online!
Erläuterung
quelle
Haskell,
4440 BytesProbieren Sie es online!
quelle
Ruby, 29 Zeichen
Probelauf:
Probieren Sie es online!
quelle
Japt , 10 Bytes
Versuchen Sie zunächst, eine Golfsprache zu verwenden. Probieren Sie es online!
Erläuterung
quelle
VîWpU +XpU
auch, aber beide machen das Gleiche.Vî
ist perfekt für diese Herausforderung.05AB1E , 5 Bytes
Probieren Sie es online!
Erläuterung
quelle
Gelee ,
64 BytesProbieren Sie es online!
Vielen Dank an Jonathan Allan für das bessere Eingabeformat (-2).
quelle
V , 13 Bytes
Probieren Sie es online!
a
undb
werden in der Eingabe in getrennten Zeilen verwendetm
undn
als Argument verwendet, umgekehrt (alson
das erste undm
das zweite Argument ).Erläuterung
quelle
Haskell ,
363529 BytesNoch eine andere Haskell-Lösung (erwartet die angegebenen Zeichen als Liste):
Probieren Sie es online!
Danke @Laikoni für -1 Byte.
quelle
(m#n)a b=
.R ,
4139 BytesEine anonyme Funktion; druckt das Ergebnis auf stdout. Nimmt die Zeichen als Vektor
d=c(a,b)
.gl
Erzeugt Faktoren (ganze Zahlen) von (in diesem Fall)2
Lauflängenstufenm
mit Gesamtlängen
!cat
verkettet und druckt sie als Zeichenfolge.Probieren Sie es online!
quelle
function(d,m,n)rep(d,e=m,l=n)
wäre eine gültige Vorlage.rep
zu einem Vektor von Zeichen anstelle einer einzelnen ZeichenfolgeJavascript, 55 Bytes
Beispielcode-Snippet:
quelle
Javascript, 53 Bytes
quelle
Schale , 3 Bytes
Direkte Portierung meiner Haskell-Antwort, außer dass die Reihenfolge der Argumente unterschiedlich ist:
Probieren Sie es online!
quelle
Haskell ,
4843 BytesProbieren Sie es online!
quelle
QBIC ,
3727 BytesErläuterung
Vorheriger Versuch:
quelle
PHP> = 7.1, 77 Bytes
PHP Sandbox Online
quelle
Java (OpenJDK 8) , 75 Byte
Probieren Sie es online!
quelle
Cubix ,
6358 BytesProbieren Sie es online!
Beobachten Sie den Dolmetscher
Nimmt Eingaben vor, bei
ab*m*n
denen es*
sich um beliebige nichtstellige Zeichen handeln kann.Cube-Version:
i|is
: lese die Zeichen ein und tausche sie aus (soa
steht es oben)I:q
: einlesenm
, verdoppeln und nach unten drücken (Stack ist jetztm,b,a,m
))
: Dekrement?
: Biegen Sie rechts ab, wenn positiv, fahren Sie geradeaus, wenn Null (Duplikatea
)s:rur(/w
: tauschen, dupen,m-i
an die Spitze des Stapels gehen, dekrementierenm-i
B
: Reverse Stack (der jetztm
Kopien vona
: enthälta... b m
)n
: negierenm
(damit wir?
nach links abbiegen können))
: Zuwachs?
: bei Null geradeaus, bei negativ links abbiegenb
)s:r\/rw)\
Im Grunde das gleiche wie der positive Zweig, aber mit Inkrement und Linkskurven.>v;
: Pop die0
vom Stapel (sieht aus wiea...b...
)/B
: kehre den Stapel umI
: lesenn
s
: Druckschleife tauschen:oq
: print und push to bottom of stack sieht jetzt so aus:ab...a...n
(
dekrementierenn
?
: Biegen Sie rechts ab, wenn positiv, fahren Sie geradeaus, wenn Null/su
:: Stapeloberteil tauschen und Schleife fortsetzen/
unten reflektiert und der Code wird ausgewertetIru@
.@
Beendet das Programm.quelle
Kohle , 10 Bytes
Probieren Sie es online! Der Link ist eine ausführliche Version des Codes und enthält das vierte Beispiel. (Ärgerlicherweise entfernt der Deverbosifer den Separator nicht, wenn ich vor dem letzten einen hinzufüge
InputNumber()
.)quelle
Mathematica, 61 Bytes
Eingang
quelle
Mathematica, 44 Bytes
Erläuterung
ist das Drei-Byte-ZeichenU+F3C7
für den privaten Gebrauch , das den Postfix-\[Transpose]
Operator in Mathematica darstellt. Keine TIO-Verknüpfung, da Mathics nicht unterstützt
,\[Transpose]
die falsche Operatorrangfolge hat, das zweite ArgumentTable
eine Liste sein muss und vor allemStringPadRight
nicht implementiert ist.quelle
APL (Dyalog) , 5 Bytes
Probieren Sie es online!
Nimmt die beiden Zeichen in einer Zeichenfolge als erste Eingabe, gefolgt von
m
und dannn
.Erläuterung
Lassen Sie das Beispiel eingegeben werden
'ab'
,2
,10
.quelle
Pyth , 13 Bytes
Probieren Sie es online!
Erläuterung
quelle
k, 10 Bytes
Probieren Sie es online!
quelle
Chip , 588 Bytes
Probieren Sie es online!
Übernimmt die Eingabe als 4-stellige Zeichenfolge. Die ersten beiden sind die Zeichen a und b , gefolgt vom Bytewert m und dem Bytewert n . Zum Beispiel enthält der TIO einen Eingang
ab<tab>2
, dies entspricht 'a', 'b', 9, 50. (Da die Codes für<tab>
und2
9 und 50 sind.Wie?
Diese Antwort ist ein bisschen wie ein Gigant, aber hier sind die Highlights:
Der obere linke Block mit dem Kleinbuchstaben
a
-h
ist der Speichermechanismus für die Zeichen a und b , eine Zeile pro Bit. An der Unterseite mit demv~v
undmz
der Schaltmechanismus, um zwischen den beiden zu wechseln.In der Mitte steht eine Kolumne mit ein paar
~#M
. Dies liest in m und speichert sein Negativ. Das große Dreieck rechts besteht nur aus Drähten, um diesen Wert in den oberen Akkumulator zu bringen.Der obere rechte Block ist der Akkumulator für m . Es erhöht jeden Zyklus (beginnend mit -m ), bis es Null erreicht. In diesem Fall wird das Ausgabezeichen ausgetauscht und die Zählung von -m aus fortgesetzt .
Inzwischen gibt es den unteren Block, der den n- Akkumulator darstellt. Da n nur einmal gelesen wird, benötigen wir keine Speicherbank (
M
undm
), um diesen Wert zu speichern. Wir negieren es einfach und fangen an zu zählen. Wenn dieser Wert Null erreicht, wird der gesamte Shebang einfach beendet.Alle anderen guff ist Verzögerungen (
Z
undz
), Verdrahtung (-
,|
, ...) und andere miscellany.quelle