Das Ziel ist, nachdem eine Zeichenkette als Eingabe verwendet wurde, jeden lateinischen Buchstaben zu duplizieren und die Groß- / Kleinschreibung zu ändern (und umgekehrt).
Beispiel Ein- und Ausgänge:
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|@!
Die Eingabe besteht aus druckbaren ASCII-Symbolen.
Du solltest keine nicht-lateinischen Buchstaben, Zahlen oder Sonderzeichen kopieren.
Antworten:
Gelee, 5 Bytes
Probieren Sie es online!
Wie es funktioniert
quelle
Python,
5654 BytesTeste es auf Ideone .
quelle
*
Hat eine höhere Priorität als+
, wirkt sich also nur auf denc
mit vertauschten Fall aus.JavaScript ES6,
70686664 Bytes2 Bytes dank @Kevin Lau gespeichert - nicht Kenny
2 Bytes dank @ Cᴏɴᴏʀ O'Bʀɪᴇɴ gespeichert
Erläuterung
Dies nutzt eine wirklich hacky:
was ungolfed ist:
Grundsätzlich wird
l < "a"
geprüft, ob der Codepunkt des Buchstabens kleiner ist als der Codepunkt vona
(daher ein Großbuchstabe). Wenn es so ist, wird es das tun,to + Low + erCase
was dazu führt,l['toLowerCase']()
dass das Zeichen in Kleinbuchstaben geschrieben wird.`
Anführungszeichen ermöglichen die Formatierung von Zeichenfolgen, sodass Sie sich im Wesentlichen Folgendes vorstellen können:as:
"to" + (l<"a" ? "Low" : "Upp") + "erCase"
generiert die aufzurufende Funktion (die Zeichenkette in Groß- oder Kleinschreibung schreiben). Wir setzen dies in eckige Klammern[ ... ]
, um auf eine Eigenschaft zuzugreifen, deren Name als Zeichenfolge angegeben ist. Dies gibt die entsprechende Funktion zurück und wir rufen sie einfach auf.quelle
/[A-Z]/gi
ist ein kürzerer regulärer Ausdruck: 3to${l<"a"?"Lower":"Upper"}Case
zuto${l<"a"?"Low":"Upp"}erCase
l[`to${l<"a"?"Low":"Upp"}erCase`]()
Ich denke, wir haben eine neue Definition des Bösen.Ruby,
3733 (30 +-p
Flag) Bytesswapcase
zur Rettung! Art von. -4 Bytes von @Lynn.quelle
gsub(/[a-z]/i){$&+$&.swapcase}
plus dasp
Flag ist 31 Bytes.p
Flag auch als(space)-p
3 Bytes bekannt.C
6360 BytesNutzt die Tatsache, dass
'a' XOR 32 == 'A'
usw.Drei Bytes dank FryAmTheEggman gespart.
quelle
s++
in der letztenputchar
(&&putchar(32^*s++)
) verschieben, um ein Byte zu speichern&&
mit*
, können Sie nicht?&&
das Kurzschlussverhalten funktioniert.f(char*s){isalpha(putchar(*s))&&putchar(32^*s);*s&&f(1+s);}
rekursiv?f(char*s){*s&&f(1+s,isalpha(putchar(*s))&&putchar(32^*s));}
rekursiv?CJam, 11 Bytes
Teste es hier.
Erläuterung
quelle
Pyth , 7 Bytes
Testsuite .
quelle
Python 3.5,
6056 Bytes:Ein volles Programm. Werde versuchen mehr zu golfen.
Probieren Sie es online! (Ideone)
quelle
Haskell, 73 Bytes
quelle
Cheddar ,
118104 BytesErste echte Cheddar-Antwort !!! Das ist viel weniger klimatisch als ich dachte ...; _;
Funktioniert mit Release 1.0.0-beta.9 , nicht konkurrierend.
Wie Sie sehen, habe ich Cheddar nicht zum Golfen entworfen: /
Ungolfed:
Verwendung:
Update: 14.07.16 Ich habe die Ternaries beendet, was 84 Bytes ergibt
Cheddar, 84 Bytes
Funktioniert ab Version v1.0.0-beta.14
quelle
Retina,
282721 BytesDas sind Tabulatoren, keine Leerzeichen.
Probieren Sie es online aus
Danke für die Vorschläge an alle.
quelle
[A-Za-z]
->i`[A-Z]
_
. Ich werde jedoch Registerkarten verwenden, damit ich alle Testfälle gleichzeitig testen kann.C
87,80f()
Übergeben Sie eine Zeichenfolge als Eingabe an und die Ausgabe wird in STDOUT geschrieben. Die Zeichenfolge wird nicht geändert.quelle
sed, 30 bytes
29 Byte Code + 1 Byte Parameter
-r
Verwendung:
quelle
J
3129 BytesErläuterung
quelle
Haskell,
121, 101, 85,82quelle
isLower
ist kürzer als das Konstrukt mitelem
, für 5 Bytes mehr.>>=
istconcatMap
(oderconcat.map
) mit Argumenten blättern:f n = n >>= (\x->if isAlpha x then[x,r x]else[x])
. Sie können den Funktionsnamen weglassen und die Definition vonf
durch ersetzen(>>= \x->if isAlpha x then[x,r x]else[x])
.otherwise
Sie jeden Ausdruck verwenden, der ausgewertet wirdTrue
, z1<2
. Sie können das Ersetzenif .. then .. else
mit einer Liste Verständnis:\x->[x]++[g x|isAlpha x]
. Oh, und es gibt einen Fehler: Der zweitetoUpper
ing
muss ein seintoLower
.[x]++
istx:
.Perl, 36 Bytes (35 +
-n
Flag)(
-p
tag benötigt)(-2 Bytes dank @Dom Hasting)
Kurze Erklärung:
ord
Gibt den numerischen Wert eines Zeichens zurück.ord(any lower case) >= 97
undord(any upper case) <= 90)
.Laufen mit:
quelle
/i
oder Ihre regulären Ausdrücke stimmen mit mehreren Codepunkten zwischen Buchstaben überein.Ruby,
31 + 1 = 3230 + 1 = 31 BytesMit der
-p
Flagge laufenNutzt die Tatsache , dass
swapcase!
zurücknil
auf alles andere als ein ASCII - Buchstaben, die übersetzt in eine leere Zeichenfolge , wenn der zurück ausgsub
Block. @Jordan hat ein Byte gespeichert, indem er das vorherige Zeichen in einem Look-Behind erfasst hat.quelle
//
und dann mit$`[-1]
ist klug.gsub(/(?<=(.))/){$1.swapcase!}
. Das gleiche Grundkonzept, zögern Sie also nicht, es zu verwenden..swapcase!
. (Ich meine, entfernen Sie die!
.)R,
1911871681569899 Bytes99 Bytes aufgrund von Verbesserungen für Giuseppe und MickyT .
quelle
readline()
kann verwendet werden, kostet aber ein Bytescan
wird mit in Anführungszeichen eingeschlossenen Eingaben funktionieren (wie es häufig bei Befehlszeilenargumenten in anderen Sprachen der Fall ist)05AB1E , 7 Bytes
Code:
Erläuterung:
Verwendet die CP-1252- Codierung. Probieren Sie es online!
quelle
Pyke,
86 BytesProbieren Sie es hier aus!
quelle
V , 21 Bytes
Probieren Sie es online!
Zu viele Bytes ...
quelle
Eigentlich 8 Bytes
Probieren Sie es online!
Erläuterung:
quelle
MATL,
119 BytesProbieren Sie es online
Erläuterung
quelle
Perl,
282221 Bytes (20 +-p
Flag)quelle
$"
anstelle von verwenden' '
, aber ich habe nicht getestet.Stax ,
76 BytesDanke an @recursive für ein gespeichertes Byte!
Führen Sie es aus und debuggen Sie es unter staxlang.xyz! (Link ist zur entpackten Version)
Entpackt (7 Bytes):
Erläuterung:
quelle
u
von:g
. Es werden alle eindeutigen Elemente in einem Array abgerufen, genau das, was Sie in diesem Fall möchten. Davon abgesehen sieht das gut aus.123
. Möglicherweise müssen Sie das Format für alle Eingaben ändern (dh sie zitieren). Die Verbindung ist ebenfalls unterbrochen. Sie ersetzen müssenm=11
mitm=2
. Auf staxlang.xyz gibt es einen PPCG-Post-Generierungsbutton, den Sie möglicherweise verwenden möchten.Python, 59 Bytes
Bearbeitet, um wiederholte nicht-alphabetische Zeichen zu korrigieren
quelle
Julia, 40 Bytes
Probieren Sie es online!
quelle
not s is (list comprehension)
Okay, Julia ...PHP 4.1, 57 Bytes
Dieser Code setzt den Zugriff über einen Webserver (z. B. Apache) mit der Standardkonfiguration voraus.
Sie können die Zeichenfolge übergeben , indem Sie die Taste Senden
S
mit irgendwelchen Mitteln (POST
,GET
,COOKIE
,SESSION
...).quelle
C #,
8271 BytesC # Lambda, wo die Eingabe und die Ausgabe sind
string
. Probieren Sie es online aus .11 Bytes dank @Lynn-Trick.
quelle
Common Lisp (Lispworks), 262 Byte
ungolfed:
Verwendung:
quelle