Certains de vos employés ont cassé des clés de verrouillage et vous êtes trop bon marché pour les remplacer. Aidez-les en créant le programme le plus court possible pour corriger leur travail! Convertissez simplement chaque caractère d'une chaîne donnée de majuscules en minuscules et vice-versa ... mais il y a une torsion!
Vous êtes également très excité pour Noël! Vous allez donc laisser un minuscule "bug" qui ne corrige pas les lettres qui se trouvent dans des séquences de Christmas
(insensible à la casse).
Contribution
Pour l'entrée, vous utiliserez une seule chaîne (ou tableau d'octets) qui peut contenir des sauts de ligne et des ascii entre 0x20 et 0x7e ( -
~
). Vous n'avez pas à vous soucier des retours chariot ou de tout autre caractère dans la chaîne.
Sortie
La sortie ne doit contenir que la chaîne fournie avec les caractères majuscules et minuscules échangés (et le bug de Noël bien sûr!). Il peut contenir jusqu'à un espace de fin supplémentaire.
Bug de Noël
Expliquons cela avec un exemple:
Input: i CAN HARDLY WORK LIKE THIS please GET ME A NEW KEYBOARD FOR cHRISTMAS
Output: I Can HaRdly work lIke thiS PLEASE geT Me A new keyboard for ChriStmas
can
contient "c" qui est la première lettre de Noël, donc cela ne change pas. La lettre suivante Christmas
est « h », qui est en hardly
(qui contient aussi le « r »), de sorte que n'est pas changé, etc. Christmas
elle - même n'a qu'une seule lettre inchangée car au moment où le cours de code là - bas, il est actuellement à la recherche de "s", pas "c".
Une fois la séquence trouvée, elle devrait recommencer à nouveau à "c" et recommencer l'itération Christmas
. Ainsi ChristmasChristmas
serait laissé inchangé.
Cas de test
Input: Hello World!
Output: hELLO wORLD!
Input: I like pie :)
Output: i LIKE PIE :)
Input: hELP my KeYboarD
iS BROKEN
Output: Help MY kEyBOARd
Is broken
Input: cHRISTMAS IS COMING REALLY SOON!
Output: cHRISTMAS is Coming really soon!
Input: C is the first letter in cHRISTMAS
Output: C IS ThE FIrST LETTER iN ChriSTMAS
Gagnant
Il s'agit de code-golf, donc la réponse la plus courte l'emporte!
Christmas
séquentiellement, donc "h" est ignoré jusqu'à ce qu'il trouve "c", puis il recherche "h", puis "r", etc.Réponses:
05AB1E , 16 octets
Merci à Emigna d' avoir sauvé un octet et corrigé un bug!
Explication:
Utilise l' encodage CP-1252 . Essayez-le en ligne!
la source
u
cela devrait fonctionner.V ,
38, 36 octetsEssayez-le en ligne! (contient entrée et sortie attendue pour comparaison)
Quand j'ai vu cela pour la première fois, j'ai pensé que ce serait extrêmement facile. En fait, s'il n'y avait pas le bug « Noël », ce serait tout simplement 2 octets:
V~
. Le bug de Noël le rend beaucoup plus difficile, pour une réponse très hacky.Comme d'habitude, voici un hexdump:
la source
PHP,
113110102 octetsprend l'entrée du premier argument de ligne de commande. Courez avec
-r
.panne
la source
MATL ,
3630 octetsLes chaînes avec des sauts de ligne doivent être définies en concaténant avec le code ASCII
10
(voir l'exemple dans le lien avec les cas de test).Essayez-le en ligne! Ou vérifiez tous les cas de test .
Explication
la source
Pyke,
3125 octetsEssayez-le ici!
la source
\n
et entourez l'entrée"
alors ouiPerl 6 , 84 octets
la source
C # 197 octets
Je ne vais pas gagner avec ça, mais j'espère que la plus petite implémentation C # qui fonctionne ...
Explication:
la source
JavaScript,
12211811410710493 bytesla source
k!=c?k:c.toUpperCase()
pour vous faire économiser quelques octets?Perl 6 , 80 octets
Essayez-le
la source
my $i=0;
soit légale. Et je ne serais pas surpris s'il y avait plus d'erreurs de syntaxe liées aux espaces blancs.$/ eq $/.lc
plutôt que$/.lc eq $/
pour pouvoir supprimer l'espace avanteq
.Java 7, 200 octets
Moche, mais ça marche .. Peut certainement être joué sans aucun doute plus .. Je suis rouillé ..
Non golfé:
Code de test:
Essayez-le ici.
Sortie:
la source
Python 100 octets
la source
Ruby, 63 + 1 = 64 octets
Utilise le
-p
drapeau.la source
Caractères C # 239
version plus explicite:
c'est une solution assez naïve, et peut probablement être améliorée (peut-être pouvons-nous autoriser une conversion implicite en char?).
il suppose être à l'intérieur d'une fonction, lit à partir de la console (stdin) et y écrit (stdout).
edit: Char.IsUpper (s [j]) est 2 octets plus long que s [j]> 64 && s [j] <91, Char.ToUpper est plus long que ma version aussi.
la source
Haskell,
222207 octetsmis à jour:
Comment ça marche:
la source