A menos que tenga un script de usuario que modifique el diseño del sitio (o incluso si es así), ¡debería haber notado que tenemos nuestro diseño del sitio!
Entonces, para celebrar, ¡hagamos un programa que aplique retroactivamente este diseño (simplificado en exceso, por supuesto)!
Entonces, los cambios más importantes son:
- nuestro nuevo nombre ahora es Code Golf y Coding Challenges
- nuestro sitio ya no es el color azul predeterminado y, en cambio, es un bonito verde oscuro
Entonces, dada una cadena, cambie:
PPCG
aCGCC
Programming Puzzles {non-whitespace} Code Golf
aCode Golf {same-thing} Coding Challenges
(por ejemplo,Programming Puzzles + Code Golf
,and Code Golf
, y& Code Golf
todo habría cambiado aCode Golf + Coding Challenges
,and Coding Challenges
y& Coding Challenges
.#abc
a#acb
(cambiar de azul a verde y viceversa, simplemente ignorar el hecho de que el verde no debería convertirse lógicamente en azul, pero no quiero complicar el cambio de color)#abcdef
a#abefcd
(igual que el anterior)
Tenga en cuenta que para los intercambios de color, debe aceptar cualquier dígito hexadecimal de 0-9
a a-f
. Puede elegir qué caso de dígito hexadecimal requerirá, pero debe ser coherente e igual desde la entrada hasta la salida.
Sus sustituciones pueden distinguir entre mayúsculas y minúsculas, y si no, especifique cómo funciona la salida.
Las sustituciones solo deben ocurrir cuando la cadena está rodeada por límites de palabras (incluido el inicio de la #
). En otras palabras, cada una de las sustituciones especificadas solo debe ocurrir si la coincidencia está en el borde de la cadena o está bordeada por caracteres no alfanuméricos (en ambos lados).
Se aplican lagunas estándar. Este es un desafío de código de golf, por lo que gana el código más corto.
Ejemplos
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 el último caso de prueba, es importante tener en cuenta que la cadena traducida podría traducirse nuevamente, pero la transformación debe aplicarse exactamente una vez)
Actualización importante
(Gracias @tsh)
La Programming Puzzles ... Code Golf
regla de sustitución puede incluir otras reglas dentro de ella ( Programming Puzzles PPCG Code Golf
es válida). En este caso, puede elegir si se aplican o no las reglas, pero debe ser determinista. No estoy exigiendo que sea coherente entre PPCG
y #...
porque las respuestas parecen implementar las reglas en mi orden de lista, lo que resulta en inconsistencias. Esto es solo una aclaración; Creo que todas las respuestas actuales siguen siendo válidas.
Programming Puzzles and no substitution Code Golf
que también podría atrapar a alguien (aunque todosCode Golf and Programming Puzzles
yProgramming Puzzles and Programming Puzzles and Code Golf
. @Veskah Hmm, y creo que el último caso de prueba sugerido falla en mi respuesta 05AB1E, ya que no tengo expresiones regulares ...>. <Volver a la mesa de dibujo ...Respuestas:
Rubí
-p
,165164159 bytesTerminó siendo muy similar a la respuesta sed, pero abusa de la interpolación de cadenas de Ruby para duplicar el grupo hexadecimal que coincide
([\da-f]{1,2})
dentro de la tercera expresión regular tres veces en lugar de tener que repetir todo nuevamente.Pruébalo en línea!
fuente
{1,2}
break con entradas hexadecimales de longitud 4 o 5, por ejemplo#aabbc
? Editar: lo hace (este ejemplo no debe reemplazarse porque no es un color hexadecimal válido).-
es un carácter no alfanumérico).#
es un poco ambiguo ya/\b/
que no se registra junto a otro no alfanumérico, pero hice el cambio de todos modos para ningún cambio de byte (reemplazo\S
con\w
)(?<!\w)
con mi(^|\W)
por 1 char?C ++ (gcc) ,
270285283 bytesGracias a Neil por señalar un error.
-2 bytes gracias a ceilingcat.
Pruébalo en línea!
fuente
#fade
y#faced
que no debería.Retina 0.8.2 ,
153130 bytesPruébalo en línea! El enlace incluye casos de prueba. Todas las sustituciones son sensibles a mayúsculas y minúsculas. Asume que los caracteres de palabras regex normales son aceptables para que
\B#
solo coincidan con#
s que no siguen un carácter de palabra. Editar: Guardado 22 bytes gracias a @tsh.fuente
\B#(?=([\da-f]{3}){1,2}\b)(.+?)(..??)(..??)\b
?GNU sed
-E
, 198 caracteresEjecutable usando eg
sed -E 'the above'
; las nuevas líneas pueden incluirse literalmente o reemplazarse;
si así lo desea. Ambos trabajan.@HyperNeutrino vamos, esa regla de límite de palabras es estúpida. Mira lo que tuve que hacer en el
#
caso.Sí, ni siquiera lo intenté. :PAGS
+9 por @Value Ink
fuente
-E
".sed
permite la coincidencia de expresiones regulares usar\d
como atajo para0-9
? podría ahorrarle 6 bytesStax , 85 bytes
Ejecutar y depurarlo
fuente
05AB1E ,
123109105110114 bytes+5 bytes arreglando casos de prueba como
Programming Puzzles and no substitution Code Golf
yProgramming Puzzles and Programming Puzzles and Code Golf
.+4 bytes arreglando casos de prueba como
color-#00f
(colores con algo además de espacios / líneas nuevas que lo rodean). Gracias a @Grimy por llamar mi atención sobre esto.Distingue mayúsculas y minúsculas. Los valores hexadecimales están en minúsculas
abcdef
;Programming Puzzles ... Code Golf
está en títuloPPCG
está en mayúscula completa.Pruébalo en línea.
Definitivamente no es el lenguaje correcto para el trabajo. Imitar los límites de palabras y reemplazarlos
Programming Puzzles \S+ Code Golf
, pero noCode Golf \S+ Programming Puzzles
oProgramming Puzzles \S+ \S+ Code Golf
sin expresiones regulares es bastante difícil (para abreviar) ..>.>Explicación:
Vea esta sugerencia mía 05AB1E (sección ¿Cómo usar el diccionario? ) Para entender por qué
”–±ÇÀ”
es"Programming Puzzles"
;”ƒËŠˆ”
es"Code Golf"
; y”Âïªï”
es"Coding Challenges"
.fuente
Python 2 , 240 bytes
Pruébalo en línea!
fuente
JavaScript (Node.js) , 174 bytes
Pruébalo en línea!
fuente
#abcde
porque el calificador regex{3,6}
coincide con entre 3 y 6 caracteres, en lugar de 3 o 6, que supongo que estaba buscando.Pyth ,
177173162142 bytesAquí hay una versión sin los mecanismos de compresión de cadenas de Pyth (también conocido como seguro para copiar y pegar):
Pruébalo en línea!
Esto terminó siendo muy largo porque traté de ser lo más pedante posible con las expresiones regulares. Traté de comprimir todas las cadenas posibles, pero la mayoría de ellas no se hicieron más pequeñas o no se pudieron pegar en TIO correctamente.
Explicación:
fuente
Perl 5
-p
,152145 bytes@ValueInk ahorra 7 bytes
Pruébalo en línea!
fuente
( \S+ )(Code Golf)\b/$2$1Coding
ahorra 2 bytes. También la última expresión regular puede terminar con solo un en\b
lugar de(?=\s|$)
\s
debería ser\W
en su lugar, de lo contrario falla este caso (-
es un carácter no alfanumérico, por lo que se debe aplicar la sustitución).Java 8, 192 bytes
Puerto de la respuesta de Retina de @Neil , ¡así que asegúrate de votarlo!
Pruébalo en línea.
fuente