LE 22 OCTOBRE EST LA JOURNÉE INTERNATIONALE DE SERRURE DES CAPSULES ! MALHEUREUSEMENT, CERTAINS NE RECONNAISSENT PAS LA GLOIRE DE LA SERRURE TOUT-PUISSANT. ILS DISENT QU'IL SEMBLE "OBNOXIEUX" OU "COMME CRIER" OU QUELQUE SENS. AFIN DE SE CONFORMER À CES PLAINTES ILLOGIQUES ET INNÉES, VEUILLEZ M'ÉCRIRE UN PROGRAMME QUI TRANSFORME LE TEXTE NORMAL EN TEXTE "SENSIBLE" OU "RAISONNABLE" POUR FAIRE ARRÊTER LES PLAINTES.
La description
L'entrée et la sortie de votre solution seront toutes deux des chaînes contenant uniquement des caractères ASCII imprimables.
La chaîne d'entrée contiendra zéro ou plusieurs exécutions de verrouillage des majuscules . Un cycle de verrouillage des majuscules (ou CLR pour faire court) est défini comme suit:
Le CLR ne doit contenir aucune lettre minuscule (
a-z
), sauf comme premier caractère d'un mot .- Un mot , pour l'application de ce défi, est une séquence de non-espaces. Ainsi,
PPCG
,correcthorsebatterystaple
etjkl#@_>00()@#__f-023\f[
sont tous considérés comme mot s.
- Un mot , pour l'application de ce défi, est une séquence de non-espaces. Ainsi,
Le CLR doit également contenir au moins un espace; par conséquent, il doit s'agir d'au moins deux mots .
Chacun des mots s du CLR doit contenir au moins deux lettres (
A-Za-z
).- Notez que cela fait référence au CLR pris seul, sans aucun caractère environnant qui pourrait ne pas avoir été inclus dans le CLR. Par exemple, n'est pas un CLR car la chaîne en elle-même a un mot s avec moins de deux lettres.
foO Bar
O B
- Notez que cela fait référence au CLR pris seul, sans aucun caractère environnant qui pourrait ne pas avoir été inclus dans le CLR. Par exemple, n'est pas un CLR car la chaîne en elle-même a un mot s avec moins de deux lettres.
Les CLR doivent être analysés «avec avidité», c'est-à-dire que vous devez toujours trouver les CLR les plus longs possibles.
Une fois que vous avez identifié tous les CLR dans la chaîne d'entrée, permutez la casse de toutes les lettres à l'intérieur des CLR et sortez la chaîne résultante.
Cas de test
La première ligne est entrée et la seconde est sortie. Les parties en gras de l'entrée sont des sous-chaînes qui sont considérées comme des 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
Règles
Vous pouvez supposer que l'entrée ne contiendra jamais deux ou plusieurs espaces d'affilée et qu'elle ne contiendra jamais d'espace de début ou de fin.
Bonus de 20% (multipliez la longueur de votre code par 0,8) si tout votre code est un CLR. ;) (surtout juste pour le plaisir, car il est peu probable que la soumission gagnante ait ce bonus)
Il s'agit de code-golf , donc le code le plus court en octets l'emporte.
PPCG. T
contient un espace)Réponses:
CJam,
100868381 octetsEssayez ce violon dans l'interpréteur CJam ou vérifiez tous les cas de test à la fois .
Algorithme
Identifiez le CLR le plus long possible qui commence par le premier caractère.
S'il existe, échangez son boîtier, imprimez-le et supprimez-le du début de la chaîne.
Sinon, supprimez un seul caractère au début de la chaîne et imprimez-le tel quel.
S'il reste plus de caractères, revenez à l'étape 1.
Comment ça marche
la source
Perl,
968280 octetsRéussit tous les tests. Suppose l'entrée de
STDIN
, imprime versSTDOUT
.Comment ça marche:
configurer un regex (
$y
) qui correspondfaire correspondre plusieurs instances de chaînes séparées par des espaces qui correspondent
$y
, utilisers///
pour inverser la casseJe suis sûr qu'il y a place à amélioration. S'il existe un moyen de se débarrasser de toute l'
join-map-split
affaire, il peut toujours y avoir une chance de se qualifier pour le bonus :)la source
a-z
au lieu de[:lower:]
. En outre,-pe
est généralement compté comme 1 octet et les guillemets simples comme zéro octet.Javascript, 193
Explication:
la source