Wenn Sie eine Zeichenfolge angegeben haben, aktivieren Sie diese. Mit Großschreibung meine ich conTeNT-lENgth
Änderungen an Content-Length
. Im Beispiel habe ich die Zeichenkette mit 2 Wörtern -
als Wortgrenze gezeigt. Ich erwarte jedoch, dass Sie den Code für die Zeichenfolge schreiben, die eine beliebige Anzahl von Wörtern enthält, die durch ein einzelnes Zeichen als Begrenzung getrennt sind. Diese Grenze kann sich in der Zeichenfolge ändern.
Bedingungen
- Verwenden
regular expressions
ist nicht erlaubt . - Ein Satz kann beliebig viele Wörter enthalten.
- Jedes Wort wird in jedem Fall aus
English
Buchstaben bestehen[a-zA-Z]
. - Verschiedene Wörter im Satz werden durch ein einzelnes Zeichen getrennt. Dieser Charakter wird nur sein , einer der
-
,.
,<space-character>
,/
,&
,#
. Sie können sicher , dass Satz davon ausgehen , nicht andere Zeichen außer den genannten diejenigen enthalten. - Wortgrenzen sollten in der Ausgabe erhalten bleiben.
- kürzester Code gewinnt.
Zum Beispiel sollte Ihr Programm Ausgang Begin/With.Type&Content
für BeGin/wITH.tyPE&conTeNt
.
Some test cases:
"aGeNT ACcEpT/LEngTh-tYPe USeR raNgE.TyPe"
"type&AgeNt/CC/COnteNt lEnGth#acCePT/AgeNt.RAnGe-Cc/contEnt/cODe"
"cc/rEspoNCe.lEngtH#tYpE-witH&UsEr/bEgIN&uSer.AGEnT&begIn/aCCEPt/Cc"
"lENgTH#USeR.tYpE/BeGiN&LENGth tYpe/ACCEpt#rANge/codE&AnD-ACCepT/ConTenT"
"contENT/ACcEpT"
"BeGin/wITH.tyPE&conTeNt"
"Code.cc#User.lenGTh-USer-AND&tyPE TypE&leNgtH.tYPe usER.UseR&with"
"RaNgE&COnTeNT WITh CoNTENT-TypE tyPe"
"BEgin COdE#uSeR#aGeNt.USeR"
"TypE LENGth"
/CC/
in Zeile 2 oder-AND&
in Zeile 7) in Ruhe gelassen werden sollten. Ist das in Ordnung für diese Herausforderung?Antworten:
GolfScript,
362719 ZeichenEin recht einfacher GolfScript-Ansatz, der für alle Eingaben gemäß der Spezifikation funktioniert. Die Beispiele können online getestet werden .
quelle
Python 3,22
Dieser Code nimmt eine Zeichenfolge als Eingabe von stdin und gibt stdout eine Ausgabe in Großbuchstaben.
beispielsweise:
Eingang:
Ausgabe:
Der folgende Code gilt für mehrzeilige Eingänge (falls erforderlich)
Python 3, 46
quelle
while 1:print(input.title())
ist eine kürzere Entsprechung für das letzte Stück Code.Mathematica 62
Daten
Code
Verwendung
quelle
%%
%%%
%
%%
JavaScript (94)
quelle
PHP:
78736564 ZeichenDie Eingabe wird übergeben
$s
. Die Zeichenfolge wird als Array von Zeichen verarbeitet.Es ist eine einfache 2-Zustandsmaschine. Es basiert auf der lexikalischen Reihenfolge von Zeichenfolgen, und der Parser geht automatisch davon aus, dass Sie in einigen Fällen eine Zeichenfolge eingeben möchten.
Der Status wird in gespeichert
$b
und als Name der Funktion dargestellt, die beim nächsten Zeichen aufgerufen werden muss.ucfirst
undlcfirst
sind kürzer zu geben und ein identisches Verhalten habenstrtolower
/strtoupper
auf einzelne Zeichenkette. Da sie sich nur durch einen Buchstaben unterscheiden, können wir sie auch effizient zum Speichern des Status verwenden. Die Originalversion, die benötigt wird, um den Status explizit in einem Booleschen Wert zu speichern.Da echo für boolean false nichts ausgibt, habe ich ein Komma und den
!
Operator verwendet, um die Zuordnung (die in diesem Fall wahr ist) in der echo-Anweisung "auszublenden". Dadurch konnte ich ein Zeichen speichern, indem ich das entfernte{}
.quelle
$b=ord($c)>64;
versuchen$b=$c>"@";
. Oder sogar$b=$c>=A;
- AFAIR, die eine Warnung auslöst, aber gute Codierungspraktiken sind hier keine Tugend.$b=ucfirst;foreach(str_split($s)as$c){echo$b($c);$b[0]=$c>=A?l:u;}
.C 83
Übernimmt Zeilen
stdin
, übersetzt sie instdout
. (PrefersSIGINT
anEOF
.)quelle
Powershell: 37 - 43
Je nachdem, wie Sie die Eingabe übernehmen möchten ...
Benutzer zur Eingabe auffordern: 43
Eingaben aus der Pipeline übernehmen: 38
Geben Sie beim Ausführen des Skripts Folgendes als Argument ein: 37
HINWEIS: Die obigen Skripte ignorieren Wörter mit Großbuchstaben und lassen sie unverändert . Wenn dies berücksichtigt werden muss, sollte die Eingabe vor der Konvertierung in Groß- und Kleinschreibung erzwungen werden. Dies fügt der ersten Methode 10 Zeichen und den beiden anderen 12 hinzu.
quelle
foo:bar
.:
(Kolon) nicht als Worttrennzeichen in der Regel # 4 aufgeführten daher AFAICS,foo:bar
führen sollFoo:bar
, nichtFoo:Bar
. Aber das ist nur meine (ziemlich strenge) Lektüre der Spezifikation.get-culture
durchculture
; siehe codegolf.stackexchange.com/a/778/1308Java - 209 Zeichen
Ich habe Zeilenumbrüche nur zur besseren Lesbarkeit hinzugefügt.
quelle
R
143116Eine Lösung vielleicht ein bisschen lang, aber jetzt geht es los:
Leicht ungolfed und erklärt:
Bearbeiten : 116 Zeichen
Die größte Herausforderung hierbei ist die Vektorisierung
substr
. Hier ist ein weiterer, weniger ausführlicher Weg.Eingerückt:
Verwendung:
quelle
a
nur um Kleinbuchstaben handelt, muss nicht nach Übereinstimmungen mit Großbuchstaben gesucht werdenLETTERS
.TRUE
mitT
.tolower
später.mapply(substr,tolower(x),n,n)
mitstrsplit(tolower(x),"")[[1]]
einem Zeichen zu speichern.Befunge 98 -
2445Das zu schreiben hat mein Gehirn verletzt.
Dies nimmt Eingaben durch
~
und wenn das vorherige Zeichen eines der Trennzeichen war (oder wenn es kein vorheriges Zeichen gab), wird es ausgeführtDieses Snippet nimmt das Zeichen und
a
subtrahiert , wenn sein ASCII-Wert größer oder gleich ist , 32 davon, wodurch es in Großbuchstaben geändert wird. Wenn es kleiner als ista
, wird3*j
die Anpassung übersprungen. Danach wird der nächste Teil übersprungen. Dieser Teil behandelt den Wechsel von Groß- zu Kleinschreibung (ich bin mir sicher, dass er mit dem nächsten Teil zusammengeführt werden kann; ich bin mir nur nicht sicher, wie):Das Zeichen wird gedruckt (
,
), dann wird geprüft, ob das Zeichen eine der Grenzen ist:Es vergleicht im Grunde das Zeichen mit dem ASCII-Wert von
/
. Wenn das Zeichen keine Grenze ist, wird der Code gedrückt,12
sodass die Anpassung der Großschreibung beim nächsten Mal übersprungen wird.#
überspringt das Programmende:@
und~
sendet , wenn das Ende der Eingabe erreicht ist, die Codeausführung zurück an@
das Programmende.quelle
Ruby:
60515047 ZeichenProbelauf:
quelle
l==l.swapcase
dasselbe wiel<?0
(nicht getestet)? Zumindest für die für diese Aufgabe zulässige Eingabe.C # - 110
Eine einfache maschinenbasierte Verarbeitung:
(wo
x
ist dasstring
zu kapitalisieren)und natürlich, wenn Sie langweilig sein möchten (nachdem die Spezifikation aktualisiert wurde), können Sie verwenden
oder mit dem ganzen langweiligen Boilerplate:
quelle
Microsoft (R) Roslyn C# Compiler version 1.2.20906.1 Loading context from 'CSharpInteractive.rsp'. Type "#help" for more information. > "foobar".Aggregate(new{b=1>0,r=""},(s,c)=>new{b="-. /&#".Contains(c),r=s.r+(s.b?Char.ToUpper(c):Char.ToLower(c))}).r "Foobar"
Aber wenn Sie sich wirklich für die langweilige Kesselplatte interessieren, fügen Sie 112 Zeichen hinzu.public
undstring[]a
von der Kesselplattepublic
, aber ich brauche die Argumente, da ich das verarbeite ...Javascript 102
quelle
(
...)
um die ternäre Bedingung. Noch mehr, müssen Sie nicht die zweite ternäre:function(c){o+=q?c.toLowerCase():c.toUpperCase(),q='@'<c}
.Forth, 135
Die übersetzte Ausgabe wird beim
stdout
Lesen geschriebenstdin
.quelle
Befunge-98 (29), C (65)
Da die Methode / der Algorithmus ziemlich gleich ist, füge ich beide Versionen in den gleichen Beitrag ein. Beide verlassen sich darauf, zu verfolgen, ob das letzte Zeichen ein Symbol oder ein Buchstabe war, um zu wissen, ob ein Buchstabe in Kleinbuchstaben geschrieben werden muss oder nicht.
Befunge-98 (29) C (65)quelle
05AB1E , 1 Byte
Code:
Erläuterung:
Probieren Sie es online!
quelle
Excel VBA-11-Zeichen
Im Sofortfenster
?[Proper()]
VBscript
quelle
=PROPER(A1)
AWK,
113103 BytesDies funktioniert gut für einzeiligen Inhalt, aber für mehrzeilige Eingaben müssen ein paar Inits hinzugefügt werden
Es wäre schön, wenn wir die automatische Aufteilung eines Datensatzes in Felder und die Änderung dieser Felder nutzen könnten, aber wir würden dann unsere Feldtrennzeichen verlieren. :(
Ich weiß, dass dies nicht die golfenste Antwort ist, und dies ist eine ziemlich alte Frage, aber ich habe das Gefühl, dass AWK im Antwortbereich von CG unterrepräsentiert ist :)
(Vielen Dank an @manatwork für das Testen des Codes, er sollte jetzt funktionieren :) Auch der Ablauf wurde geändert, aber die Anzahl der Bytes wurde beibehalten, indem einige
;
durch neue Zeilen ersetzt wurden.)quelle
gawk
,mawk
nochoriginal-awk
. (Getestet auf Ubuntu.)gawk
einer RHEL6-Box geschrieben, dann aber in eine Windows-Box transkribiert. Es könnte sehr wohl ein Transkriptionsproblem geben. Ich werde versuchen, nach der Arbeit zu testen, wenn ich auf demselben Computer testen und veröffentlichen kann. Ich glaube, ich sehe das Problem trotzdem.l=0
sollte seinL=0
{for(l=split($0,a,$0="");i<=l;s=a[++i]){$0=$0(L?toupper(s):tolower(s));L=index("-. /&#",s)}}1
.$0
und das1
Label, um denprint
Befehl zu umgehen, Dinge sind, an die ich nicht gedacht habe. Ich muss es für künftiges Golfen im Hinterkopf behalten :)PHP (> v5.4.32) - 25 Zeichen
<?=ucwords($a,'-. /&#')?>
Erläuterung:
ucwords () ist eine integrierte PHP-Funktion
Erster Parameter
$a
ist die EingabeZweiter Parameter sind Delimeter (Nicht-Alphabet-Chat-Zeichen, die in Testfällen gefunden wurden)
Return / Echo / Print wird aufgrund der Verwendung von angenommen
<?= ?>
Links:
Code-Spielplatz
PHP ucwords () Funktion
quelle
-R
: Probieren Sie es online aus! oder 42 mit Argumenten: Probieren Sie es online!T-SQL, 179
Probieren Sie hier die SELECT-Version in SQL Server 2012 aus .
Ersetzen Sie "foo" durch die Eingabezeichenfolge. Die Zeichenanzahl gilt für eine Zeichenfolge mit der Länge Null. Dieser Code durchläuft die Zeichenfolge unter Verwendung eines Index, wobei das Zeichen an dieser Position anhand des vorherigen Zeichens groß oder klein geschrieben wird.
quelle
JavaScript (Node.js) , 70 Byte
Probieren Sie es online!
Ich bin mir sicher, dass dies weiter golfen werden kann.
Hinweis :
Nimmt Eingaben über
f(string)()
, die letzten sind erforderlich, führen aber nichts aus.quelle
Powershell,
7775 BytesDiese Lösung erfüllt die Aufgabenregeln vollständig (auch bei mehrdeutigen Beispielen
foo:bar
).Siehe auch die Powershell-Lösung mit integrierter Funktion ToTitleCase von @Iszi.
Erklärtes Testskript:
Ausgabe:
quelle
QBasic, 74 Bytes
Bytes werden in CP-437 gezählt ;
ist ein einzelnes Byte (Zeichencode 20).
Die Eingabemethode ist hier etwas seltsam: Zeichen werden einzeln eingegeben und ihre Groß- und Kleinschreibung wird konvertiert, bevor sie angezeigt werden. Wenn Sie also etwas eingeben
aGeNT
, wird es auf dem Bildschirm als angezeigtAgent
. Schlagen Enterbeendet das Programm.quelle
Python 3 , 122 Bytes
Probieren Sie es online!
Keine gute Punktzahl, aber ich wollte es versuchen, ohne eingebaute Zeichenfolgenoperationen zum Ändern der Groß- / Kleinschreibung.
quelle
PHP - 23 Zeichen
Es braucht php_mbstring um zu funktionieren
quelle
mb_convert_case("BeGin/wITH.tyPE&conTeNt", 2);
"Begin / With.Type & Content" zurückgegeben, nicht "Begin / With.Type & Content".