Wenn Sie eine Zeichenfolge s
und eine positive Ganzzahl haben N
, duplizieren Sie jedes Zeichen schrittweise mehr und mehr, bis es N
doppelt vorhanden ist, und bleiben Sie dann bei N
Duplikaten, bis das N
Zeichen vom Ende entfernt ist, und treten Sie dann wieder zurück.
Zum Beispiel gegeben abalone
und 3
:
a we start with 1 copy
bb then 2 copies
aaa then 3 copies, which is our second parameter
lll so we continue using 3 copies
ooo until we reach the end
nn where we use 2 copies
e and then finally 1 copy
und das Ergebnis wäre abbaaalllooonne
.
Es ist garantiert, dass die Zeichenfolge länger ist als 2N
und nur Zeichen von a
bis enthält z
.
Weitere Testfälle:
N string output
2 aaaaa aaaaaaaa
3 abcdabcdabcd abbcccdddaaabbbcccdddaaabbbccd
Das ist Code-Golf . Kürzeste Antwort in Bytes gewinnt. Es gelten Standardlücken .
Python 2 , 57 Bytes
Probieren Sie es online!
Auch 57:
Python 2 , 57 Bytes
Probieren Sie es online!
quelle
len(s[:i][:n])
? Ich bin überzeugt, dass es einen kürzeren Weg gibt, um diese Nummer zu bekommen, aber ich bin mir nicht sicher, wie.min(len(s),i,n)
. Gut gemacht!JavaScript (ES6),
6765 Bytes-2 Bytes dank der kürzeren Methode von Chas Brown
min()
.Nimmt die Eingabe in currying Syntax:
f("abalone")(3)
.Testschnipsel
quelle
Gelee ,
87 BytesProbieren Sie es online!
Wie es funktioniert
-1 Byte dank @LeakyNun
quelle
J«¥@«U$x@
für 9 Bytes.x@⁸
ist gleichwertig mit⁸x
(ich⁸
hier verwendet)Haskell ,
61-60BytesVielen Dank an @Laikoni für die Hilfe bei der Rasur von 1 Byte
Probieren Sie es online!
Ungolfed:
quelle
do
Blocks! Speichern Sie ein Byte, indem Sie die Klammer einfügenlength(s)
.Haskell (Lambdabot), 74 Bytes
Probieren Sie es online!
quelle
>>=id
J, 24 Bytes
Das Bit in parens -
(<.&n<./(|.,:[)>:i.#s)
- erstellt das1 2 ... n n n ... 2 1
Array wie folgt:Sobald wir das haben, macht der
#
Operator von J automatisch genau das, wonach er gefragt hat, und dupliziert jedes Element so oft, wie es angegeben wurde.Neugierig zu sehen, wie sich ein J-Experte dazu verbessert ...
quelle
[#~#@[$([:>:<:,&:i.-)@]
(vielleicht hat sich dort ein streunender Raum verfangen). Ich bin ratlos, warum der Haken nicht nimmt,x
aber nicht zu sehr in der Lage, sich darum zu kümmern.PHP> = 7.1, 75 Bytes
PHP Sandbox Online
PHP> = 7.1, 78 Bytes
PHP Sandbox Online
PHP> = 7.1, 80 Bytes
PHP Sandbox Online
quelle
Japt ,
1110 BytesProbier es aus
Erläuterung
Implizite Eingabe von Zeichenfolge
U
und GanzzahlV
.Karte über
U
und ersetze jedes Zeichen.Holen Sie sich das Minimum von
V
, ...T
(anfangs0
) um 1 erhöht, ...Und der Index des aktuellen Zeichens (
E
) subtrahiert von (n
) die Länge (Ê
) vonU
.Wiederholen Sie das aktuelle Zeichen so oft.
Geben Sie implizit die letzte Zeichenfolge aus.
quelle
R 87 Bytes
Probieren Sie es online!
quelle
Python 2 68 Bytes
quelle
f=
in der Antwort nicht; Die Funktion kann anonym sein. In diesem Sinne können Sie mit 3 Bytes entfernenlambda s,n:''.join(c*min(i+1,len(s)-i,n)for i,c in enumerate(s))
.Schale ,
109 BytesProbieren Sie es online!
Die erste Zeile ist die Hauptfunktion, sie wiederholt jeden Buchstaben n- mal und ruft dann die zweite Zeile zweimal auf.
Die zweite Zeile enthält höchstens N Buchstaben aus jeder Gruppe wiederholter Buchstaben, wobei N der auf 1 basierende Index der Gruppe ist, und kehrt dann die Liste um.
quelle
Haskell , 68 Bytes
Probieren Sie es online!
quelle
APL (Dyalog) , 15 Bytes
{
…}
Funktion, bei der das linke Argument ( Großbuchstabe ) ⍺ und das rechte Argument (Zeichenfolge) ⍵ ist :≢⍵
Zählen Sie die Anzahl der Zeichen in der Zeichenfolge⍳
erzeugen , dass viele ɩ ntegersi←
Laden in i⌽
umkehreni⌊
paarweises Minimum mit i⍺⌊
Paarweise mindestens mit der Kappe⍵/⍨
Verwenden Sie diese Zahlen, um die Buchstaben der Zeichenfolge zu replizierenProbieren Sie es online!
quelle
F # , 96 Bytes
Probieren Sie es online!
Ein Port von Justin Mariners Javascript Antwort
quelle
Java (OpenJDK 8) ,
101 bis97 ByteProbieren Sie es online!
So viel mit Indizes spielen ...
quelle
Abalone ist eine Art von Fisch (auch ein Schalentier), daher ...
> <> 79 Bytes
Probieren Sie es online aus oder schauen Sie es sich auf dem Fischspielplatz an !
Liest die Zeichenfolge von STDIN und geht davon aus, dass sich die Nummer bereits auf dem Stapel befindet.
Erläuterung: Die zweite, vierte und sechste Zeile sind die Hauptschleifen. Die Details sind hässliche Stapelmanipulationen, aber in großen Strichen füllt die zweite Zeile den Stapel abwechselnd mit einem Zeichen aus Eingabe und min ( i , n ), wobei n die maximale Länge und i ist der Index des Zeichens in ist die Eingabe: für "Abalone", 3, sieht der Stapel wie folgt aus
Als nächstes durchläuft Zeile 4 den Stapel auf die gleiche Weise in umgekehrter Reihenfolge, um das rechte Ende richtig zu verschließen:
Dann nimmt die sechste Zeile jedes Zeichen-Zahlen-Paar und druckt das Zeichen so oft wie die Zahl.
quelle