(Nein, weder dies noch eines davon )
Füllen Sie bei einer Zeichenfolge und einer Liste von Zeichenfolgen alle Lücken in der Eingabezeichenfolge mit den entsprechenden Zeichenfolgen aus.
Input-Output
Die Eingabezeichenfolge enthält nur alphabetische Zeichen, Leerzeichen und Unterstriche. Es ist nicht leer und beginnt nicht mit einem Unterstrich. Mit anderen Worten, die Eingabezeichenfolge stimmt mit dem regulären Ausdruck überein^[a-z A-Z]([a-z A-Z_]*[a-z A-Z])?$
Jede Zeichenfolge in der Eingabeliste ist nicht leer und enthält nur alphanumerische Zeichen und Leerzeichen. Mit anderen Worten, sie stimmen mit dem regulären Ausdruck überein ^[a-z A-Z]+$
.
Ein Leerzeichen ist eine zusammenhängende Folge von Unterstrichen ( _
), denen weder ein Unterstrich vorangestellt noch vorangestellt wird.
Die Eingabezeichenfolge enthält n
Leerzeichen für eine positive Ganzzahl n
, und die Liste der Zeichenfolgen enthält genau n
Zeichenfolgen.
Die Ausgabe wird erhalten, indem jedes k
-te Leerzeichen in der Eingabezeichenfolge durch die k
-te Zeichenfolge in der Eingabeliste der Zeichenfolgen ersetzt wird.
Beispiel
Bei einer Eingabezeichenfolge "I like _____ because _______ _____ing"
und einer Liste von Zeichenfolgen ["ice cream", "it is", "satisfy"]
können wir die Ausgabe wie folgt finden:
- Das erste Leerzeichen kommt direkt danach
"like "
. Wir füllen das aus"ice cream"
, um zu bekommen"I like ice cream because ______ _____ing"
. - Das zweite Leerzeichen kommt direkt danach
"because "
. Wir füllen das aus"it is"
, um zu bekommen"I like ice cream because it is _____ing"
. - Das dritte Leerzeichen kommt direkt danach
"is "
. Wir füllen das aus"satisfy"
, um zu bekommen"I like ice cream because it is satisfying"
.
Wir geben die letzte Zeichenfolge aus "I like ice cream because it is satisfying"
.
Testfälle
input string, input list => output
"Things _____ for those who ____ of how things work out _ Wooden",["work out best","make the best","John"] => "Things work out best for those who make the best of how things work out John Wooden"
"I like _____ because _______ _____ing",["ice cream","it is","satisfy"] => "I like ice cream because it is satisfying"
"If you are ___ willing to risk _____ you will ha_o settle for the ordi_____Jim ______n",["not","the usual","ve t","nary ","Roh"] => "If you are not willing to risk the usual you will have to settle for the ordinary Jim Rohn"
"S____ is walking from ____ to ____ with n_oss of ___ W_____ Churchill",["uccess","failure","failure","o l","enthusiasm","inston"] => "Success is walking from failure to failure with no loss of enthusiasm Winston Churchill"
"If_everyone_is_thinking ____ ____ somebody_isnt_thinking G____e P____n",[" "," "," ","alike","then"," "," ","eorg","atto"] => "If everyone is thinking alike then somebody isnt thinking George Patton"
"Pe_________e __say ____motivation does__ last Well___her doe_ bathing____thats why we rec____nd it daily _ __________lar",["opl","often ","that ","nt"," neit","s"," ","omme","Zig","Zig"] => "People often say that motivation doesnt last Well neither does bathing thats why we recommend it daily Zig Ziglar"
quelle
Antworten:
Konvex , 5 Bytes
Probieren Sie es online aus!
Convex ist eine CJam-basierte Sprache, und diese Antwort ist fast dieselbe wie meine CJam-Antwort, außer dass
l~
dies hier nicht erforderlich ist, da Convex zu Beginn des Programms eine automatische Argumentauswertung durchführt.Erläuterung:
quelle
Japt , 8 Bytes
Testen Sie es online!
Ich habe das Gefühl, dass ich einen versteckten Haken in den Regeln verpasst habe, weil dies extrem einfach ist: "Ersetzen Sie jeden Lauf von Unterstrichen in der Zeichenfolge durch das nächste Element im Array."
quelle
JavaScript, 35 Bytes
Probieren Sie es online aus
quelle
a=>b=>String.raw({raw:a.split(/_+/)},...b)
Proton , 42 Bytes
Probieren Sie es online aus!
Dumme Importe ...
Gleiches in Python:
Python 3 , 53 Bytes
Probieren Sie es online aus!
quelle
MATL , 9 Bytes
Probieren Sie es online aus!
Erläuterung
quelle
CJam , 7 Bytes
Probieren Sie es online aus!
-1 dank eines cleveren Tricks von Martin Ender .
Erläuterung:
quelle
.\
statt\]z
.\
ist ein binärer Operator. :)[1 2 3]:_
->[1 1 2 2 3 3]
ebenfalls für.
...Gelee ,
87 BytesProbieren Sie es online aus! Bearbeiten: 1 Byte dank @Erik the Outgolfer gespeichert. Erläuterung:
quelle
Perl 5 , 25 + 1 (-p) = 26 Bytes
Probieren Sie es online aus!
quelle
<>
, um daseval
und zu negierenshift
: Versuchen Sie es online! . Es muss einen Weg geben, das Ersetzen der Zeilenumbrüche zu vermeiden ...sub{shift=~s|_+|shift|egr}
. Wenn Sie die Argumente umgekehrt haben, können Sie sie verwendenpop
und auf 22 Byte reduzieren .Pyth , 10 Bytes
Probieren Sie es hier aus!
Wie es funktioniert?
quelle
RProgN 2 , 11 Bytes
Nimmt eine Zeichenfolge und einen Stapel von Zeichenfolgen oben auf dem Stapel.
Das erste (obere) Element eines Stapels befindet sich rechts, daher erfolgt die Eingabe von rechts nach links.
Erklärt
Probieren Sie es online aus!
quelle
Java 8, 57 Bytes
Als ich die Herausforderung las, dachte ich zuerst, wir sollten einen grammatikalisch korrekten Satz bilden, wobei die Wörter in zufälliger Reihenfolge sind, aber es ist einfacher, nur Zeilen durch jedes aufeinanderfolgende Wort zu ersetzen. ;)
Erläuterung:
Probieren Sie es hier aus.
quelle
05AB1E , 12 Bytes
Probieren Sie es online aus!
Erläuterung
quelle
C # (.NET Core) ,
9796 + 18 Byte1 Byte dank Kevin Cruijssen gespart !
Die 18 Bytes sind für die Verwendung
System.Linq
.Probieren Sie es online aus!
quelle
(s,l)=>
ums=>l=>
ein Byte zu speichern. Probieren Sie es online aus!Ruby , 28 + 1 = 29 Bytes
Verwendet
-p
Die erste Zeile ist die Formatzeichenfolge, der Rest der Zeilen ist das Array.
Probieren Sie es online aus!
quelle
Python 2 , 61 Bytes
Probieren Sie es online aus!
Verdammt.
Python 2 , 63 Bytes
Probieren Sie es online aus!
quelle
re.sub
einer FunktionGestapelt , 21 Bytes
Probieren Sie es online aus!
Ersetzt alle Läufe von
_
durchy shift
. Nichts Originelles, wie es scheint.quelle
SOGL V0.12 , 7 Bytes
Probieren Sie es hier aus!
Erläuterung:
quelle
Python 2 , 49 Bytes
Probieren Sie es online aus!
Die Listeneingabe wird als Tupel verwendet. Wenn Sie tatsächliche Listen als Eingabe zulassen, werden weitere sieben Bytes hinzugefügt, da eine Konvertierung erforderlich wäre (
tuple(...)
).quelle