Kehren Sie eine Zeichenfolge um, während Sie die Großschreibung an denselben Stellen beibehalten

28

Das Ziel hier ist es, einfach eine Zeichenfolge mit einem Dreh umzukehren:
Behalten Sie die Großschreibung an den gleichen Stellen.

Beispiel Eingabe 1: Hello, Midnightas
Beispiel Ausgabe 1:SathginDim ,olleh

Beispiel Eingabe 2: .Q
Beispiel Ausgabe 2:q.

Regeln :

  • Ausgabe nach STDOUT, Eingabe von STDIN
  • Der Gewinner wird am 13. Juli bei GMT + 3 12:00 (eine Woche) ermittelt.
  • Die Eingabe darf nur aus ASCII-Symbolen bestehen. Dies erleichtert Programme, die keine Codierung verwenden, die Nicht-ASCII-Zeichen enthält.
  • Interpunktionen, die an einer Stelle landen, an der ein Großbuchstabe vorlag, müssen ignoriert werden.

quelle
Geht das mit oder ohne Aufdruck? Geht das mit oder ohne String?
Msgstr "Jede Interpunktion, die an einer Stelle landet, an der ein Großbuchstabe vorlag, muss ignoriert werden." Ist das zweite Beispiel nicht mit dieser Regel unvereinbar?
Stefano Sanfilippo
Dies steht im Einklang mit der Regel, da Satzzeichen keine Variation in Großbuchstaben aufweisen.

Antworten:

7

TCC - 4 Bytes

<>ci

Probieren Sie es online!

Erläuterung:

     - output is implicit in TCC
<>   - reverse string
  c  - preserve capitalization
   i - get input
brianush1
quelle
9
Hat dies mit einer Version von funktioniert, tcc.luabevor die Herausforderung veröffentlicht wurde? Angesichts der Tatsache, dass Sie kürzlich Befehle hinzugefügt haben, um drei weitere Herausforderungen zu lösen, gehe ich davon aus, dass dies nicht der Fall ist. Wenn für Ihre Antwort eine Version der Sprache erforderlich ist, in der die Herausforderung nachgestellt ist, müssen Sie sie im Header als nicht konkurrierend kennzeichnen. Ich werde meine Ablehnung entfernen, wenn Sie das Etikett hinzufügen oder nachweisen, dass Ihr Code in einer früheren Version funktioniert hat.
Dennis
16

Python, 71 Bytes

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

Probieren Sie es online aus

-3 Bytes von Ruud plus die Inspiration für 2 weitere.

-4 weitere Bytes von FryAmTheEggman

Mego
quelle
lambda s:''.join([z.lower(),z.upper()][c.isupper()]for c,z in zip(s,s[::-1]))ist drei Bytes kürzer
Arfie
1
@Ruud Danke! Wenn Sie den Funktionsaufruf außerhalb der Listenauswahl verschieben, sparen Sie 2 weitere!
Mego
2
(z*2).title()[c.isupper()-1]sollte arbeiten.
FryAmTheEggman
6
Sie könnten ein weiteres Byte mit ~c.isupper()anstelle vonc.isupper()-1
Lulhum
Dies wird nicht von stdin eingegeben oder an stdout ausgegeben ...
ArtOfWarfare
13

Python 2, 73 Bytes

Da die Regeln die Eingabe spezifizieren, ist ascii:

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

Der ganze Kredit geht an @Mego, aber ich hatte nicht den Ruf, nur seine Antwort zu kommentieren.

Lulhum
quelle
Können Sie den ASCII-Wert von '@' und '[' verwenden, um 2 Bytes zu erhalten?
Aloisdg sagt Reinstate Monica
Leider nein, ich müsste ord (c) verwenden, Integer- und String-Vergleich kommen in Python
Lulhum
Ziemlich viel , was ich habe, aber sie waren zuerst +1
orlp
13

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

Diese Lösung stammt von @Ton Hospel (13 Bytes kürzer als meine).

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

