Pegue três entradas, uma sequência de texto T
; uma sequência de caracteres para substituir F
; e uma sequência de caracteres para substituí-los por R
,. Para cada substring T
com os mesmos caracteres (sem distinção entre maiúsculas e minúsculas) F
, substitua-os pelos caracteres em R
. No entanto, mantenha o mesmo caso que o texto original.
Se houver mais caracteres do R
que F
, os caracteres extras deverão ser os mesmos que estão R
. Se houver números ou símbolos F
, os caracteres correspondentes R
deverão manter o caso em que estão R
. F
não aparecerá necessariamente em T
.
Você pode assumir que todo o texto estará no intervalo ASCII imprimível.
Exemplos
"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
Andrew
fonte
fonte
"TeXT input", "text", "test"
"The birch canoe slid on the smooth planks", "o", " OH MY "
tão engraçado, mas adorei esse exemplo.Respostas:
Retina , 116 bytes
Experimente online! Explicação:
Ele pesquisa
T
e sempre que há uma correspondência que não diferencia maiúsculas de minúsculas do cabeçote de pesquisa paraF
o fósforo, há um monte de novas linhas e o cabeçote de pesquisaR
também é inserido.Cada letra da cópia de
R
é ajustada para corresponder à da correspondência, após o que é movida para fora da área de trabalho para que a próxima letra possa ser processada, até que a cópiaR
ou a correspondência fique sem letras.Se a cópia
R
ficar sem letras, o restante da partida será precedido por 4 novas linhas, portanto, exclua-a. Caso contrário, tudo o que sobrar será deixado sobras de cópiasR
que precisam ser concatenadas com as partes não correspondentes da entrada para produzir o resultado.fonte
APL (Dyalog) ,
757372 bytesInstruções para
T
,R
eF
em que ordem.R
deve ser fornecido no formato de transformação Dyalog eF
deve ser fornecido no formato PCRE.Experimente online!
⍞
solicitarT
⊢
rendimento que (separa 1 eT
)⍞⎕R(
...)⍠1
solicitarF
e R partidas EColoque com o resultado da seguinte função:⍞∘{…}
derivar uma função monádica, vinculando oR
argumento solicitado como à esquerda a:≢⍺
conte o número de letras emR
⍺⍵.Match↑¨⍨
pegue tantas letras de cada umaR
e a partida⍺
é o argumento da esquerda, que empatamosR
como.⍵
é um espaço para nome no qualMatch
contém a sequência encontrada no momento.↑
misture os dois em uma matriz de duas linhasd←
armazenar comod
(
…)
Aplique a seguinte função tácita a isso:819⌶
minúsculas (mnemônico: 819 parece grande )l←
armazenar essa função comol
d≠
Booleano onded
é diferente (ou seja, dá 0/1 para cada letra minúscula / maiúscula)(
…)
Aplique a seguinte função tácita a isso:≠⌿
XOR vertical(
…)∧
Booleano AND com a seguinte matriz:l⎕A
lowercased Um lphabet⎕A,
Anexar um alfabeto l maiúsculod∊
Booleano para cada letra em d se um membro dela (ou seja, se uma carta)⊢⌿
última linha, ou seja, para o caractere da partida, seja uma letra1∘⌷≠
XOR com a primeira linha, ou seja, se cada caractereR
é maiúsculo(
…)l¨⍨
Use isso para minúsculas (se 0) ou maiúsculas (se 1) cada letra de:⊣⌿
a primeira linha, ou sejaR
* Contagem de bytes para o Dyalog Classic usando em
⎕OPT
vez de⍠
.fonte
Perl 5 , 108 bytes
Código de 107 bytes + 1 para
-p
.Experimente online!
fonte
Retirado. A resposta de Dom supera-a de longe.
# Perl 5 , 136 + 1 (-p) = 137 bytesExperimente online!
fez um enorme corte depois que @Dom Hastings mencionou
\Q
# Perl 5 , 176 + 1 (-p) = 177 bytesExperimente online!
fonte
PowerShell , 190 bytes
Experimente online!
Explicação:
O scriptblock de substituição faz:
Casos de teste:
fonte
TXR Lisp, 285 bytes
Original formatado convencionalmente:
fonte
JavaScript, 177 bytes
Mostrar snippet de código
Menos golfe:
47 bytes vieram dessa função de escape do regex, pois o programa precisa manipular símbolos. :(
fonte
Python 2 ,
193200 bytesExperimente online!
fonte
Python 3 , 183 bytes
Experimente online!
re.split
mantenha todos os elementos pares e substitua todos os elementos ímpares pela transformação correta da sequência de substituição:fonte
C (gcc) ,
210211207189 bytesFoi necessário adicionar um byte para corrigir um erro com letras maiúsculas no caso de teste "BrainFriend"
Uau, isso foi tedioso ... Agora, para jogar fora alguns bytes
Experimente online!
fonte
*(p=f)
quando definep=c=t
logo depois? Eu tentei com apenas*f
e não funcionou, por isso não é imediatamente substituído.*((char*)f)
? Legal!C # (compilador Mono C #) , 241 bytes
Experimente online!
fonte
Action<string,string,string> r =
parte