Weź trzy dane wejściowe, ciąg tekstu T
; ciąg znaków do zastąpienia F
; i ciąg znaków, aby zastąpić je, R
. Dla każdego podłańcucha o T
takich samych (bez rozróżniania wielkości liter) znaków F
, zamień je na znaki w R
. Zachowaj jednak taką samą wielkość liter jak oryginalny tekst.
Jeśli istnieje więcej znaków R
niż F
, dodatkowe znaki powinny mieć ten sam przypadek, ponieważ są one w R
. Jeśli są cyfry lub symbole F
, to odpowiednie znaki R
powinny zachować wielkość liter R
. F
niekoniecznie pojawi się w T
.
Możesz założyć, że cały tekst będzie w drukowanym zakresie ASCII.
Przykłady
"Text input", "text", "test" -> "Test input"
"tHiS Is a PiEcE oF tExT", "is", "abcde" -> "tHaBcde Abcde a PiEcE oF tExT"
"The birch canoe slid on the smooth planks", "o", " OH MY " -> "The birch can OH MY e slid OH MY n the sm OH MY OH MY th planks"
"The score was 10 to 5", "10", "tEn" -> "The score was tEn to 5"
"I wrote my code in Brain$#@!", "$#@!", "Friend" -> "I wrote my code in BrainFriend"
"This challenge was created by Andrew Piliser", "Andrew Piliser", "Martin Ender" -> "This challenge was created by Martin Ender"
// Has a match, but does not match case
"John does not know", "John Doe", "Jane Doe" -> "Jane does not know"
// No match
"Glue the sheet to the dark blue background", "Glue the sheet to the dark-blue background", "foo" -> "Glue the sheet to the dark blue background"
// Only take full matches
"aaa", "aa", "b" -> "ba"
// Apply matching once across the string as a whole, do not iterate on replaced text
"aaaa", "aa", "a" -> "aa"
"TeXT input", "text", "test" -> "TeST input"
code-golf
string
code-golf
string
ascii-art
alphabet
code-golf
number
sequence
counting
code-golf
sequence
counting
code-golf
quine
source-layout
code-golf
string
code-golf
decision-problem
game
code-golf
string
quine
source-layout
subsequence
code-golf
quine
code-golf
array-manipulation
integer
code-golf
ascii-art
code-golf
sequence
integer
code-golf
kolmogorov-complexity
code-golf
array-manipulation
integer
code-golf
number
array-manipulation
integer
code-golf
string
number
integer
code-golf
string
ascii-art
code-challenge
test-battery
expression-building
source-layout
printable-ascii
code-bowling
code-golf
number
code-golf
number
string
binary
code-golf
matrix
conversion
code-golf
number
arithmetic
Andrzej
źródło
źródło
"TeXT input", "text", "test"
"The birch canoe slid on the smooth planks", "o", " OH MY "
to za zabawne, ale podobał mi się ten przykład.Odpowiedzi:
Siatkówka , 116 bajtów
Wypróbuj online! Wyjaśnienie:
Wyszukuje
T
i za każdym razem, gdy rozróżniana jest wielkość liter w stosunku do lookahead,F
dopasowanie jest otaczane przez kilka nowych linii, a lookaheadR
jest również wstawiany.Każda litera kopii
R
jest dopasowywana, aby pasowała do litery dopasowania, po czym jest przenoszona poza obszar roboczy, aby można było przetworzyć kolejną literę, dopóki kopiaR
lub dopasowanie nie zabraknie liter.Jeśli w kopii
R
zabraknie liter, pozostała część dopasowania będzie poprzedzona 4 znakami nowej linii, więc usuń ją. W przeciwnym razie wszystko, co pozostanie, pozostanie fragmentami kopii,R
które należy połączyć z niepasującymi częściami danych wejściowych, aby uzyskać wynik.źródło
APL (Dyalog) ,
757372 bajtówZachęty dla
T
,R
iF
w tej kolejności.R
musi być podany w formacie transformacji Dyalog iF
musi być podany w formacie PCRE.Wypróbuj online!
⍞
monit oT
⊢
wydajność, która (oddziela 1 iT
)⍞⎕R(
...)⍠1
zachęty dlaF
i R mecze EUmieãæ o wyniku następujących funkcji:⍞∘{…}
wyprowadzić funkcję monadyczną, wiążąc podpowiedziR
jako lewy argument do:≢⍺
policz liczbę liter wR
⍺⍵.Match↑¨⍨
weź tyle liter z każdego z nich,R
a dopasowanie⍺
jest lewym argumentem, który powiązaliśmyR
jako.⍵
to przestrzeń nazw, w którejMatch
znajduje się aktualnie znaleziony ciąg.↑
zmieszaj te dwa w dwurzędową macierzd←
przechowywać jakod
(
…)
Zastosuj do tego następującą milczącą funkcję:819⌶
małe litery (mnemoniczny: 819 wygląda jak duży )l←
zapisz tę funkcję jakol
d≠
Boolean, gdzie sięd
różni (tzn. Daje 0/1 dla każdej małej / wielkiej litery)(
…)
Zastosuj do tego następującą milczącą funkcję:≠⌿
pionowy XOR(
…)∧
Boolean AND z następującą tablicą:l⎕A
małe litery A alfabet⎕A,
poprzedzać wielką literę A alfabetd∊
Wartość logiczna dla każdej litery in d, czy jej członek (tj. Czy litera)⊢⌿
ostatni wiersz, tj. znak dopasowania, czy jest to litera1∘⌷≠
XOR z pierwszym wierszem, tzn. Czy każdy znakR
jest wielką literą(
…)l¨⍨
Używaj tego do małych (jeśli 0) lub wielkich (jeśli 1) każdej litery:⊣⌿
pierwszy rząd, tjR
* Liczba bajtów dla Dyalog Classic przy użyciu
⎕OPT
zamiast⍠
.źródło
Perl 5 , 108 bajtów
Kod 107 bajtów + 1 dla
-p
.Wypróbuj online!
źródło
Wycofane. Odpowiedź Dom pokonuje ją z dystansu.
# Perl 5 , 136 + 1 (-p) = 137 bajtówWypróbuj online!
dokonał ogromnego cięcia po wspomnianej @Dom Hastings
\Q
# Perl 5 , 176 + 1 (-p) = 177 bajtówWypróbuj online!
źródło
PowerShell , 190 bajtów
Wypróbuj online!
Wyjaśnienie:
Zamienny skrypt blokujący:
Przypadki testowe:
źródło
TXR Lisp, 285 bajtów
Oryginał sformatowany tradycyjnie:
źródło
JavaScript, 177 bajtów
Pokaż fragment kodu
Mniej golfa:
47 bajtów pochodzi z tej funkcji zmiany wyrażenia regularnego, ponieważ program musi obsługiwać symbole. :(
źródło
Python 2 ,
193200 bajtówWypróbuj online!
źródło
Python 3 , 183 bajtów
Wypróbuj online!
re.split
+ zachowaj wszystkie parzyste elementy i zastąp wszystkie nieparzyste elementy poprawną transformacją łańcucha zastępującego:źródło
C (gcc) ,
210211207189 bajtówMusiałem dodać jeden bajt, aby naprawić błąd z wielkimi literami dla przypadku testowego „BrainFriend”
Wow, to było nudne ... Teraz pograć w golfa trochę bajtów
Wypróbuj online!
źródło
*(p=f)
kiedy ustawiaszp=c=t
zaraz potem? Próbowałem z tym po prostu*f
i nie działało, więc nie jest natychmiast zastępowane.*((char*)f)
? Chłodny!C # (kompilator Mono C #) , 241 bajtów
Wypróbuj online!
źródło
Action<string,string,string> r =
części