Wir hatten eine Weile keine String- Frage (um genau zu sein 5 Tage), also lass uns eine machen.
Nehmen Sie für eine Zeichenfolge s
und eine positive Ganzzahl n
jedes n
Element von s
, wiederholen Sie es n
und setzen Sie es wieder ein s
.
Zum Beispiel, wenn n = 3
und s = "Hello, World!"
, ist jedes dritte Zeichen Hl r!
. Dann wiederholst du jedes Zeichen n
, um es zu produzieren HHHlll rrr!!!
. Anschließend ersetzen Sie die Originalbuchstaben durch die wiederholten Versionen, um das Endprodukt von zu erhaltenHHHellllo, Worrrld!!!
Sie müssen diese Aufgabe in kürzester Zeit in Ihrer Sprache erledigen!
Regeln
- Dies ist ein Code-Golf, so dass der kürzeste Code in Bytes gewinnt
n
ist garantiert kleiner als die Länge vons
und größer als 0- Das erste Zeichen von
s
ist, wo dien
th Zeichen genommen werden, und wird immern
Male wiederholt s
besteht nur aus druckbarem ASCII (Code zeigt0x20 (space)
auf0x7E (~)
)
Testfälle
s, n => output
"Hello, World!", 3 => "HHHellllo, Worrrld!!!"
"Code golf", 1 => "Code golf"
"abcdefghijklm", 10 => "aaaaaaaaaabcdefghijkkkkkkkkkklm"
"tesTing", 6 => "ttttttesTingggggg"
"very very very long string for you to really make sure that your program works", 4 => "vvvvery veryyyy verrrry loooong sssstrinnnng foooor yoooou toooo reaaaally makeeee surrrre thhhhat yyyyour proggggram workkkks"
s
als Zeichenarray annehmen ?s
" <- Ist dies eine strenge Anforderung (Überschreiben der ursprünglichen Zeichenfolge) oder ist es in Ordnung, nur das Endergebnis auszugeben?Antworten:
Gelee , 3 Bytes
Die Eingabe wird als s, n genommen .
Probieren Sie es online!
Wie es funktioniert
quelle
E1 B8 A2 73 C3 97
Gelee ,
65 Bytes-1 Byte dank undichter Nun (verwenden Sie die Python-String-Multiplikation.)
Ein vollständiges Programm, das zwei Befehlszeilenargumente akzeptiert, die Zeichenfolge und die Zahl, und das Ergebnis druckt.
Probieren Sie es online!
Wie?
quelle
x
vergessen×
; Vielen Dank.C3 97 4A 6D C2 A5 C2 A6
JavaScript (ES6), 46 Byte
Übernimmt Eingaben in der Currying-Syntax
(s)(n)
.Testfälle
Code-Snippet anzeigen
quelle
Proton , 44 Bytes
Probieren Sie es online!
quelle
C # (.NET Core) ,
8482 BytesProbieren Sie es online!
quelle
i++
und Wechseln[i],i%m<1?m:1
zun[i],i++%m<1?m:1
.n=>m=>...
05AB1E ,
87 Bytes-1 Byte dank @Emigna
Probieren Sie es online!
Erläuterung
quelle
ôʒć²×ì?
}
vy
ist einer für jeden,ε
ist ein anderer. Seltsamerweiseε
funktioniert nicht.PowerShell , 51 Byte
Probieren Sie es online!
char
Übernimmt$a
die Eingabe als -array und die Nummer$n
. Durchlaufen$a
und jede Iteration gibt entweder den aktuellen Buchstaben$_
oder den aktuellen Buchstaben multipliziert mit aus$n
, basierend auf einem Index in einem Pseudoternär. Der Index wählt zwischen Inkrementierung$i
und Modulo$n
. Diese Buchstaben werden dann-join
wieder zusammengefügt und die Zeichenfolge verbleibt in der Pipeline. Ausgabe ist implizit.quelle
Python 2 ,
5453 BytesBearbeiten: 1 Byte dank @Rod gespeichert
Probieren Sie es online!
quelle
x[i]
und[1,n][i%n<1]
um Platz zu sparenAlice , 25 Bytes
Probieren Sie es online!
Erläuterung
quelle
R ,
827675 BytesProbieren Sie es online!
Eine Funktion; Nimmt einen String
s
und eine Ganzzahln
und gibt die wiederholte Version in stdout aus.Erläuterung:
R , 55 Bytes
Probieren Sie es online!
Gleicher Algorithmus wie oben, jedoch
S
als Liste der einzelnen Zeichen.quelle
Python 2 , 57 Bytes
Probieren Sie es online!
quelle
enumerate
kürzer als die Verwendung ?range(len())
am Ende länger seinPython 2 , 53 Bytes
Probieren Sie es online!
quelle
Japt , 8 Bytes
Online testen!
Erläuterung
Ich muss die Idee
ù
auf @Shaggys Antwort hier zurückführen . Ich weiß nicht, dass ich jemals selbst daran gedacht hätte ...quelle
ë
, für Kacke & Kichern, aber kläglich gescheitert!J, 17 Bytes
(...) # ]
Alles in Parens erzeugt den String für das in J eingebaute "copy" -Verb. Wenn das linke Argument beispielsweise 3 ist, wird die Zeichenfolge3 1 1
so oft wiederholt, bis die Anzahl der Zeichen im rechten Argument, das die Zeichenfolge]
enthält, erreicht ist. Das heißt, es#
löst das Problem direkt, vorausgesetzt, wir können ihm das richtige linke Argument geben:4
sollte4 1 1 1
wiederholt werden und so weiter.#@]$[,1#~<:@[
man, sieht man, dass es Js Formverb verwendet$
in der Mitte verwendet - das ist das Hauptverb dieser Phrase ...$
ist#@]
die Länge#
des rechten Arg]
.$
ist[,1#~<:@[
ein 5-Verb-Zug. Der erste ausgeführte Zug ist ...1#~<:@[
Dies bedeutet, dass 1 kopiert#~
(passive Form der Kopie) 1 weniger als<:
das linke Argument ist[
. Dieses Ergebnis wird an die letzte Gabel übergeben:[, ...
Das heißt, nimm das linke Argument und hänge das Ergebnis an, das wir gerade berechnet haben. Dies ist eine Folge von1
s.Probieren Sie es online!
quelle
]#~[^0=(|i.@#)
für 14 BytesC # (.NET Core) , 61 + 18 = 79 Byte
Probieren Sie es online!
quelle
Perl 5,
37, 29 + 1 (-p) Bytes-8 Bytes dank Toms Kommentar.
Probieren Sie es online
quelle
$n=<>;
anstelle desBEGIN
Blockes und hatn
in der nächsten Zeile von Eingang und ersetzen$-[0]
mit ,"@-"
da nur die erste Zahl im Vergleich ausgewertet wird. Auch wenn Sie eine Eingabe vonn
via machen-i
, können Sie einfach verwenden,$^I
anstatt zu deklarieren und zu verwenden$n
, aber da dies nicht dem Standard entspricht, kann es sein, dass es nicht fliegt ... :)6502 Maschinencode- Routine, 50 Bytes
Dies ist eine positionsunabhängige Subroutine, die einen Zeiger auf die Eingabezeichenfolge (0-terminated aka C-string) in
$fb
/$fc
, einen Zeiger auf den Ausgabepuffer in$fd
/$fe
und den count (n
) in erwartet$ff
. Die einfache Indizierung ist aufgrund der 8-Bit-Architektur auf eine maximale Ausgabelänge von 255 Zeichen (+ 0 Byte) beschränkt.Erklärung (kommentierte Demontage):
Beispiel für ein C64-Maschinencode-Programm, das es verwendet :
Dies ist ein Programm im ca65- Style Assembler für den C64, das diese Routine verwendet (importiert als
rep
):Online-Demo
Verwendung:
sys49152,"[s]",[n]
zBsys49152,"Hello, World!",3
Wichtig: Wenn das Programm von der Festplatte geladen wurde (wie in der Online-Demo), geben Sie zuerst einen
new
Befehl aus! Dies ist notwendig, weil das Laden eines Maschinenprogramms einige C64 BASIC-Zeiger in den Papierkorb wirft.quelle
Java 8,
10076 Bytes-24 Bytes dank @ OliverGrégoire .
Erläuterung:
Probieren Sie es hier aus.
quelle
n->s->{int i,k=0;for(char c:s)for(i=k++%n<1?n:1;i-->0;)System.out.print(c);}
(mit einemchar[]
, stattString
.)MATL ,
107 Bytes-3 Bytes dank Luis Mendo!
Probieren Sie es online!
Übernimmt die Eingabe als
n
und dannS
als String / Char-Array.quelle
Haskell ,
5146 BytesDanke @Laikoni, dass du mir 5 Bytes gespart hast!
Probieren Sie es online!
Erklärung / Ungolfed
Der Operator
c <$ [a..b]
ersetzt jedes Element der Liste[a,a+1...b]
durchc
- es ist also nur ein Golfreplicate
:quelle
Holzkohle , 14 Bytes
Probieren Sie es online! Link ist eine ausführliche Version des Codes. Nimmt die Eingabe in der Reihenfolge
n
,s
.quelle
V , 13 Bytes
Probieren Sie es online!
Dies ist eine wirklich blöde Problemumgehung.
òlhÀälÀlÀ<M-->l
sollte funktionieren, aber ich kann für mein ganzes Leben nicht verstehen warum, zumal manuelleslhÀälÀlÀ<M-->l
Wiederholen ein paar Mal funktioniert .Hexdump:
Erläuterung:
quelle
'l' for right
... Ich schätze, das ist ein Überbleibsel von Vim? Ansonsten ... warum ?l
ist richtig in vim. es mag orthographisch rückwärts sein, aber es ist geometrisch korrekt: esl
ist der am weitesten rechts stehende Buchstabenschlüssel der mittleren Reihe.Pyth , 12 Bytes
Probieren Sie es hier aus.
quelle
Python 3 , 58 Bytes
Ich arbeite daran, Golf zu spielen.
Ich weiß, dass es bereits andere Python-Antworten gibt, aber ich dachte, ich würde diese auch posten, da sie im Vergleich zu den anderen ziemlich gut abschneidet, obwohl sie eine vollständige Funktion und kein Lambda ist.
Nimmt Eingaben als Funktionsparameter und druckt auf
STDOUT
.Probieren Sie es online!
Für ein Byte weniger (57) habe ich ein Lambda codiert, ähnliche Antworten wurden jedoch bereits von anderen Benutzern gepostet:
quelle
Brain-Flak (BrainHack) , 122 + 3 (
-A
) = 125 BytesIch bin sicher, das ist zu lang, aber ich habe lange gesucht und keine Verbesserungen gefunden.
Probieren Sie es online!
quelle
05AB1E ,
1211 BytesProbieren Sie es online!
Erläuterung
quelle
Mathematica, 71 Bytes
Probieren Sie es online!
sparte -2 Bytes durch Abhören von user202729
quelle
Map
darüberCharacters
kann kürzer sein.K (oK) ,
23& ndash ; 19 BytesLösung:
Probieren Sie es online!
Beispiele:
Erläuterung:
Anmerkungen:
quelle
Excel VBA, 71 Bytes
Anonyme VBE-Direktfensterfunktion, die Eingaben aus dem Bereich
[A1:B1]
und Ausgaben in das VBE-Direktfenster übernimmt .quelle