Le but est, après avoir pris une chaîne comme entrée, de dupliquer chaque lettre latine et de "basculer" sa casse (c.-à-d. Que les majuscules deviennent des minuscules et vice-versa).
Exemple d'entrées et de sorties:
Input Output
bad bBaAdD
Nice NniIcCeE
T e S t Tt eE Ss tT
s E t sS Ee tT
1!1!1st! 1!1!1sStT!
n00b nN00bB
(e.g.) (eE.gG.)
H3l|@! Hh3lL|@!
L'entrée consiste en symboles ASCII imprimables.
Vous ne devez pas dupliquer les lettres non latines, les chiffres, les caractères spéciaux.
Réponses:
Gelée, 5 octets
Essayez-le en ligne!
Comment ça marche
la source
Python,
56 à54 octetsTestez-le sur Ideone .
la source
*
a une priorité plus élevée que+
, elle n'affecte donc que lec
cas avec swappé.JavaScript ES6,
70686664 octets2 octets sauvés grâce à @ Kevin Lau - pas Kenny
2 octets sauvés grâce à @ Cᴏɴᴏʀ O'Bʀɪᴇɴ
Explication
Cela utilise vraiment un hacky:
quel non-golf est:
l < "a"
Vérifie fondamentalement si le point de code de la lettre est inférieur au point de code dea
(donc en majuscule). Si c'est le cas, il fera ceto + Low + erCase
qui est devenul['toLowerCase']()
et rendra le caractère minuscule.`
les guillemets permettent le formatage de chaîne, donc vous pouvez essentiellement penser àcomme:
"to" + (l<"a" ? "Low" : "Upp") + "erCase"
qui génère la fonction à appeler (place la chaîne en majuscule ou en minuscule). Nous mettons cela entre crochets,[ ... ]
ce qui nous permet d'accéder à une propriété étant donné son nom sous forme de chaîne. Cela retourne la fonction appropriée et ensuite nous l'appelons simplement.la source
/[A-Z]/gi
est une regex plus courte: 3to${l<"a"?"Lower":"Upper"}Case
toto${l<"a"?"Low":"Upp"}erCase
l[`to${l<"a"?"Low":"Upp"}erCase`]()
Je pense que nous avons une nouvelle définition du mal.Rubis,
3733 (30 +-p
drapeau) octetsswapcase
à la rescousse! Sorte de. -4 octets de @Lynn.la source
gsub(/[a-z]/i){$&+$&.swapcase}
plus lep
drapeau est 31 octets.p
drapeau est donc(space)-p
3 octets.C,
6360 octetsUtilise le fait que
'a' XOR 32 == 'A'
, etc.Trois octets sauvés grâce à FryAmTheEggman.
la source
s++
dans le dernierputchar
(&&putchar(32^*s++)
) pour sauver un octet&&
par*
, n'est-ce pas?&&
du court-circuitage.f(char*s){isalpha(putchar(*s))&&putchar(32^*s);*s&&f(1+s);}
récursif?f(char*s){*s&&f(1+s,isalpha(putchar(*s))&&putchar(32^*s));}
récursif?CJam, 11 octets
Testez-le ici.
Explication
la source
Pyth , 7 octets
Suite de test .
la source
Python 3.5,
6056 octets:Un programme complet. Je vais essayer de jouer plus au golf.
Essayez-le en ligne! (Idéone)
la source
Haskell, 73 octets
la source
Cheddar ,
118 à104 octetsPremière vraie réponse au cheddar !!! C’est beaucoup moins décisif que je ne le pensais…;
Fonctionne avec la version 1.0.0-beta.9 , non concurrente.
Comme vous pouvez le constater, je n’ai pas conçu le cheddar pour devenir golfy: /
Ungolfed:
Usage:
Mise à jour: 14/07/16 J'ai terminé les ternaires, ce qui en fait un octet de 84 octets.
Cheddar, 84 octets
fonctionne à partir de la version v1.0.0-beta.14
la source
Retina,
282721 octetsCe sont des onglets, pas des espaces.
Essayez-le en ligne
Merci à tous pour les suggestions.
la source
[A-Za-z]
->i`[A-Z]
_
. Je vais utiliser des onglets pour pouvoir tester tous les tests en même temps.C,
8780Passez une chaîne en entrée
f()
et la sortie est écrite dans STDOUT. La chaîne n'est pas modifiée.la source
sed, 30 octets
29 octets code + 1 octet paramètre
-r
Usage:
la source
J,
3129 octetsExplication
la source
Haskell,
121, 101, 85,82la source
isLower
est plus court que la construction avecelem
, pour 5 octets de plus.>>=
estconcatMap
(ouconcat.map
) avec des arguments retournées:f n = n >>= (\x->if isAlpha x then[x,r x]else[x])
. Vous pouvez aller sans point, omettre le nom de la fonction et remplacer la définition def
avec(>>= \x->if isAlpha x then[x,r x]else[x])
.otherwise
vous pouvez utiliser n'importe quelle expression qui évalue àTrue
, par exemple1<2
. Vous pouvez remplacer laif .. then .. else
avec une compréhension de la liste:\x->[x]++[g x|isAlpha x]
. Oh, et il y a un bug: le secondtoUpper
dansg
doit êtretoLower
.[x]++
estx:
.Perl, 36 octets (
-n
drapeau 35 + )(
-p
tag nécessaire)(-2 octets grâce à @Dom Hasting)
Explication courte:
ord
renvoie la valeur numérique d'un caractère.ord(any lower case) >= 97
, Etord(any upper case) <= 90)
.Courir avec :
la source
/i
ou votre expression rationnelle correspondra à plusieurs points de code entre les lettres.Ruby,
31 + 1 = 3230 + 1 = 31 octetsAvec le
-p
drapeau, courirProfite du fait que
swapcase!
renverranil
n'importe quoi sauf une lettre ASCII, ce qui se traduira par une chaîne vide lorsqu'il sera renvoyé en dehors dugsub
bloc. @ Jordan a sauvegardé un octet en capturant le caractère précédent dans un regard.la source
//
puis utiliser$`[-1]
est intelligent.gsub(/(?<=(.))/){$1.swapcase!}
. Même concept de base, alors n'hésitez pas à l'utiliser..swapcase!
. (Je veux dire, enlevez le!
.)R,
1911871681569899 octets99 octets dus à des améliorations de Giuseppe et MickyT .
la source
readline()
peut être utilisé, mais cela coûtera un octetscan
fonctionnera avec les entrées placées entre guillemets (comme c'est souvent le cas pour les arguments de ligne de commande dans d'autres langues)05AB1E , 7 octets
Code:
Explication:
Utilise le codage CP-1252 . Essayez-le en ligne!
la source
Pyke,
8 à6 octetsEssayez-le ici!
la source
V , 21 octets
Essayez-le en ligne!
Trop d'octets ...
la source
En fait, 8 octets
Essayez-le en ligne!
Explication:
la source
MATL,
11 à9 octetsEssayez-le en ligne
Explication
la source
Perl,
282221 octets (20 +-p
drapeau)la source
$"
place de' '
, mais je n'ai pas encore testé.Stax ,
7 à6 octetsMerci à @recursive pour un octet enregistré!
Exécutez-le et corrigez-le sur staxlang.xyz! (lien est à la version décompressée)
Décompressé (7 octets):
Explication:
la source
u
place:g
. Il obtiendra tous les éléments uniques dans un tableau, ce qui est exactement ce que vous voulez dans ce cas. Autre que cela, cela semble bien joué au golf.123
. Vous devrez peut-être modifier le format de toutes les entrées (c.-à-d. Les citer). Le lien est également brisé. Vous devez remplacerm=11
parm=2
. Il y a un bouton de génération de PPCG sur staxlang.xyz, vous pouvez donc utiliser celui-ci.Python, 59 octets
Édité pour corriger les caractères répétés non alphabétiques
la source
Julia, 40 octets
Essayez-le en ligne!
la source
not s is (list comprehension)
OK, Julia ...PHP 4.1, 57 octets
Ce code suppose l'accès via un serveur Web (Apache, par exemple), en utilisant la configuration par défaut.
Vous pouvez passer la chaîne en envoyant la clé
S
par tout moyen (POST
,GET
,COOKIE
,SESSION
...).la source
C #,
8271 octetsC # lambda où se trouvent l’entrée et la sortie
string
. Essayez-le en ligne .11 octets grâce au truc @Lynn.
la source
Common Lisp (Lispworks), 262 octets
ungolfed:
Usage:
la source