Aber du wirst brauchen lund peinschalten. Um es auszuführen:

perl -lpe 's%.%(lc$&gt$&?u:l)."c chop"%eeg'
Dada
quelle
5
Hallo und willkommen bei PPCG! Das ist toll!
NoOneIsHere
Tatsächlich sehr nett! Ich habe noch nie -aAutosplit verwendet, ich glaube, ich hätte es in der Vergangenheit oft verwenden können! Das muss ich mir merken! Ich denke, Sie können ein weiteres Byte mit speichern, map...,...anstatt map{...}...wie $Fam Anfang! :)
Dom Hastings
Kürzere Code (31 + 2 Bytes):perl -lpe 's%.%(lc$&gt$&?u:l)."c chop"%eeg
Ton Hospel
Hinweis, der -aimpliziert wird-F
Ton Hospel
@TonHospel wow, vielen Dank und gut gemacht, das ist ein ganz netter Code! Über -a(und -n) impliziert -F, las ich es vor einer Weile auf Perlrun, versuchte es, aber es funktionierte nicht; aber ich habe es jetzt noch einmal versucht und es funktioniert gut, also schätze ich, dass ich damals etwas falsch gemacht habe. Vielen Dank.
Dada
9

Pyth, 13 11 10 9 Bytes

Vielen Dank an @FryAmTheEggman für die Erinnerung Vund @LeakyNun für ein weiteres Byte.

srV_Qm!/G

Probieren Sie es online! jetzt auf dem Handy, Update-Link in ein bisschen

PurkkaKoodari
quelle
srV_Qm!rId0ist 11, aber ich denke, es könnte möglich sein, diese Karte zu verkürzen ...
FryAmTheEggman
@FryAmTheEggman Entfernen Sie das dund Sie haben ein Byte gespeichert.
Undichte Nonne
srV_Qm!/Gsollte ein Byte speichern
Leaky Nun
8

Python, 66 Bytes

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

Durchläuft die Indizes i, wobei der Buchstabe s[~i]von hinten und der Buchstabe von s[i]vorne betrachtet wird. Kapital zu sein wird als im zusammenhängenden Bereich liegend geprüft @ABC...XYZ[. Dank an FryAmTheEggman aus dem (_*2).title()Streich.

xnor
quelle
5

Retina , 75 67 65 Bytes

Die Anzahl der Bytes setzt die Kodierung nach ISO 8859-1 voraus.

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

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

±(.)
$1±
·.
·

Probieren Sie es online! (Die erste Zeile aktiviert eine Testsuite mit mehreren durch Zeilenvorschub getrennten Testfällen.)

Martin Ender
quelle
5

JavaScript (ES6), 95 83 Bytes

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

Bearbeiten: Dank @ edc65 wurden massive 12 Bytes gespeichert.

Neil
quelle
s => r = [... l = s.toLowerCase ()]. ​​reverse (). map (((c, i) => s [i]! = l [i]? c.toUpperCase (): c) .join`` -10
edc65
@ edc65 Danke! (Hinweis: Das r=ist nicht erforderlich.)
Neil
5

Pyke, 11 10 9 Bytes

_FQo@UhAl

Probieren Sie es hier aus!

_         -   reversed(input)
 F        -  for i in ^
   o      -      o+=1
  Q @     -     input[^]
     Uh   -    ^.is_upper()+1
       Al -   [len, str.lower, str.upper, ...][^](i)
          - "".join(^)
Blau
quelle
Es gab mir zuerst einen Fehler, dann gleichzeitig die richtige Antwort. i.imgur.com/uTcH27F.png
Das passiert immer, Sie können auf Warnungen deaktivieren klicken, um dies zu deaktivieren.
Blue
Aha okay. Entschuldigung, ich bin nicht gut mit Pyke
Könnte sein, weil ich der einzige bin, der es benutzt
Blue
4

05AB1E , 19 16 15 13 Bytes

Vielen Dank an Emigna für das Speichern von 3 Bytes!

Wahrscheinlich werde ich von Jelly geschlagen ... Code:

Âuvy¹Nè.lil}?

Verwendet die CP-1252- Codierung. Probieren Sie es online! .

Adnan
quelle
S.l_v¹lRNèyiu}?ist 1 Byte kürzer
Emigna
@Emigna Wow danke! Das ist sehr schlau.
Adnan
Âuvy¹Nè.lilë}?ist 14. Nur glücklich, ich kann Ihnen einmal helfen :)
Emigna
@Emigna Das ist unglaublich! Sehr schöne Verwendung von Gabel :).
Adnan
Ruvy¹Nè.lil}?tatsächlich. Ich habe die Gabelung nicht benutzt und vergessen, die anderen zu entfernen. Also 13.
Emigna
4

