Einführung
Nehmen wir für dieses Beispiel den String Hello, World!
und das Array [3, 2, 3]
. Um die Teilzeichenkette zu finden, gehen wir wie folgt vor:
Die erste Zahl des Arrays ist 3
, also erhalten wir die Teilzeichenfolge [0 - 3]
, die ist Hel
. Danach entfernen wir die ersten 3
Zeichen aus der Anfangszeichenfolge, was uns belässt lo, World!
.
Die zweite Nummer des Arrays ist 2
, also erhalten wir die Teilzeichenfolge [0 - 2]
aus unserer neuen Zeichenfolge, die uns gibt lo
. Die übrig gebliebene Zeichenfolge wird , World!
.
Die letzte Zahl ist eine 3
, die uns gibt , W
. Die Unterzeichenkette besteht aus allen Unterzeichenketten, was uns ergibt:
['Hel', 'lo', ', W']
Für ein anschaulicheres Beispiel:
[3, 2, 3], 'Hello, World!'
3 -> Hel
2 -> lo
3 -> , W
Die Aufgabe
Bei einer nicht leeren Zeichenfolge und einem nicht leeren Array, das nur aus positiven Ganzzahlen ( > 0
) besteht, wird die Teilzeichenfolgekette ausgegeben . Sie können davon ausgehen, dass die Summe aller Ganzzahlen im Array die Länge der Zeichenfolge nicht überschreitet.
Sie können auch davon ausgehen, dass die Zeichenfolgen niemals Zeilenumbrüche enthalten.
Testfälle
Input: abcdefghijk, [2, 1, 3]
Output: ['ab', 'c', 'def']
Input: Code Golf, [4, 1]
Output: ['Code', ' ']
Input: Ayyy, [3]
Output: ['Ayy']
Input: lexicographically, [2, 2, 2, 7, 4]
Output: ['le', 'xi', 'co', 'graphic', 'ally']
Das ist Code-Golf , also gewinnt die Einsendung mit der geringsten Anzahl von Bytes!
Python 2, 42 Bytes
Manchmal macht man es einfach langweilig.
quelle
Brachylog ,
2013 BytesProbieren Sie es online!
Dies ist äußerst ineffizient und läuft bei TIO für den letzten Testfall aus.
Erläuterung
Eine etwas effizientere Version, 15 Bytes
quelle
Python 3, 45 Bytes
Dies gibt einen Teilstring pro Zeile aus und endet mit einem Fehler, wenn a erschöpft ist.
Testen Sie es auf repl.it .
quelle
Python,
52, 46 BytesEine rekursive Lambda-Funktion.
Vielen Dank an Dennis für das Abschneiden von 6 Bytes!
quelle
Gelee , 6 Bytes
Probieren Sie es online!
quelle
Haskell, 34 Bytes
Anwendungsbeispiel:
"lexicographically" # [2,2,2,7,4]
->["le","xi","co","graphic","ally"]
Einfache Rekursion.
Oder die langweilige 29-Byte- Lösung per eingebautem:
quelle
Ruby, 26 Bytes
Zeichenfolgen werden als Arrays von Zeichen dargestellt.
quelle
PowerShell v2 +, 46 Byte
Übernimmt die Eingabezeichenfolge
$a
und das Array$b
und führt eine Schleife durch$b
. Bei jeder Iteration wird ein Array-Slice$a
basierend auf$i
(standardmäßig$null
oder0
) und der aktuellen Nummer erstellt. Bedürfnisse der zu tun ,-1
und$i++
weil Strings in Powershell - Null-indiziert sind.Beispiele
(Die Ausgabe hier ist durch Leerzeichen getrennt, da dies die Standard-Stringifizierungsmethode für Arrays ist.)
quelle
Perl, 28 Bytes
Beinhaltet +1 für
-n
Führen Sie mit der Eingabezeichenfolge auf STDIN aus, gefolgt von jeder Zahl in einer separaten Zeile:
Nur der Code:
Die 23-Byte-Version
||"^"
funktioniert auch ohne , druckt aber falsche Zeilenumbrüche"^"
kann durch ersetzt werden,$_
wenn die Zeichenfolge keine regulären Metazeichen enthältquelle
MATL , 8 Bytes
Probieren Sie es online!
Erläuterung
quelle
JavaScript (ES6),
393835 ByteDank ETHproductions 3 Bytes gespart:
Beispiel:
Bisherige Lösung:
38 Bytes dank Huntro:
39 Bytes:
quelle
.slice
spart ein paar Bytes:s=>a=>a.map(v=>s.slice(t,t+=v),t=0)
Batch, 74 Bytes
Ich besiege C? Das kann nicht richtig sein! Übernimmt die Zeichenfolge für STDIN und das Array als Befehlszeilenargumente.
quelle
Java, 119 Bytes
Golf gespielt:
Ich habe die Antwort von Roman Gräf geändert ( https://codegolf.stackexchange.com/a/93992/59935 ), aber ich habe nicht genug Repräsentanten, um einen Kommentar abzugeben.
Ich habe die Implementierung der Schleife geändert und anstatt die Quellzeichenfolge in jeder Iteration auf eine andere Teilzeichenfolge zu setzen, habe ich nur die Indizes geändert, mit denen ich die Teilzeichenfolge erhalte.
quelle
Pyke, 10 Bytes
Probieren Sie es hier aus!
quelle
sed (82 + 2 für -rn) 84
Die erste Eingabezeile ist die Zeichenfolge. Dann hat jede Zeile danach die Größe eines Teilstrings in Unary .
Beispiel:
quelle
CJam , 11 Bytes
Probieren Sie es online!
Erläuterung
quelle
C 81 Bytes
Da die
write()
Ausgabe nicht gepuffert ist, kann ein Online-Compiler dies nur schwer ausgeben.test.c :
Leistung ohne Verrohrung:
quelle
PHP, 98 Bytes
Verwendung:
Ausgabe:
Es gibt wahrscheinlich eine bessere Lösung mit PHP.
quelle
PHP, 82 Bytes
Übernimmt die Eingabe als Zeichenfolge und dann eine Liste von Zahlen, die Ausgabe wird durch neue Zeilen getrennt. z.B
Wenn Sie eine der Personen sind, die $ argv mit -r verwenden können, können Sie die 6 Bytes speichern, die für das Eröffnungs-Tag verwendet werden.
quelle
$argv[++$i]
. Warum nicht$argv[1]
und$argv[2]
?$argv[2]
daran, dass wir die übersetzten Argumente durchlaufen müssen, und es ist$argv[++$i]
das erste Mal, dass wir die Notwendigkeit von a vermeiden,$i=1
und somit 2 Bytes einsparen.PHP, 63 Bytes
Ausgabe als Array 85 Bytes
quelle
Pyth, 7 Bytes
Nimmt die Eingabe durch Zeilenvorschub getrennt vor, wobei die Zeichenfolge nicht umbrochen wird und hinter dem Array steht. Probieren Sie es online!
Erläuterung:
quelle
Oktave / MATLAB, 31 Bytes
Dies ist eine anonyme Funktion mit Eingaben
s
: string;a
: numerisches Array.Probieren Sie es bei Ideone .
Erläuterung
Dies ist ein Port meiner MATL-Antwort.
quelle
Java 142 Bytes
Golf gespielt:
quelle
Awk, 36 Zeichen
Probelauf:
Im wirklichen Leben würde ich es so benutzen, nur keine Ahnung, wie man seine Punktzahl berechnet:
quelle
Dyalog APL 16.0, 15 Zeichen (nicht konkurrierend); 15,0, 17 Bytes
16.0 Lösung
Dyalog APL 16,0 fügt APL2 der Partition primitive,
⊂
mit der Glyphe⊆
.15.0 Lösung:
TryAPL online!
quelle
GNU sed, 55 + 2 (rn Flags) = 57 Bytes
Probieren Sie es online! (Danke an @Dennis für das Hinzufügen von sed)
Erläuterung: Die Eingabezeichenfolge sollte sich in der ersten Zeile befinden, und die Zahlen müssen danach in getrennten Zeilen stehen. Zu Beginn eines Zyklus wird implizit eine neue Zeile gelesen, wobei das Skript jedes Mal ausgeführt wird.
Testlauf: Verwenden eines Here-Dokuments mit EOF als Endemarkierung
Ausgabe:
quelle
Vimscript,
7978 Bytesnicht sehr hübsch, ich bin sicher, es kann verbessert werden ...
Nimmt einen vim-Puffer und ruft dann
echom string(A([2,3]))
auf, um die Ausgabe zu sehenEigentlich habe ich darüber nachgedacht, die Saite zu betrügen und auszugeben
["abc", "def"]
... Aber ich habe mich gewehrt: PErläuterung: Löschen (in das Standardregister eintragen) der einzelnen Arrayelemente und Hinzufügen von Zeichen zum Array
r
... Eine wirklich langweilige Antwort.quelle
Common Lisp,
7876 BytesAngenommen, anonyme Funktionen sind zulässig:
Verwendung
Ausgabe
-2 - Bytes durch die Verwendung
as
anstelle vonand
und Ändern y Definition Klammern zwischen zwei Variablen zu passen(subseq ...)
quelle
Rebol, 38 Bytes
quelle