W tym wyzwaniu ty i twoi znajomi zastanawiacie się, która sprawa jest lepsza, wielka czy mała? Aby się o tym dowiedzieć, piszesz program, który zrobi to za Ciebie.
Ponieważ esolangi straszą twoich przyjaciół, a pełny kod przeraża cię, twój kod musi być tak krótki, jak to możliwe.
Przykłady
PrOgRaMiNgPuZzLeS & CoDe GoLf
0.52 uppercase
DowNGoAT RiGHtGoAt LeFTGoat UpGoAT
0.58 uppercase
Foo BaR Baz
0.56 lowercase
Dane techniczne
Dane wejściowe będą składały się wyłącznie ze znaków ASCII. Wszystkie znaki niealfabetyczne powinny być ignorowane. W każdym przypadku będzie co najmniej 1 znak
Wynikiem powinna być wielkość liter, która pojawia się najczęściej w stosunku do całkowitej liczby znaków alfabetycznych. Powinna być dziesiętna z dokładnością do co najmniej 2 miejsc po przecinku. Jeśli duże litery pojawiają się częściej, wynik powinien kończyć się uppercase
, lub lowercase
.
Nigdy nie będzie takiej samej liczby wielkich i małych liter.
Odpowiedzi:
Pyth - 40 bajtów
Po raz pierwszy użyłem formatowania ciągów wektoryzowanych, co jest całkiem fajne.
Pakiet testowy .
źródło
JavaScript (ES6) 87 bajtów
Edytuj 1 bajt zapisany dzięki ETHProductions
Edytuj 1 dodatkowy bajt zapisany dzięki l4me
Anonimowa funkcja. Długo, ale nie znalazłem już sposobu na grę w golfa
Mniej golfa
źródło
&&` ${t-l>l?1-l/t+'upp':l/t+'low'}ercase`
.c=>l+=++t&&c>'Z'
czy działałoby, tak myślę ...?CJam,
4745 bajtówWypróbuj online.
Nie grałem zbyt długo w golfa ...
Wyjaśnienie
źródło
Japt , 58 bajtów
(Uwaga: SE wcześniej usunęła specjalny znak,
Ö
więc kliknij link, aby uzyskać odpowiedni kod)źródło
"[a-z]"
, a drugie -"A-Za-z"
.0.5
jest równy½
. Możesz także usunąć końcowy znak cudzysłowu.A=Uf"[a-z]" l /Uf"[A-Za-z]" l)>½?A+" low":1-A+" upp" +`\x80ÖÐ
Możesz uzyskać surową wersję ostatnich trzech bajtów za pomocąOc"ercase
.\x80
nic nie zrobił iÖÐ
wyprodukował „skrzynkę” ... Może jakieś znaki niewidoczne, które zostały obcięte? Btw, pod warunkiem mój własny mod, dzięki za wskazówki"\w"
po prostu dopasowuje wszystkiew
s i"\\w"
pasuje do wszystkichA-Za-z0-9_
. Więc myślę, że musisz to zatrzymać"[a-z]"
.R ,
133 123 118 108 106 105104 bajtówGrałem w golfa o 10 bajtów dzięki @ ovs, 8 dzięki @Giuseppe i 10 ponownie dzięki @ngm. W tym momencie jest to naprawdę wspólny wysiłek, w którym dostarczam bajty, a inni je usuwają;)
Wypróbuj online!
źródło
MATL , 49
50bajtówUżywa bieżącej wersji (4.1.1) języka, która jest wcześniejsza niż wyzwanie.
Przykłady
Wyjaśnienie
źródło
Julia,
7674 bajtówJest to funkcja lambda, która przyjmuje ciąg i zwraca ciąg. Aby go wywołać, przypisz go do zmiennej.
Nie golfowany:
Zaoszczędzono 2 bajty dzięki edc65!
źródło
ercase
zamiastcase
Perl 6 ,
91 70 69 6361 bajtówStosowanie:
źródło
C #, 135 bajtów
Wymaga:
Rzeczywista funkcja:
Z wyjaśnieniem:
źródło
Python 2,
114110 bajtówźródło
['upp','low'][n<.5]
je'ulpopw'[n<.5::2]
, i 3 kolejne, zastępując[n,1-n][n<.5]
jemax(n,1-n)
.Mathematica,
139105 bajtówPełny kod jest przerażający , ale muszę z tym żyć ...
źródło
PHP,
140129 znakówMoja pierwsza runda golfa - nieźle jak na „standardowy” język, co? :-)
Oryginalny:
Skrócony do 129 znaków dzięki @manatwork:
Z komentarzami:
źródło
$u+=…
, przypuszczam, że masz jużerror_reporting
domyślnie, więc wyciszaj ostrzeżenia. Następnie wyjąć kilka cytatów:' '.($u<$l?low:upp).ercase
.for
, możesz usunąć nawiasy klamrowe wokół niego.for($i=65;$i<91;$u+=$a[$i++])$l+=$a[$i+32];
for
inicjalizację zmiennej kontrolnej, zapętlając 0..26 zamiast 65..91:for(;$i<26;$u+=$a[$i+++65])$l+=$a[$i+97];
Rubin, 81 + 1 = 82
Z flagą
-p
,Na szczęście dla liczb od 0 do 1 sortowanie leksykograficzne jest takie samo jak sortowanie numeryczne.
źródło
Common Lisp, 132 bajty
Wypróbuj online!
źródło
Gema, 125 znaków
Przykładowy przebieg:
źródło
Poważnie, 58 bajtów
Hex Dump:
Działa tylko w przypadku tłumacza do pobrania ... on-line jest nadal uszkodzony.
Wyjaśnienie:
źródło
Pyth, 45 bajtów
Wypróbuj online. Zestaw testowy.
Wyjaśnienie
źródło
CoffeeScript, 104 znaki
coffeescript początkowo próbował przekazać zamierzoną wartość zwracaną jako argument wartości „r”, co się nie powiodło i było bardzo denerwujące, ponieważ r było liczbą, a nie funkcją. Obejrzałem to, umieszczając
&&
między instrukcjami, aby je rozdzielić.źródło
Pyth,
5453Jeden bajt zapisany dzięki @Maltysen
Wypróbuj online
źródło
,<any><any>
to polecenie dwóch arii, które jest tym samym,[<any><any>)
co może uratować ci bajtRuby, 97 znaków
Przykładowy przebieg:
źródło
05AB1E , 28 bajtów
Wypróbuj online!
źródło
Java 8,
136130 bajtów-6 bajtów, tworząc port odpowiedzi @ProgramFOX C # .NET .
Wypróbuj online.
Wyjaśnienie:
źródło
REXX, 144 bajty
źródło
Perl 5
-p
, 72 bajtówWypróbuj online!
źródło
Kotlin , 138 bajtów
Kod
Stosowanie
źródło
Pyth,
4039 bajtówWypróbuj tutaj
Wyjaśnienie
źródło
PowerShell Core ,
134128 bajtówWypróbuj online!
Dzięki, Veskah , za zapisanie sześciu bajtów poprzez zamianę funkcji na filtr!
źródło
Tcl , 166 bajtów
Wypróbuj online!
źródło
APL (NARS), 58 znaków, 116 bajtów
test:
źródło
C, 120 bajtów
test i wynik:
wyniki
Przypuszcza, że zestaw znaków Ascii.
źródło