(Nie, nie to ani żadne z nich )
Biorąc pod uwagę ciąg i listę ciągów, wypełnij wszystkie puste pola wejściowe odpowiednimi ciągami.
Wejście wyjście
Łańcuch wejściowy zawiera tylko znaki alfabetyczne, spacje i podkreślenia. Jest niepusty i nie zaczyna się od podkreślenia. Innymi słowy, łańcuch wejściowy pasuje do wyrażenia regularnego^[a-z A-Z]([a-z A-Z_]*[a-z A-Z])?$
Każdy ciąg na liście wejściowej jest niepusty i zawiera tylko znaki alfanumeryczne i spacje. Innymi słowy, pasują do wyrażenia regularnego ^[a-z A-Z]+$
.
Puste miejsce to ciągła sekwencja znaków podkreślenia ( _
), które nie są poprzedzane ani poprzedzane znakiem podkreślenia.
Łańcuch wejściowy zawiera n
spacje dla dodatniej liczby całkowitej n
, a lista ciągów zawiera dokładnie n
łańcuchy.
Dane wyjściowe uzyskuje się przez zastąpienie każdego k
-tego pustego miejsca w ciągu wejściowym k
-tym ciągiem na liście wejściowej ciągów.
Przykład
Biorąc pod uwagę ciąg wejściowy "I like _____ because _______ _____ing"
i listę ciągów ["ice cream", "it is", "satisfy"]
, możemy znaleźć dane wyjściowe w następujący sposób:
- Pierwszy blank pojawia się bezpośrednio po
"like "
. Wypełniamy to,"ice cream"
aby uzyskać"I like ice cream because ______ _____ing"
. - Drugi blank pojawia się bezpośrednio po
"because "
. Wypełniamy to,"it is"
aby uzyskać"I like ice cream because it is _____ing"
. - Trzecie puste miejsce następuje bezpośrednio po
"is "
. Wypełniamy to,"satisfy"
aby uzyskać"I like ice cream because it is satisfying"
.
Wyprowadzamy ostatni ciąg "I like ice cream because it is satisfying"
.
Przypadki testowe
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"
źródło
Odpowiedzi:
Wypukły , 5 bajtów
Wypróbuj online!
Wypukły jest językiem opartym na CJam, a ta odpowiedź jest prawie taka sama jak moja odpowiedź CJam, z wyjątkiem
l~
tego, że nie jest tutaj potrzebna, ponieważ Convex dokonuje automatycznej oceny argumentów na początku programu.Wyjaśnienie:
źródło
Japt , 8 bajtów
Przetestuj online!
Czuję, że przegapiłem jakiś ukryty haczyk w regułach, ponieważ jest to niezwykle proste: „zamień każdy ciąg znaków podkreślenia w ciągu na następny element w tablicy”.
źródło
JavaScript, 35 bajtów
Wypróbuj online
źródło
a=>b=>String.raw({raw:a.split(/_+/)},...b)
Proton , 42 bajty
Wypróbuj online!
Głupi import ...
To samo w Pythonie:
Python 3 , 53 bajty
Wypróbuj online!
źródło
MATL , 9 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
CJam , 7 bajtów
Wypróbuj online!
-1 dzięki sprytnej sztuczce Martina Endera .
Wyjaśnienie:
źródło
.\
zamiast\]z
.\
jest operatorem binarnym. :)[1 2 3]:_
->[1 1 2 2 3 3]
podobnie dla.
...Galaretka ,
87 bajtówWypróbuj online! Edycja: Zapisano 1 bajt dzięki @Erik the Outgolfer. Wyjaśnienie:
źródło
Perl 5 , 25 + 1 (-p) = 26 bajtów
Wypróbuj online!
źródło
<>
do negowaniaeval
ishift
: Wypróbuj online! . Musi być sposób na uniknięcie zastąpienia nowych linii ...sub{shift=~s|_+|shift|egr}
. Jeśli odwrócisz argumenty, możesz użyćpop
i sprowadzić go do 22 bajtów .Pyth , 10 bajtów
Wypróbuj tutaj!
Jak to działa?
źródło
RProgN 2 , 11 bajtów
Pobiera ciąg i stos ciągów na górze stosu.
Pierwszy (górny) element stosu znajduje się po prawej stronie, stąd dane wejściowe są od prawej do lewej.
Wyjaśniono
Wypróbuj online!
źródło
Java 8, 57 bajtów
Kiedy czytałem wyzwanie, na początku pomyślałem, że powinniśmy sformułować poprawne gramatycznie zdanie z wyrazami w kolejności losowej, ale po prostu zastąpienie wierszy każdym kolejnym słowem jest łatwiejsze. ;)
Wyjaśnienie:
Wypróbuj tutaj.
źródło
05AB1E , 12 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
C # (.NET Core) ,
9796 + 18 bajtówZaoszczędził 1 bajt dzięki Kevinowi Cruijssenowi !
18 bajtów jest do użycia
System.Linq
.Wypróbuj online!
źródło
(s,l)=>
na,s=>l=>
aby zapisać bajt. Wypróbuj online!Rubinowy , 28 + 1 = 29 bajtów
Używa
-p
Pierwszy wiersz to ciąg formatu, a pozostałe wiersze to tablica.
Wypróbuj online!
źródło
Python 2 , 61 bajtów
Wypróbuj online!
Cholera.
Python 2 , 63 bajty
Wypróbuj online!
źródło
re.sub
funkcjęSkumulowane , 21 bajtów
Wypróbuj online!
Zastępuje wszystkie serie
_
zy shift
. Nic oryginalnego, jak się wydaje.źródło
SOGL V0.12 , 7 bajtów
Wypróbuj tutaj!
Wyjaśnienie:
źródło
Python 2 , 49 bajtów
Wypróbuj online!
Dane wejściowe na liście są traktowane jako krotka. Dopuszczenie rzeczywistych list jako danych wejściowych spowodowałoby dodanie kolejnych siedmiu bajtów, ponieważ wymagana byłaby konwersja (
tuple(...)
).źródło