MATL , 13 Bytes

PktGtk<)Xk5M(

Probieren Sie es online!

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
quelle
3

J , 30 Bytes

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

Unterstützt kein ASCII

Meilen
quelle
"toupper" "tolower" Kannst du keine Codepunkte verwenden, um es zu verkürzen?
Undichte Nonne
@LeakyNun Vielleicht, aber ich kann nicht wirklich sicher sagen
Meilen
3

Brachylog , 28 Bytes

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

Erläuterung

  • Hauptprädikat:

    @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ädikat 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
    
Tödlich
quelle
3

TSQL, 175 Bytes

Golf gespielt:

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

Ungolfed

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

Geige

t-clausen.dk
quelle
Eingabe fest codieren?
Katze
@cat das ist der einzige weg. In SQL gibt es keinen STDIN- oder Eingabebefehl. Wenn Sie sich Stackoverflow ansehen, werden alle Fragen auf diese Weise gelöst. Sie können sich auch meine anderen Antworten auf codegolf
t-clausen.dk 06.07.16
Oh ja, ich erinnere mich definitiv, dass ich dieses Gespräch mit einem SQL-Benutzer hatte (Sie vielleicht). Das ist komisch, sollte aber in Ordnung sein.
Katze
1
@cat wir hatten dieses Gespräch noch nicht, aber Sie haben mir früher mit einer
Byteanzahl geholfen
3

Eigentlich 25 Bytes

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

Probieren Sie es online!

Erläuterung:

;`úí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
quelle
3

Haskell, 83 80 75 71 Bytes

Der einfachste Weg, den ich mir vorstellen konnte.

import Data.Char
f a|isUpper a=toUpper|1>0=toLower
zipWith f<*>reverse
fehlerhaft
quelle
Wenn Sie die Parameter von tauschen (#), kkann in k=reverse>>=zipWith(#)
punktloser Form
Die zweite Zeile kann in Punkt frei sein bals f a|isUpper a=toUpper|1>0=toLower, obwohl dies nicht gegen die Flonk der Verbesserung.
xnor
Sie können die xnor-Version von verwenden fund Flonk's kto umschreiben zipWith f<*>reverse.
Nimi
Müssen Sie den Parameter nicht entfernen s?
Lynn
Ja, und du darfst das auch schneiden k=.
6.
3

PowerShell, 154 , 152 , 99 , 86 Byte

Vielen Dank an @TimmyD, dass du mir satte 47 Bytes gespart hast (ich habe auch weitere 6 Bytes gespart)

Vielen Dank an @TessellatingHeckler, dass Sie weitere 13 Byte gespeichert haben.

Neueste:

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''

Normale Formatierung:

Neueste (sieht meiner Meinung nach am besten aus als zwei Zeilen):

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

Erläuterung:

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 ''

Das erste Mal Poster hier, war motiviert, weil ich selten PowerShell sehe, aber bei 154 152 Bytes auf diesem ... Ich kann verstehen, warum! Anregungen geschätzt.

Ich habe gelernt, dass ich meine Denkweise auf Golf in Code und dessen Spaß komplett umstellen muss!

ThePoShWolf
quelle
Hallo und willkommen bei PPCG! Das ist toll!
NoOneIsHere
Willkommen bei PPCG! Schön, dass hier ein anderer PowerShell-Benutzer zu sehen ist. Sie können einiges ausschneiden, indem Sie die .tostring()Anführungszeichen durch Anführungszeichen ersetzen und ASCII-Integer-Manipulation anstelle von Regex verwenden. Versuchen Sie Folgendes für 105 Bytes - param($a)-join($a[$a.length..0]|%{if(($x=$a[$i++])-le90-and$x-ge65){"$_".ToUpper()}else{"$_".ToLower()}}).
AdmBorkBork
Brillant! Wir können das noch kürzer machen, indem wir einen Bereich anstelle von -le und -ge verwenden:param($a)-join($a[$a.length..0]|%{if(65..90-contains$a[$i++]){"$_".ToUpper()}else{"$_".ToLower()}})
ThePoShWolf
X-inYist kürzer als Y-containsX, und Sie können Ihre iffür den falschen ternären Operator ändern , um 86 Bytes zu erhalten -param($a)-join($a[$a.length..0]|%{("$_".ToLower(),"$_".ToUpper())[$a[$i++]-in65..90]})
TessellatingHeckler
Mann, ich habe das Gefühl, dass ich viele Tricks verpasst habe, die ich noch nie zuvor beim Code-Golfen erlebt habe. Es ist fast so, als würde man wieder von vorn lernen, zu programmieren!
ThePoShWolf
2

Dyalog APL , 12 Bytes

⌽f¨⍨⊢≠f←819⌶

819⌶ ist die Fallfaltfunktion

f←weil sein Name lang ist, weisen wir ihn f zu

⊢≠f Boolescher Wert, bei dem sich Text von Kleinbuchstaben unterscheidet

f¨⍨ benutze das (1 bedeutet Großbuchstaben, 0 bedeutet Kleinbuchstaben), um jeden Buchstaben zu falten ...

... des umgekehrten Textes

Verarbeitet Nicht-ASCII-Dateien gemäß den Regeln des Unicode-Konsortiums.

Adam
quelle
2

Schläger, 146 Bytes

(λ(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)))))

Schläger ist schlecht in dieser ganzen "Golf" Sache.

Achselzucken Wie immer wäre jede Hilfe bei der Verkürzung sehr dankbar.

Steven H.
quelle
2

Jolf, 21 Bytes

Probieren Sie es hier aus!

Μid?&γ._pXiS=pxHHpxγγ

Erläuterung

Μ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
quelle
(d)is function... Opfere die Rechtschreibung um des Golfs willen!
Steven H.
2

Perl 6 , 29 Bytes

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

C #, 86-85 Bytes

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

AC # Lambda, wobei die Eingabe und die Ausgabe eine Zeichenfolge ist. Sie können es auf .NetFiddle ausprobieren .


Ich kämpfe , um zu verstehen , warum ich konvertieren kann nicht erreichen char.ToLower(c)zu c+32. Ich hoffe es zu beheben!

Dank @PeterTaylor werden 12 Byte gespeichert ( c|32um 32 zum ASCII-Wert von cund c&~32zu subtrahieren). Das Ergebnis wäre 72 Byte (kann aber auf Nicht-Alpha-Zeichen fehlschlagen).

s=>string.Join("",s.Reverse().Select((c,i)=>(char)(s[i]>96?c|32:c&~32)));
aloisdg sagt Reinstate Monica
quelle
1
Es wäre c|32anstelle von c+32, aber es wird nicht mit Nicht-Alpha-Zeichen funktionieren.
Peter Taylor
@ PeterTaylor Es funktioniert super! Vielen Dank!
Aloisdg sagt Reinstate Monica
1

PHP, 128 Bytes

$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]));}

Ich kann versuchen, dies weiter zu optimieren, aber ich lasse es einfach so, wie es ist.

MonkeyZeus
quelle
1

Oktave, 51-50 Bytes

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

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

VIM, 46 Bytes

Es wären drei Bytes g~G wenn wir nicht von stdin lesen oder nach stdout schreiben müssten, aber na ja ...

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

Um dies zu testen, führen Sie aus

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

Dies ist meine erste Einreichung hier, nicht sicher, ob diese Art der Einreichung akzeptabel ist.

DoYouEvenCodeBro
quelle
Schön, ich liebe Golf in Vim! Dieses Programm kehrt die Zeichenfolge jedoch nicht um, sondern ändert lediglich die Groß- und Kleinschreibung. Sie können die Zeichenfolge mit umkehren :se ri<cr>C<C-r>", müssen dann aber herausfinden, wie die richtigen Buchstaben in Großbuchstaben geschrieben werden.
DJMcMayhem
@DrGreenEggsandIronMan Oh man das habe ich komplett verpasst! Zurück zum Zeichenbrett!
DoYouEvenCodeBro
1

Javascript (mit externer Bibliothek) (224 Bytes)

(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()},"");}

Haftungsausschluss: Mit einer Bibliothek, die ich geschrieben habe, um C # LINQ zu Javascript zu bringen

Bild 1

applejacks01
quelle
Aufruf an die Person, die dies ohne Begründung abgelehnt hat. Irgendein Grund dafür?
AppleJacks01
Es ist wahrscheinlich, dass sie wollten, dass Sie auch die Bibliothek zählen, obwohl die Verwendung einer externen Bibliothek vollständig innerhalb der Grenzen der Standardrichtlinie liegt.
Addison Crump
1
Ich bin kein Downvoter, aber wenn Sie eine externe Bibliothek verwenden, erwähnen Sie zumindest den Namen in Ihrer Antwort, und für eine undurchsichtige Bibliothek geben Sie bitte einen Link zum Repository an.
n̴̖̋h̷͉̃a̷̭̿h̷̭̿d̸̡̅ẗ̵̨́
1

Sed, 113 + 1 = 114 Bytes

Warum? Weil es Spaß macht, das Falsche zu benutzen Werkzeug zu verwenden, um Dinge zu tun: P

Verwendung: Führen Sie aus sed -rf file, geben Sie Text ein und drücken Sie Ctrl+ D(EOF senden).

Golf gespielt:

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

Ungolfed:

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
jemandemmitpc
quelle
1

Java 7, 221 217 180 Bytes

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);}

Dank des @LeakuNun -Ansatzes werden viele Bytes gespart .

Ungolfed & Testfälle:

Probieren Sie es hier aus.

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);
  }
}

Ausgabe:

SathginDim ,olleh
q.
TSET
tset
Tset
@!,,..,.
ZYXWvutSrqpoNMLKjihGfEDcba
321pOnMLKJIhgfedcba
Kevin Cruijssen
quelle
Sie können ein- und ausgeben char[].
Undichte Nonne
@LeakyNun Eigentlich kann ich (glaube ich) nicht weniger Bytes. Es würde das Entfernen von String a="";und das Ändern o+=in ermöglichen 0[i]=, um Bytes zu speichern, aber Java hat kein Zeichen .toUpperCase()/ keine .toLowerCase()Methode, und das Konvertieren von char in String, Verwenden der Methode upper / lower und dann wieder zurück in char würde (viel) mehr erfordern Bytes. Aber zögern Sie nicht, das verknüpfte Konzept zu ändern und sich etwas auszudenken, um die char[]Arbeit in weniger Bytes zu erledigen .
Kevin Cruijssen
1
180 Bytes , die weiter verarbeitet werden können (indem sie nicht geändert werden).
Undichte Nonne
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
quelle
Die Eingabe sollte von stdin erfolgen.
Anmol Singh Jaggi
Da dies Code-Golf ist, geben Sie bitte die Anzahl der Bytes ein, die dieses Programm kosten würde.
Ich könnte es abhängig von den Regeln erheblich reduzieren, aber ich kann keine Regeln finden.
user56095