Возьмите три ввода, строку текста T
; строка символов для замены F
; и строка символов , чтобы заменить их, R
. Для каждой подстроки T
с такими же (без учета регистра) символами, как F
, замените их на символы в R
. Тем не менее, сохраните тот же случай, что и исходный текст.
Если есть больше символов , R
чем F
, дополнительные символы должны быть тот же случай , когда они находятся в R
. Если в нем есть цифры или символы F
, то соответствующие символы R
должны быть в том же регистре R
. F
не обязательно появится в T
.
Вы можете предположить, что весь текст будет в диапазоне ASCII для печати.
Примеры
"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
Андрей
источник
источник
"TeXT input", "text", "test"
"The birch canoe slid on the smooth planks", "o", " OH MY "
такой юмористический, но мне понравился этот пример.Ответы:
Сетчатка , 116 байт
Попробуйте онлайн! Объяснение:
Этот поиск
T
и всякий раз, когда есть нечувствительное к регистру совпадение с предвкушением кF
совпадению, окружается множеством новых строк, и предвосхищениеR
также вставляется.Каждая буква копии
R
корректируется, чтобы соответствовать букве совпадения, после чего она перемещается из рабочей области, так что следующая буква может быть обработана до тех пор, пока в копииR
или совпадении не закончатся буквы.Если в копии
R
заканчиваются буквы, то до конца совпадения будут предшествовать 4 новых строки, поэтому удалите их. В противном случае все, что останется, будет оставленными частями копий,R
которые должны быть объединены с несовпадающими частями ввода для получения результата.источник
APL (Dyalog) ,
757372 байтаПодсказки для
T
,R
иF
в таком порядке.R
долженF
быть задан в формате преобразования Dyalog и должен быть задан в формате PCRE.Попробуйте онлайн!
⍞
подсказыватьT
⊢
дать это (отделяет 1 иT
)⍞⎕R(
...)⍠1
запроситьF
и R eplace матчи с результатом следующей функции:⍞∘{…}
получить монадическую функцию, привязав запрос вR
качестве левого аргумента к:≢⍺
посчитать количество букв вR
⍺⍵.Match↑¨⍨
возьмите столько букв от каждого из,R
и совпадение⍺
- левый аргумент, который мы связалиR
.⍵
пространство имен, в которомMatch
содержится найденная строка↑
смешать эти два в матрицу из двух строкd←
хранить какd
(
...)
Примените к этому следующую молчаливую функцию:819⌶
строчные (мнемоника: 819 выглядит как большой )l←
сохранить эту функцию какl
d≠
Логическое гдеd
отличается (т.е. дает 0/1 для каждой строчной / заглавной буквы)(
…)
Примените к этому следующую молчаливую функцию:≠⌿
вертикальный XOR(
…)∧
Логическое И со следующим массивом:l⎕A
строчная lphabet⎕A,
перед именем прописной lphabetd∊
Логическое значение для каждой буквы в d, является ли ее членом (т.е. является ли буква)⊢⌿
последняя строка, т.е. для символа совпадения, является ли это буквой1∘⌷≠
XOR с первой строкой, т.е. является ли каждый символR
заглавными(
...)l¨⍨
Используйте это, чтобы строчные (если 0) или прописные (если 1) каждая буква:⊣⌿
первый ряд, т.е.R
* Количество байтов для Dyalog Classic
⎕OPT
вместо⍠
.источник
Perl 5 , 108 байт
107 байт код + 1 для
-p
.Попробуйте онлайн!
источник
Изъятое. Ответ Дома превосходит его длинным выстрелом.
# Perl 5 , 136 + 1 (-p) = 137 байтПопробуйте онлайн!
сделал огромный разрез после упоминания @Dom Hastings
\Q
# Perl 5 , 176 + 1 (-p) = 177 байтПопробуйте онлайн!
источник
PowerShell , 190 байт
Попробуйте онлайн!
Объяснение:
Блок сценария замены выполняет:
Тестовые случаи:
источник
TXR Lisp, 285 байт
Традиционно отформатированный оригинал:
источник
JavaScript, 177 байт
Показать фрагмент кода
Меньше гольфа:
47 байтов было получено из этой escape-функции регулярного выражения, поскольку программа должна обрабатывать символы. :(
источник
Python 2 ,
193200 байтПопробуйте онлайн!
источник
Python 3 , 183 байта
Попробуйте онлайн!
re.split
+ оставьте все четные элементы и замените все нечетные элементы правильным преобразованием строки замены:источник
С (ССЗ) ,
210211207189 байтПришлось добавить один байт, чтобы исправить ошибку с заглавными буквами для теста "BrainFriend"
Вау, это было утомительно ... Теперь, чтобы убрать несколько байтов
Попробуйте онлайн!
источник
*(p=f)
когда вы садитесьp=c=t
сразу после этого? Я попробовал это просто,*f
и это не сработало, поэтому оно не сразу перезаписывается.*((char*)f)
? Здорово!C # (моно C # компилятор) , 241 байт
Попробуйте онлайн!
источник
Action<string,string,string> r =
роль