¡EL 22 DE OCTUBRE ES EL DÍA INTERNACIONAL DE BLOQUEO DE MAYÚSCULAS ! Desafortunadamente, algunos no reconocen la gloria del bloqueo de mayúsculas. Dicen que parece "desagradable" o "como gritar" o alguna tontería. PARA CONFORMAR CON ESTAS QUEJAS OBVIAMENTE ILÓGICAS E INANES, POR FAVOR ESCRIBA UN PROGRAMA QUE CONVIERTE EL TEXTO NORMAL EN TEXTO "SENSIBLE" O "RAZONABLE" PARA HACER QUE LA GENTE DEJEN DE QUEJARSE.
Descripción
La entrada y la salida de su solución serán cadenas que contienen solo caracteres ASCII imprimibles.
La cadena de entrada contendrá cero o más ejecuciones de bloqueo de mayúsculas . Una ejecución de bloqueo de mayúsculas (o CLR para abreviar) se define de la siguiente manera:
El CLR no debe contener letras minúsculas (
a-z
), excepto como el primer carácter de una palabra .- Una palabra , para los propósitos de este desafío, es una secuencia de no espacios. Así,
PPCG
,correcthorsebatterystaple
, yjkl#@_>00()@#__f-023\f[
son todos considerados palabra s.
- Una palabra , para los propósitos de este desafío, es una secuencia de no espacios. Así,
El CLR también debe contener al menos un espacio; por lo tanto, debe tener al menos dos palabras s.
Cada una de las palabras s en el CLR debe contener al menos dos letras (
A-Za-z
).- Tenga en cuenta que esto se refiere al CLR tomado por sí mismo, sin ningún carácter circundante que no haya sido incluido en el CLR. Por ejemplo, no es un CLR porque la cadena por sí sola tiene la palabra s con menos de dos letras.
foO Bar
O B
- Tenga en cuenta que esto se refiere al CLR tomado por sí mismo, sin ningún carácter circundante que no haya sido incluido en el CLR. Por ejemplo, no es un CLR porque la cadena por sí sola tiene la palabra s con menos de dos letras.
Los CLR deben analizarse "con avidez", es decir, siempre debe encontrar los CLR más largos posibles.
Una vez que haya identificado todos los CLR en la cadena de entrada, cambie el caso de todas las letras dentro de los CLR y envíe la cadena resultante.
Casos de prueba
La primera línea es de entrada y la segunda es de salida. Las partes en negrita de la entrada son subcadenas que se consideran CLR.
CAPS LOCK IS THE BEST!
caps lock is the best!
I really LOVE pROGRAMMING pUZZLES AND cOde Golf!
I really love Programming Puzzles and Code Golf!
This is a challenge on PPCG. This is a test CASE. TEST
This is a challenge on PPCG. This is a test case. test
LorEM iPSUM DOLoR sIT amet, conSECTETur ADIPISciNG eLIT. MAECENAS iD orci
Lorem Ipsum doloR sIT amet, conSECTETur ADIPIScing Elit. maecenas Id orci
;'>}{/[]'"A*(389971(*(#$&B#@*(% c'>#{@D#$! :,>/;[e.[{$893F
;'>}{/[]'"a*(389971(*(#$&b#@*(% C'>#{@d#$! :,>/;[e.[{$893F
iT'S cAPS lOCK DAY!!! cELebraTE THis WONDERFUL key
It's Caps Lock day!!! Celebrate this WONDERFUL key
aBcDE fGHIj KLmNO pQrST (uVwXY) ZZ___Zz__Z
aBcde Fghij KLmno PqrST (uVwxy) zz___zz__Z
#aA# aA
#aA# aA
Reglas
Puede suponer que la entrada nunca contendrá dos o más espacios en una fila, y que nunca contendrá un espacio inicial o final.
20% de bonificación (multiplique la longitud de su código por .8) si todo su código es un CLR. ;) (principalmente solo por diversión, ya que es poco probable que la presentación ganadora tenga este bono)
Este es el código de golf , por lo que gana el código más corto en bytes.
PPCG. T
contiene un espacio)Respuestas:
CJam,
100868381 bytesPruebe este violín en el intérprete de CJam o verifique todos los casos de prueba a la vez .
Algoritmo
Identifique el CLR más largo posible que comienza con el primer carácter.
Si existe, cambie su caso, imprímalo y quítelo desde el principio de la cadena.
De lo contrario, elimine un solo carácter desde el principio de la cadena e imprímalo sin modificaciones.
Si quedan más caracteres, regrese al paso 1.
Cómo funciona
fuente
Perl,
968280 bytesPasa todas las pruebas. Asume entrada de
STDIN
, imprime aSTDOUT
.Cómo funciona:
configurar una expresión regular (
$y
) que coincidahacer coincidir múltiples instancias de cadenas separadas por espacios que coinciden
$y
, usars///
para invertir mayúsculas y minúsculasEstoy seguro de que hay margen de mejora. Si hay una manera de deshacerse de todo el
join-map-split
acuerdo, aún puede existir la posibilidad de calificar para el bono :)fuente
a-z
lugar de[:lower:]
. Además,-pe
generalmente se cuenta como 1 byte y las comillas simples como cero bytes.Javascript, 193
Explicación:
fuente