Inverse une chaîne tout en conservant la capitalisation aux mêmes endroits

28

Le but ici est de simplement inverser une chaîne, avec une torsion:
Gardez la capitalisation aux mêmes endroits.

Exemple d'entrée 1: Hello, Midnightas
Exemple de sortie 1:SathginDim ,olleh

Exemple Entrée 2: .Q
Sortie Exmaple 2:q.

Règles :

  • Sortie vers STDOUT, entrée depuis STDIN
  • Le gagnant sera choisi le 13 juillet sur GMT + 3 12:00 (une semaine)
  • L'entrée ne peut être constituée que de symboles ASCII, ce qui facilite la tâche des programmes qui n'utilisent aucun codage contenant des caractères non ASCII.
  • Toute ponctuation se retrouvant dans une position où il y avait une majuscule doit être ignorée.

la source
Est-ce avec ou sans surimpression? Est-ce avec ou sans chaîne?
"Toute ponctuation se retrouvant dans une position où il y avait une majuscule doit être ignorée." , le deuxième exemple n'est-il pas incompatible avec cette règle?
Stefano Sanfilippo
Il est conforme à la règle car les signes de ponctuation n'ont pas de variation en majuscules.

Réponses:

7

TCC - 4 octets

<>ci

Essayez-le en ligne!

Explication:

     - output is implicit in TCC
<>   - reverse string
  c  - preserve capitalization
   i - get input
brianush1
la source
9
Est-ce que cela a fonctionné avec une version de tcc.luaavant que le défi ne soit publié? Étant donné que vous avez récemment ajouté des commandes pour résoudre trois autres défis, je suppose que non. Si votre réponse nécessite une version de la langue postérieure au défi, vous devez la marquer comme non concurrente dans l'en-tête. Je supprimerai mon downvote lorsque vous ajouterez l'étiquette ou apporterez la preuve que votre code a fonctionné dans une version antérieure.
Dennis
16

Python, 71 octets

lambda s:''.join((z*2).title()[c.isupper()-1]for c,z in zip(s,s[::-1]))

Essayez-le en ligne

-3 octets de Ruud, plus l'inspiration pour 2 autres.

-4 octets de plus de FryAmTheEggman

Mego
la source
lambda s:''.join([z.lower(),z.upper()][c.isupper()]for c,z in zip(s,s[::-1]))est trois octets plus court
Arfie
1
@Ruud Merci! Déplacer l'appel de fonction vers l'extérieur de la sélection de liste vous fait économiser 2 de plus!
Mego
2
(z*2).title()[c.isupper()-1]devrait marcher.
FryAmTheEggman
6
Vous pourriez gagner un autre octet avec ~c.isupper()au lieu dec.isupper()-1
Lulhum
Cela n'obtient pas d'entrée de stdin ou de sortie vers stdout ...
ArtOfWarfare
13

Python 2, 73 octets

Puisque les règles spécifient que l'entrée est ascii:

lambda s:''.join([z.lower,z.upper]['@'<c<'[']()for c,z in zip(s,s[::-1]))

Tout le mérite revient à @Mego, mais je n'avais pas la réputation de simplement commenter sa réponse.

Lulhum
la source
Pouvez-vous utiliser la valeur ascii de '@' et '[' pour gagner 2 octets?
aloisdg dit Réintégrer Monica le
Malheureusement non, je devrais utiliser ord (c), la comparaison d'entiers et de chaînes ne fonctionne pas très bien en Python
Lulhum
À peu près ce que j'ai eu, mais vous étiez le premier +1
orlp
13

Perl, 31 + 2 ( -lp) = 33 octets

Cette solution vient de @Ton Hospel (13 octets de moins que la mienne).

s%.%(lc$&gt$&?u:l)."c chop"%eeg

Mais vous en aurez besoin let vous pallumerez. Pour l'exécuter:

