Bei dieser Herausforderung debattieren Sie und Ihre Freunde darüber, welche Groß- oder Kleinschreibung besser ist. Um dies herauszufinden, schreiben Sie ein Programm, das dies für Sie erledigt.
Da esolangs Ihre Freunde und ausführlicher Code Sie erschreckt, muss Ihr Code so kurz wie möglich sein.
Beispiele
PrOgRaMiNgPuZzLeS & CoDe GoLf
0.52 uppercase
DowNGoAT RiGHtGoAt LeFTGoat UpGoAT
0.58 uppercase
Foo BaR Baz
0.56 lowercase
Spezifikationen
Die Eingabe besteht nur aus ASCII-Zeichen. Alle nicht alphabetischen Zeichen sollten ignoriert werden. Es wird mindestens 1 Charakter von jedem Fall geben
Die Ausgabe sollte die Menge der Groß- / Kleinschreibung sein, die am häufigsten über der Gesamtmenge der alphabetischen Zeichen angezeigt wird. Es sollte eine Dezimalstelle mit einer Genauigkeit von mindestens 2 Dezimalstellen sein. Wenn häufiger Großbuchstaben angezeigt werden, sollte die Ausgabe mit uppercase
oder enden lowercase
.
Es wird niemals die gleiche Anzahl von Groß- und Kleinbuchstaben geben.
Antworten:
Pyth - 40 Bytes
Dies ist das erste Mal, dass ich eine vektorisierte String-Formatierung verwende, was ziemlich cool ist.
Test Suite .
quelle
JavaScript (ES6) 87 Byte
Edit 1 Byte gespeichert thx ETHProductions
Edit 1 Byte gespeichert thx l4me
Eine anonyme Funktion. Lange, aber ich fand keinen Weg mehr zum Golfen
Weniger golfen
quelle
&&` ${t-l>l?1-l/t+'upp':l/t+'low'}ercase`
.c=>l+=++t&&c>'Z'
würde funktionieren, denke ich ...?CJam,
4745 BytesProbieren Sie es online aus.
Nicht zu lange golfen ...
Erläuterung
quelle
Japt , 58 Bytes
(Hinweis: SE hat zuvor ein Sonderzeichen entfernt.
Ö
Klicken Sie daher auf den Link, um den richtigen Code zu erhalten.)quelle
"[a-z]"
und der zweite durch ersetzt werden"A-Za-z"
.0.5
ist gleich½
. Sie können auch das letzte Anführungszeichen entfernen.A=Uf"[a-z]" l /Uf"[A-Za-z]" l)>½?A+" low":1-A+" upp" +`\x80ÖÐ
Sie können die Rohversion der letzten drei Bytes mit erhaltenOc"ercase
.\x80
schien nichts zu tun undÖÐ
produzierte "case" ... Vielleicht einige Invisi-Zeichen, die abgeschnitten wurden? Übrigens, stellte meinen eigenen Mod zur Verfügung, danke für die Tipps"\w"
einfach allew
s und"\\w"
entspricht allen vonA-Za-z0-9_
. Also ich denke du musst behalten"[a-z]"
.R ,
133 123 118 108 106 105104 BytesDank @ovs 10 Bytes weniger, dank @Giuseppe 8 und dank @ngm nochmals 10 Bytes weniger. An diesem Punkt ist es wirklich eine gemeinsame Anstrengung, bei der ich die Bytes zur Verfügung stelle und andere sie entfernen;)
Probieren Sie es online!
quelle
MATL , 49
50BytesVerwendet die aktuelle Version (4.1.1) der Sprache, die älter als die Herausforderung ist.
Beispiele
Erläuterung
quelle
Julia,
7674 BytesDies ist eine Lambda-Funktion, die eine Zeichenfolge akzeptiert und eine Zeichenfolge zurückgibt. Um es aufzurufen, weisen Sie es einer Variablen zu.
Ungolfed:
2 Bytes gespart dank edc65!
quelle
ercase
stattcase
Perl 6 ,
91 70 69 6361 BytesVerwendung:
quelle
C #, 135 Bytes
Benötigt:
Tatsächliche Funktion:
Mit Erklärung:
quelle
Python 2,
114110 Bytesquelle
['upp','low'][n<.5]
mit'ulpopw'[n<.5::2]
und 3 mehr durch den Ersatz[n,1-n][n<.5]
mitmax(n,1-n)
.Mathematica,
139105 BytesAusführlicher Code ist beängstigend , aber ich muss damit leben ...
quelle
PHP,
140129 ZeichenMeine erste Golfrunde - nicht schlecht für eine "Standard" -Sprache, oder? :-)
Original:
Verkürzt auf 129 Zeichen dank @manatwork:
Mit Kommentaren:
quelle
$u+=…
, ich nehme an, Sie haben bereitserror_reporting
Standard, also Warnungen zum Schweigen zu bringen. Dann entfernen Sie einige Zitate:' '.($u<$l?low:upp).ercase
.for
, könnten Sie die Klammern entfernen.for($i=65;$i<91;$u+=$a[$i++])$l+=$a[$i+32];
for
Initialisierung der Steuervariablen durch Schleifen von 0..26 anstelle von 65..91 ersparen:for(;$i<26;$u+=$a[$i+++65])$l+=$a[$i+97];
Rubin, 81 + 1 = 82
Mit Flagge
-p
,Glücklicherweise ist die lexikografische Sortierung für Zahlen zwischen 0 und 1 die gleiche wie die numerische Sortierung.
quelle
Common Lisp, 132 Bytes
Probieren Sie es online!
quelle
Gema, 125 Zeichen
Probelauf:
quelle
Im Ernst, 58 Bytes
Hex Dump:
Es funktioniert nur mit dem herunterladbaren Interpreter ... der Online-Interpreter ist immer noch defekt.
Erläuterung:
quelle
Pyth, 45 Bytes
Probieren Sie es online aus. Testsuite.
Erläuterung
quelle
Coffeescript, 104 Zeichen
coffeescript versuchte anfangs, den beabsichtigten Rückgabewert als Argument an den Wert "r" zu übergeben. Dies schlug fehl und war sehr ärgerlich, da r eine Zahl und keine Funktion war. Ich habe es umgangen, indem ich ein
&&
zwischen die Anweisungen gesetzt habe, um sie zu trennen.quelle
Pyth,
5453Ein Byte gespart dank @Maltysen
Probieren Sie es online aus
quelle
,<any><any>
ist ein Zwei-Aritäts-Befehl, mit dem[<any><any>)
Sie ein Byte sparen könnenRuby, 97 Zeichen
Probelauf:
quelle
05AB1E , 28 Bytes
Probieren Sie es online!
quelle
Java 8,
136130 Bytes-6 Bytes, die einen Port von erstellen C # .NET-Antwort @ProgramFOX.
Probieren Sie es online aus.
Erläuterung:
quelle
REXX, 144 Bytes
quelle
Perl 5
-p
, 72 BytesProbieren Sie es online!
quelle
Kotlin , 138 Bytes
Code
Verwendung
quelle
Pyth,
40 bis39 BytesProbieren Sie es hier aus
Erläuterung
quelle
PowerShell Core ,
134128 ByteProbieren Sie es online!
Vielen Dank, Veskah , dass Sie sechs Bytes gespart haben , indem Sie die Funktion in einen Filter konvertiert haben!
quelle
Tcl , 166 Bytes
Probieren Sie es online!
quelle
APL (NARS), 58 Zeichen, 116 Bytes
Prüfung:
quelle
C, 120 Bytes
Test und Ergebnis:
Ergebnisse
Es nehme Ascii-Zeichensatz.
quelle