A menos que você tenha um script de usuário que modifique o design do site (ou mesmo se houver), você deve ter notado que temos o design do site!
Então, para comemorar, vamos criar um programa que aplique retroativamente esse design (simplificado demais, é claro)!
Portanto, as mudanças mais importantes são:
- nosso novo nome agora é Code Golf and Coding Challenges
- nosso site não é mais a cor azul padrão e é um bom verde escuro
Então, dada uma string, mude:
PPCG
paraCGCC
Programming Puzzles {non-whitespace} Code Golf
paraCode Golf {same-thing} Coding Challenges
(por exemplo,Programming Puzzles + Code Golf
,and Code Golf
e& Code Golf
tudo seria alterado paraCode Golf + Coding Challenges
,and Coding Challenges
, e& Coding Challenges
.#abc
para#acb
(alternar azul para verde e vice-versa - apenas ignore o fato de que o verde não deve logicamente se tornar azul, mas não quero complicar a mudança de cor)#abcdef
para#abefcd
(o mesmo que acima)
Observe que, para as trocas de cores, você deve aceitar qualquer dígito hexadecimal de 0-9
a a-f
. Você pode escolher qual caso de dígito hexadecimal exigir, mas deve ser consistente e o mesmo da entrada à saída.
Suas substituições podem fazer distinção entre maiúsculas e minúsculas e, caso contrário, especifique como a saída funciona.
As substituições só devem acontecer quando a string estiver cercada por limites de palavras (incluindo o início da #
). Em outras palavras, cada uma das substituições especificadas deve ocorrer apenas se a correspondência estiver na borda da sequência ou for delimitada por caracteres não alfanuméricos (nos dois lados).
Aplicam-se brechas padrão. Este é um desafio do código-golfe, portanto o código mais curto vence!
Exemplos
PPCG -> CGCC
Programming Puzzles or Code Golf -> Code Golf or Coding Challenges
PPCG stands for Programming Puzzles and Code Golf and its site color is #abf -> CGCC stands for Code Golf and Coding Challenges and its site color is #afb
The color #00f is much more intense than #5568ed -> The color #0f0 is much more intense than #55ed68
Programming Puzzles and No Substitution -> Programming Puzzles and No Substitution
No Substitution and Code Golf -> No Substitution and Code Golf
Programming Puzzles and no substitution Code Golf -> Programming Puzzles and no substitution Code Golf
Code Golf and Programming Puzzles -> Code Golf and Programming Puzzles
Programming Puzzles and Programming Puzzles and Code Golf -> Programming Puzzles and Code Golf and Coding Challenges
(para o último caso de teste, é importante observar que a sequência traduzida pode ser convertida novamente, mas a transformação deve ser aplicada exatamente uma vez)
Atualização importante
(Obrigado @tsh)
A Programming Puzzles ... Code Golf
regra de substituição pode incluir as outras regras dentro dela ( Programming Puzzles PPCG Code Golf
é válida). Nesse caso, você pode escolher se as regras são ou não aplicadas, mas devem ser determinísticas. Não estou exigindo que você seja consistente entre PPCG
e #...
porque as respostas parecem implementar as regras em minha ordem de lista, o que resulta em inconsistências. Isso é apenas um esclarecimento; Eu acredito que todas as respostas atuais permanecem válidas.
Programming Puzzles and no substitution Code Golf
que também pode pegar alguém (mesmo que todo mundo esteja usando o mesmo regex válido)Code Golf and Programming Puzzles
eProgramming Puzzles and Programming Puzzles and Code Golf
. @Veskah Hmm, e acho que o último caso de teste sugerido falha na minha resposta 05AB1E, já que não tenho regex ..>. <Voltar para a prancheta ..Respostas:
Ruby
-p
,165164159 bytesAcabou sendo muito semelhante à resposta sed, mas abusa da interpolação de strings de Ruby para duplicar a correspondência de grupo hexadecimal
([\da-f]{1,2})
no terceiro regex três vezes, em vez de precisar repetir a coisa toda novamente.Experimente online!
fonte
{1,2}
interrupções com entradas hexadecimais de comprimento 4 ou 5, por exemplo#aabbc
? Editar: sim (este exemplo não deve ser substituído porque não é uma cor hexadecimal válida).-
é um caractere não alfanumérico).#
é um pouco ambíguo, pois/\b/
não se registra ao lado de outro não alfanumérico, mas fiz a alteração de qualquer maneira sem alteração de bytes (substituindo\S
por\w
)(?<!\w)
com o meu(^|\W)
para 1 char?C ++ (GCC) ,
270285283 bytesAgradecemos a Neil por apontar um bug.
-2 bytes graças ao ceilingcat.
Experimente online!
fonte
#fade
e#faced
que não deveria.Retina 0.8.2 ,
153130 bytesExperimente online! O link inclui casos de teste. Todas as substituições diferenciam maiúsculas de minúsculas. Supõe que os caracteres normais da palavra regex sejam aceitáveis, de modo que
\B#
corresponda apenas aos#
s que não seguem um caractere de palavra. Editar: salvou 22 bytes graças a @tsh.fonte
\B#(?=([\da-f]{3}){1,2}\b)(.+?)(..??)(..??)\b
?GNU sed
-E
, 198 caracteresExecutável usando, por exemplo
sed -E 'the above'
; as novas linhas podem ser incluídas literalmente ou substituídas por,;
se você desejar. Ambos funcionam.@HyperNeutrino, essa regra de limite de palavras é estúpida. Olha o que eu tinha que fazer no
#
caso.Sim, eu nem tentei. : P
+9 por @Value Ink
fonte
-E
".sed
correspondência de regex não permite usar\d
como atalho para0-9
? poderia poupar um total de 6 bytesStax , 85 bytes
Execute e depure
fonte
05AB1E ,
123109105110114 bytes+5 bytes corrigindo casos de teste como
Programming Puzzles and no substitution Code Golf
eProgramming Puzzles and Programming Puzzles and Code Golf
.+4 bytes corrigindo casos de teste como
color-#00f
(cores com algo além de espaços / novas linhas ao redor). Obrigado a @Grimy por trazer isso à minha atenção.Maiúsculas e Minúsculas. Valores hexadecimais estão em minúsculas
abcdef
;Programming Puzzles ... Code Golf
está em titlecase;PPCG
está em maiúsculas.Experimente online.
Definitivamente, não é o idioma certo para o trabalho. Imitar limites de palavras e substituí-los
Programming Puzzles \S+ Code Golf
, mas nãoCode Golf \S+ Programming Puzzles
ouProgramming Puzzles \S+ \S+ Code Golf
sem nenhuma expressão regular, é bastante difícil (para resumir) ..>.>Explicação:
Veja esta dica 05AB1E (seção Como usar o dicionário? ) Para entender por que
”–±ÇÀ”
é"Programming Puzzles"
;”ƒËŠˆ”
é"Code Golf"
; e”Âïªï”
é"Coding Challenges"
.fonte
Python 2 , 240 bytes
Experimente online!
fonte
JavaScript (Node.js) , 174 bytes
Experimente online!
fonte
#abcde
porque o qualificador regex{3,6}
corresponde entre 3 e 6 caracteres, em vez de 3 ou 6 que eu presumo que você estava procurando.Pyth ,
177173162142 bytesAqui está uma versão sem os mecanismos de compactação de string do Pyth (também conhecido como copiar e colar):
Experimente online!
Isso acabou sendo muito longo, porque eu tentei ser o mais pedante possível com as expressões regulares. Tentei comprimir todas as seqüências possíveis, mas a maioria delas não ficou menor ou não pôde ser colada no TIO corretamente.
Explicação:
fonte
Perl 5
-p
,152145 bytes@ValueInk salva 7 bytes
Experimente online!
fonte
( \S+ )(Code Golf)\b/$2$1Coding
economiza 2 bytes. Além disso, o último regex pode terminar com apenas um em\b
vez de(?=\s|$)
\s
seja\W
, caso contrário, ele falhará neste caso (-
é um caractere não alfanumérico, portanto, a substituição deve ser aplicada).Java 8, 192 bytes
Porto de @Neil resposta Retina 's , por isso, certifique-se de upvote-lo!
Experimente online.
fonte