perl -lpe 's%.%(lc$&gt$&?u:l)."c chop"%eeg'
Dada
la source
5
Bonjour et bienvenue chez PPCG! C'est bien!
NoOneIsHere
Très beau effectivement! Je n'ai jamais utilisé l' -aautosplit, je pense que j'aurais pu l'utiliser plusieurs fois dans le passé! Je dois m'en souvenir! Je pense que vous pouvez enregistrer un autre octet en utilisant map...,...au lieu de ce map{...}...que vous avez $Fau début! :)
Dom Hastings
Code perl -lpe 's%.%(lc$&gt$&?u:l)."c chop"%eeg
abrégé
Notez que cela -aest sous-entendu par-F
Ton Hospel
@TonHospel wow, merci beaucoup et bravo, c'est un code assez sympa! À propos -a(et -n) d'être impliqué par -F, je l'ai lu il y a quelque temps sur perlrun, je l'ai essayé, mais cela n'a pas fonctionné; mais je l'ai réessayé maintenant et cela fonctionne bien, donc je suppose que j'ai fait quelque chose de mal à l'époque. Merci.
Dada
9

Pyth, 13 11 10 9 octets

Merci à @FryAmTheEggman de me l'avoir rappelé Vet à @LeakyNun pour un autre octet.

srV_Qm!/G

Essayez-le en ligne! maintenant sur mobile, mise à jour du lien un peu

PurkkaKoodari
la source
srV_Qm!rId0a 11 ans, mais je pense qu'il pourrait être possible de raccourcir cette carte ...
FryAmTheEggman
@FryAmTheEggman Supprimez le det vous avez enregistré un octet.
Leaky Nun
srV_Qm!/Gdevrait sauver un octet
Leaky Nun
8

Python, 66 octets

f=lambda s,i=0:s[i:]and(s[~i]*2).title()[~('@'<s[i]<'[')]+f(s,i+1)

Se reproduit à travers les indices i, en prenant le personnage s[~i]de l'arrière et le cas de s[i]l'avant. Être capital est vérifié comme se situant dans la gamme contiguë @ABC...XYZ[. Crédit à FryAmTheEggman de l' (_*2).title()astuce.

xnor
la source
5

Rétine , 75 67 65 octets

Le nombre d'octets suppose un codage ISO 8859-1.

$
±·$`
O$^`\G[^·]

s{T`L`l`±.
T01`l`L`±.*·[A-Z]
±·

±(.)
$1±
·.
·

Essayez-le en ligne! (La première ligne active une suite de tests avec plusieurs cas de test séparés par un saut de ligne.)

Martin Ender
la source
5

JavaScript (ES6), 95 83 octets

s=>[...t=s.toLowerCase()].reverse().map((c,i)=>s[i]==t[i]?c:c.toUpperCase()).join``

Edit: enregistré un énorme 12 octets grâce à @ edc65.

Neil
la source
s => r = [... l = s.toLowerCase ()]. ​​reverse (). map ((c, i) => s [i]! = l [i]? c.toUpperCase (): c) .join`` -10
edc65
@ edc65 Merci! (Remarque: le r=n'est pas nécessaire.)
Neil
5

Pyke, 11 10 9 octets

_FQo@UhAl

Essayez-le ici!

_         -   reversed(input)
 F        -  for i in ^
   o      -      o+=1
  Q @     -     input[^]
     Uh   -    ^.is_upper()+1
       Al -   [len, str.lower, str.upper, ...][^](i)
          - "".join(^)
Bleu
la source
Cela m'a d'abord donné une erreur, puis en même temps la bonne réponse. i.imgur.com/uTcH27F.png
Cela arrive toujours, vous pouvez cliquer sur désactiver les avertissements pour désactiver cela.
Blue
Aha, d'accord. Désolé, je ne suis pas bon avec Pyke
Peut-être parce que je suis le seul à l'utiliser
Blue
4

05AB1E , 19 16 15 13 octets

Merci à Emigna pour avoir économisé 3 octets!

Je vais probablement me faire battre par Jelly ... Code:

Âuvy¹Nè.lil}?

Utilise l' encodage CP-1252 . Essayez-le en ligne! .

Adnan
la source
S.l_v¹lRNèyiu}?est 1 octet plus court
Emigna
@Emigna Wow merci! C'est très intelligent.
Adnan
Âuvy¹Nè.lilë}?a 14 ans. Je suis content de pouvoir vous aider pour une fois :)
Emigna
@Emigna C'est incroyable! Très belle utilisation de bifurcate :).
Adnan
Ruvy¹Nè.lil}?réellement. Je n'ai pas utilisé la bifurcation et j'ai oublié de retirer le reste. Donc 13.
Emigna
4

MATL , 13 octets

PktGtk<)Xk5M(

Essayez-le en ligne!

Pk      % Implicit inpput. Flip, lowercase
t       % Duplicate
Gtk<    % Logical index of uppercase letters in the input string
)       % Get letters at those positions in the flipped string
Xk      % Make them uppercase
5M(     % Assign them to the indicated positions. Implicit display
Luis Mendo
la source
3

J , 30 octets

(={"_1 toupper@]|.@,.])tolower

Ne prend pas en charge non ASCII

miles
la source
"toupper" "tolower" ne pouvez-vous pas utiliser des points de code pour le raccourcir?
Leaky Nun
@LeakyNun Peut-être mais je ne peux pas vraiment dire avec certitude
miles
3

Brachylog , 28 octets

@lr:?z:1ac.
h@u.,@A@um~t?|h.

Explication

  • Prédicat principal:

    @lr                 Reverse the lowercase version of the Input
       :?z              Zip that reversed string with the Input
          :1a           Apply predicate 1 to each couple [char i of reverse, char i of Input]
             c.         Output is the concatenation of the result
    
  • Prédicat 1:

    h@u.,               Output is the uppercase version of the first char of Input
         @A@um~t?       The second char of Input is an uppercase letter
                 |      Or
                  h.    Output is the first char of Input
    
Fatalize
la source
3

TSQL, 175 octets

Golfé:

DECLARE @ varchar(99)='Hello, Midnightas'

,@o varchar(99)='',@i INT=0WHILE @i<LEN(@)SELECT
@i+=1,@o+=IIF(ascii(x)=ascii(lower(x)),lower(y),upper(y))FROM(SELECT
SUBSTRING(@,@i+1,1)x,SUBSTRING(@,len(@)-@i,1)y)z
PRINT @o

Non golfé

DECLARE @ varchar(99)='Hello, Midnightas'

,@o varchar(99)=''
,@i INT=0

WHILE @i<LEN(@)
  SELECT @i+=1,@o+=IIF(ascii(x)=ascii(lower(x)),lower(y),upper(y))
  FROM
    (SELECT SUBSTRING(@,@i+1,1)x,SUBSTRING(@,len(@)-@i,1)y)z

PRINT @o

Violon

t-clausen.dk
la source
coder en dur l'entrée?
chat
@cat c'est le seul moyen. Dans sql, il n'y a pas de commande STDIN ou d'entrée. Si vous regardez stackoverflow, c'est ainsi que toutes les questions sont résolues - vous pouvez également consulter mes autres réponses sur codegolf
t-clausen.dk
Oh, oui, je me souviens certainement d'avoir eu cette conversation avec un utilisateur SQL avant (vous, peut-être). C'est bizarre, mais ça devrait aller.
chat
1
@cat nous n'avons pas eu cette conversation auparavant, mais vous m'avez aidé avec un décompte d'octets plus tôt
t-clausen.dk
3

En fait, 25 octets

;`úíuY"ùû"E£`M@ùRZ`i@ƒ`MΣ

Essayez-le en ligne!

Explication:

;`úíuY"ùû"E£`M@ùRZ`i@ƒ`MΣ
;                          create a copy of the input
 `úíuY"ùû"E£`M             for each character in input:
  úíuY                       0-based index in lowercase English letters, or -1 if not found, increment, boolean negate (1 if uppercase else 0)
      "ùû"E£                 `û` if the character is lowercase else `ù` (str.lower vs str.upper)
              @ùRZ         make the other copy of the input lowercase, reverse it, and zip it with the map result
                  `i@ƒ`M   for each (string, function) pair:
                   i@ƒ       flatten, swap, apply (apply the function to the string)
                        Σ  concatenate the strings
Mego
la source
3

Haskell, 83 80 75 71 octets

La façon la plus simple à laquelle je pouvais penser.

import Data.Char
f a|isUpper a=toUpper|1>0=toLower
zipWith f<*>reverse
flawr
la source
Si vous échangez les paramètres de (#), kpeut être réécrit dans un style sans point k=reverse>>=zipWith(#)
:,
La deuxième ligne peut être sans point dans bas f a|isUpper a=toUpper|1>0=toLower, bien que cela soit en conflit avec l'amélioration de Flonk.
xnor
Vous pouvez utiliser la version xnor de fet réécrire Flonk de kà zipWith f<*>reverse.
nimi
N'avez-vous pas besoin d'éliminer le paramètre s?
Lynn
Oui, et vous êtes également autorisé à couper le k=.
xnor
3

PowerShell, 154 , 152 , 99 , 86 octets

Merci @TimmyD de m'avoir sauvé 47 octets (j'en ai également économisé 6 supplémentaires)

Merci @TessellatingHeckler d'avoir enregistré 13 octets supplémentaires.

Dernier:

param($a)-join($a[$a.length..0]|%{("$_".ToLower(),"$_".ToUpper())[$a[$i++]-in65..90]})

Original:

param($a);$x=0;(($a[-1..-$a.length])|%{$_=$_.tostring().tolower();if([regex]::matches($a,"[A-Z]").index-contains$x){$_.toupper()}else{$_};$x++})-join''

Formatage normal:

Dernier (semble meilleur que deux lignes à mon avis):

param($a)
-join($a[$a.length..0] | %{("$_".ToLower(), "$_".ToUpper())[$a[$i++] -in 65..90]})

Explication:

param($a)-join($a[$a.length..0]|%{("$_".ToLower(),"$_".ToUpper())[$a[$i++]-in65..90]})
param($a)
# Sets the first passed parameter to variable $a
         -join(                                                                      )
# Converts a char array to a string
               $a[$a.length..0]
# Reverses $a as a char array
                               |%{                                                  }
# Shorthand pipe to foreach loop
                                  ("$_".ToLower(),"$_".ToUpper())
# Creates an array of the looped char in lower and upper cases
                                                                 [$a[$i++]-in65..90]
# Resolves to 1 if the current index of $a is upper, which would output "$_".ToUpper() which is index 1 of the previous array

Original:

param($a)
$x = 0
(($a[-1..-$a.length]) | %{
    $_ = $_.tostring().tolower()
    if([regex]::matches($a,"[A-Z]").index -contains $x){
            $_.toupper()
        }else{
            $_
        }
        $x++
    }
) -join ''

La première affiche ici, était motivée parce que je vois rarement PowerShell, mais à 154 152 octets sur celui-ci ... je peux voir pourquoi! Toutes suggestions appréciées.

J'ai appris que je dois changer complètement ma façon de penser au golf dans le code et son plaisir!

ThePoShWolf
la source
Bonjour et bienvenue chez PPCG! C'est bien!
NoOneIsHere
Bienvenue chez PPCG! Ravi de voir un autre utilisateur PowerShell ici. Vous pouvez couper un peu en remplaçant le .tostring()par des guillemets et en utilisant la manipulation de nombres entiers ASCII plutôt que l'expression régulière. Essayez ce qui suit, pour 105 octets - param($a)-join($a[$a.length..0]|%{if(($x=$a[$i++])-le90-and$x-ge65){"$_".ToUpper()}else{"$_".ToLower()}}).
AdmBorkBork
Brillant! Nous pouvons rendre cela encore plus court en utilisant une plage au lieu de -le et -ge:param($a)-join($a[$a.length..0]|%{if(65..90-contains$a[$i++]){"$_".ToUpper()}else{"$_".ToLower()}})
ThePoShWolf
X-inYest plus court que Y-containsX, et vous pouvez changer votre ifpour que le faux opérateur ternaire obtienne 86 octets -param($a)-join($a[$a.length..0]|%{("$_".ToLower(),"$_".ToUpper())[$a[$i++]-in65..90]})
TessellatingHeckler
Mec, j'ai l'impression d'avoir raté beaucoup de tricks n'ayant jamais joué au golf auparavant. C'est presque comme réapprendre à coder!
ThePoShWolf
2

Dyalog APL , 12 octets

⌽f¨⍨⊢≠f←819⌶

819⌶ est la fonction de pliage du boîtier

f←parce que son nom est long, nous l'assignons à f

⊢≠f Booléen où le texte diffère du texte en minuscules

f¨⍨ utilisez cela (1 signifie majuscule, 0 signifie minuscule) pour plier chaque lettre ...

... du texte inversé

Gère les fichiers non ASCII conformément aux règles du consortium Unicode.

Adam
la source
2

Raquette, 146 octets

(λ(s)(build-string(string-length s)(λ(n)((if(char-upper-case?(string-ref s n))char-upcase char-downcase)(list-ref(reverse(string->list s))n)))))

La raquette est mauvaise à toute cette affaire de "golf".

Haussement Comme toujours, toute aide pour raccourcir cela serait très appréciée.

Steven H.
la source
2

Jolf, 21 octets

Essayez-le ici!

Μid?&γ._pXiS=pxHHpxγγ

Explication

Μid?&γ._pXiS=pxHHpxγγ
Μid                   (Μ)ap (i)nput with (d)is fucntion:
   ?        =pxHH     (H is current element) if H = lowercase(H)
    &γ._pXiS          and set γ to the uppercase entity in the reversed string
                 pxγ  lowercase γ
                    γ else, return γ
Conor O'Brien
la source
(d)is function... sacrifiez l'orthographe pour le golf!
Steven H.
2

Perl 6 , 29 octets

$_=get;put .flip.samecase($_)
Brad Gilbert b2gills
la source
2

C #, 86 85 octets

s=>string.Concat(s.Reverse().Select((c,i)=>s[i]>96?char.ToLower(c):char.ToUpper(c)));

AC # lambda où l'entrée et la sortie sont une chaîne. Vous pouvez l'essayer sur .NetFiddle .


Je suis mal à comprendre pourquoi je ne peux pas atteins convertir char.ToLower(c)à c+32. J'espère y remédier!

12 octets économisés grâce à @PeterTaylor ( c|32pour ajouter 32 à la valeur ascii cet c&~32pour soustraire 32). Le résultat serait de 72 octets (mais peut échouer sur un caractère non alpha).

s=>string.Join("",s.Reverse().Select((c,i)=>(char)(s[i]>96?c|32:c&~32)));
aloisdg dit Réintégrer Monica
la source
1
Ce serait c|32au lieu de c+32, mais cela ne fonctionnera pas avec les caractères non alpha.
Peter Taylor
@PeterTaylor Cela fonctionne très bien! Merci!
aloisdg dit Réintégrer Monica le
1

PHP, 128 octets

$s=$argv[1];$l=strrev($s);for($i=0;$i<strlen($s);++$i){echo(strtolower($s[$i])!==$s[$i]?strtoupper($l[$i]):strtolower($l[$i]));}

Je vais peut-être essayer de l'optimiser davantage, mais je vais le laisser tel quel pour l'instant.

MonkeyZeus
la source
1

Octave, 51 50 octets

@(s)merge(isupper(s),b=flip(toupper(s)),tolower(b))

@(s)merge(s>64&s<91,b=flip(toupper(s)),tolower(b))
Marco
la source
1

VIM, 46 octets

Ce serait trois octets g~Gsi nous n'avions pas besoin de lire depuis stdin ou d'écrire vers stdout, mais bon ...

vim -es '+normal! g~G' '+%print|q!' /dev/stdin

Pour tester cela, exécutez

echo "testString" | vim -es '+normal! g~G' '+%print|q!' /dev/stdin

Ceci est ma première soumission ici, je ne sais pas si ce genre de soumission est acceptable.

DoYouEvenCodeBro
la source
Sympa, j'adore jouer au golf à Vim! Cependant, ce programme n'inverse pas réellement la chaîne, il bascule simplement la capitalisation. Vous pouvez inverser la chaîne avec :se ri<cr>C<C-r>"mais vous devrez alors comprendre comment mettre en majuscule les bonnes lettres.
DJMcMayhem
@DrGreenEggsandIronMan Oh mec, j'ai complètement raté ça! Retour à la planche à dessin!
DoYouEvenCodeBro
1

Javascript (à l'aide d'une bibliothèque externe) (224 octets)

(s)=>{t=_.From(s);var cnt=t.Count();var caps=t.Select(x=>{return x.toUpperCase()===x&&x.toLowerCase()!==x}).ToArray(),i=-1;return t.AggregateRight((a,b)=>{i++;var c=caps[i];return c?a+b.toUpperCase():a+b.toLowerCase()},"");}

Avertissement: en utilisant une bibliothèque que j'ai écrite pour apporter LINQ de C # à Javascript

Image 1

applejacks01
la source
Appeler la personne qui a voté contre sans explication. Une raison pour ça?
applejacks01
Il est probable qu'ils voulaient également que vous comptiez la bibliothèque, bien que l'utilisation d'une bibliothèque externe soit entièrement dans les limites de la politique standard.
Addison Crump
1
Je ne suis pas downvoter, mais si vous utilisez une bibliothèque externe, mentionnez au moins le nom dans votre réponse, et pour une bibliothèque obscure, veuillez fournir un lien vers le référentiel.
n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳
1

Sed, 113 + 1 = 114 octets

Pourquoi? Parce que c'est amusant d'utiliser le mauvais outil pour faire les choses: P

Utilisation: Exécuter sed -rf file, saisir du texte et appuyer sur Ctrl+ D(envoyer EOF).

Golfé:

s/[A-Z]/\a\l&/g;s/^.*$/\f&\v/;:x;s/\f\a/\a\f/;s/\a\v/\v\a/;s/\f(.)(.*)(.)\v/\3\f\2\v\1/;tx;s/\f|\v//g;s/\a./\U&/g

Non golfé:

s/[A-Z]/\a\l&/g #Prepend all upper-case letters with a 
                #BEL ASCII character and make them lowercase
s/^.*$/\f&\v/   #Wrap text between a from feed (\f) and a vertical tab (\v)
                #These are used as markers

:x #Define a label named x

s/\f\a/\a\f/;s/\a\v/\v\a/ #Move BEL characters outside of the boundary, so they're not moved later
s/\f(.)(.*)(.)\v/\3\2\1/  #This part does the switching itself
                          #It grabs a character preceded by a form feed and another 
                          #one followed by a vertical tab and swaps them, while keeping the text in-between
                          #and replaces the marker \f and \v

tx             #Conditional jump (t) to label x
               #Jumps to the label x if the last substitution (s command) was successful 
s/\f|\v//g     #Delete markers
s/\a(.)/\u\1/g #Make letters preceded by a BEL upper-case
quelqu'un avec pc
la source
1

Java 7, 221 217 180 octets

void c(char[]s){int x=0,y=s.length-1;for(char t;x<y;s[x]=s(t,s[y]),s[y]=s(s[y],t),x++,y--)t=s[x];}char s(char a,char b){return(char)(64<a&a<91?96<b&b<123?b-32:b:64<b&b<91?b+32:b);}

Beaucoup d'octets enregistrés grâce à l' approche de @LeakuNun .

Cas non testés et testés:

Essayez-le ici.

class Main{
  void c(char[] s){
    int x = 0,
        y = s.length-1;
    for(char t; x < y; s[x] = s(t, s[y]),
                       s[y] = s(s[y], t),
                       x++,
                       y--){
       t = s[x];
    }
  }

  char s(char a, char b){
    return (char)(64 < a & a < 91
                    ? 96 < b & b < 123
                        ? b-32
                        : b
                    : 64 < b & b < 91
                        ? b+32
                        : b);
  }

  public static void main(String[] a){
    print("Hello, Midnightas");
    print("TEST");
    print("test");
    print("Test");
    print(".,..,,!@");
    print("ABCDefgHijklMNOPqrsTuVWxyz");
    print("AbCdEfGHIJKlmnop123");
  }

  static void print(String s){
    char[] t = s.toCharArray();
    c(t);
    System.out.println(t);
  }
}

Sortie:

SathginDim ,olleh
q.
TSET
tset
Tset
@!,,..,.
ZYXWvutSrqpoNMLKjihGfEDcba
321pOnMLKJIhgfedcba
Kevin Cruijssen
la source
Vous pouvez entrer et sortir char[].
Leaky Nun
@LeakyNun En fait, je (je crois) ne peux pas en moins d'octets. Cela permettrait la suppression String a="";et la modification o+=de 0[i]=pour économiser des octets, mais Java n'a pas de caractère .toUpperCase()/ .toLowerCase()méthode, et la conversion de char en String, utilise la méthode supérieure / inférieure, puis de nouveau en char nécessiterait (beaucoup) plus octets. Mais n'hésitez pas à bifurquer l'idéone liée et à trouver quelque chose pour faire char[]fonctionner en moins d'octets.
Kevin Cruijssen
1
180 octets qui peuvent être golfés plus loin (en ne le modifiant pas en place).
Leaky Nun
0

C

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char *argv[])
{
  char *a,*b,*c;

  a=c=strdup(argv[1]);
  b=&argv[1][strlen(a)-1];
  for(;*a;a++,b--){
    *a=(*a>='A'&&*a<='Z')?((*b>='a'&&*b<='z')?*b-32:*b):((*b>='A'&&*b<='Z')?*b+32:*b);
  }
  puts(c);
  free(c);
  return 0;
}
user56095
la source
L'entrée doit provenir de stdin.
Anmol Singh Jaggi du
Comme il s'agit de code-golf, veuillez indiquer le nombre d'octets que ce programme coûterait.
Je pourrais le réduire considérablement en fonction des règles, mais je ne trouve aucune règle.
user56095