Celem jest, po przyjęciu ciągu jako danych wejściowych, powielenie każdej litery łacińskiej i „przełączanie” jej wielkości (tzn. Wielkie litery stają się małymi literami i odwrotnie).
Przykładowe wejścia i wyjścia:
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|@!
Dane wejściowe składają się z drukowanych symboli ASCII.
Nie powielaj niełacińskich liter, cyfr, znaków specjalnych.
Odpowiedzi:
Galaretka, 5 bajtów
Wypróbuj online!
Jak to działa
źródło
Python,
5654 bajtówPrzetestuj na Ideone .
źródło
*
ma wyższy priorytet niż+
, więc wpływa tylko nac
zmienioną wielkość liter.JavaScript ES6,
70686664 bajtówZaoszczędź 2 bajty dzięki @Kevin Lau - nie Kenny
Zaoszczędzono 2 bajty dzięki @ Cᴏɴᴏʀ O'Bʀɪᴇɴ
Wyjaśnienie
To używa naprawdę hacky:
który nie jest golfistą to:
Zasadniczo
l < "a"
sprawdza, czy punkt kodowy litery jest mniejszy niż punkt kodowya
(dlatego jest wielką literą). Jeśli tak, zrobi to,to + Low + erCase
co się stałol['toLowerCase']()
i sprawi, że postać będzie pisana małymi literami.`
cudzysłowy umożliwiają formatowanie ciągów, więc zasadniczo możesz pomyśleć o:as:
"to" + (l<"a" ? "Low" : "Upp") + "erCase"
która generuje funkcję do wywołania (ustaw ciąg na wielkie lub małe litery). Umieszczamy to w nawiasach kwadratowych,[ ... ]
co pozwala nam uzyskać dostęp do właściwości, biorąc pod uwagę jej nazwę jako ciąg. Zwraca odpowiednią funkcję, a następnie po prostu ją wywołujemy.źródło
/[A-Z]/gi
jest krótszym wyrażeniem regularnym: 3to${l<"a"?"Lower":"Upper"}Case
doto${l<"a"?"Low":"Upp"}erCase
l[`to${l<"a"?"Low":"Upp"}erCase`]()
Myślę, że mamy nową definicję zła.Rubinowy,
3733 (30 +-p
flaga) bajtówswapcase
na pomoc! Raczej. -4 bajty od @ Lynn.źródło
gsub(/[a-z]/i){$&+$&.swapcase}
plusp
flaga ma 31 bajtów.p
flaga ma(space)-p
3 bajty.C,
6360 bajtówWykorzystuje fakt, że
'a' XOR 32 == 'A'
itp.Trzy bajty zapisane dzięki FryAmTheEggman.
źródło
s++
ostatniputchar
(&&putchar(32^*s++)
), aby zapisać jeden bajt&&
z*
, nie można?&&
, jak działa zachowanie zwarciowe.f(char*s){isalpha(putchar(*s))&&putchar(32^*s);*s&&f(1+s);}
rekurencyjny?f(char*s){*s&&f(1+s,isalpha(putchar(*s))&&putchar(32^*s));}
rekurencyjny?CJam, 11 bajtów
Sprawdź to tutaj.
Wyjaśnienie
źródło
Pyth , 7 bajtów
Zestaw testowy .
źródło
Python 3.5,
6056 bajtów:Pełny program. Spróbuje więcej golfa.
Wypróbuj online! (Ideone)
źródło
Haskell, 73 bajty
źródło
Cheddar ,
118104 bajtówPierwsza prawdziwa odpowiedź na Cheddar !!! Jest to o wiele mniej klimatyczne niż myślałem, że byłoby ...; _;
Działa z wersją 1.0.0-beta.9 , niekonkurującą.
Jak widać, nie zaprojektowałem cheddaru do gry w golfa: /
Nie golfowany:
Stosowanie:
Aktualizacja: 14.07.2016 Skończyłem trójskładniki, dzięki czemu sprowadziłem to do 84 bajtów
Cheddar, 84 bajtów
działa od wersji v1.0.0-beta.14
źródło
Retina,
282721 bajtówTo są tabulatory, a nie spacje.
Wypróbuj online
Dziękuję wszystkim za sugestie.
źródło
[A-Za-z]
->i`[A-Z]
_
. Zamierzam jednak użyć kart, aby przetestować wszystkie przypadki testowe jednocześnie.C,
8780Przekaż ciąg jako dane wejściowe,
f()
a dane wyjściowe zostaną zapisane w STDOUT. Ciąg nie jest modyfikowany.źródło
sed, 30 bajtów
Kod 29 bajtów + parametr 1-bajtowy
-r
Stosowanie:
źródło
J,
3129 bajtówWyjaśnienie
źródło
Haskell,
121, 101, 85,82źródło
isLower
jest krótszy niż konstrukcja zelem
, dla 5 bajtów więcej.>>=
jestconcatMap
(lubconcat.map
) z argumentami przerzucony:f n = n >>= (\x->if isAlpha x then[x,r x]else[x])
. Możesz przejść bez celu i pominąć nazwę funkcji i zastąpić definicjęf
z(>>= \x->if isAlpha x then[x,r x]else[x])
.otherwise
możesz użyć dowolnego wyrażenia, które oceniaTrue
, np1<2
. Można wymienićif .. then .. else
listę zrozumieniem:\x->[x]++[g x|isAlpha x]
. Aha, i jest błąd: drugietoUpper
wejścieg
musi byćtoLower
.[x]++
jestx:
.Perl, 36 bajtów (35 +
-n
flaga)(
-p
potrzebny tag)(-2 bajty dzięki @Dom Hasting)
Krótkie wyjaśnienie:
ord
zwraca wartość liczbową znaku.ord(any lower case) >= 97
Iord(any upper case) <= 90)
.Biegnij z :
źródło
/i
lub wyrażenie regularne dopasuje kilka współrzędnych kodowych między literami.Rubinowy,
31 + 1 = 3230 + 1 = 31 bajtówUruchom
-p
flagęWykorzystuje fakt, że
swapcase!
zwrócinil
dowolną literę ASCII, która po zwrocie zgsub
bloku przekłada się na pusty ciąg znaków . @Jordan uratował bajt, chwytając poprzednią postać z tyłu.źródło
//
a następnie używanie$`[-1]
jest sprytne.gsub(/(?<=(.))/){$1.swapcase!}
. Jednak ta sama podstawowa koncepcja, więc skorzystaj z niej..swapcase!
. (Mam na myśli, usuń!
.)R,
1911871681569899 bajtów99 bajtów dzięki ulepszeniom Giuseppe i MickyT .
źródło
readline()
można użyć, ale będzie to kosztować bajtscan
będzie działać z danymi wejściowymi zawartymi w cudzysłów (jak to często bywa w przypadku argumentów wiersza poleceń w innych językach)05AB1E , 7 bajtów
Kod:
Wyjaśnienie:
Wykorzystuje kodowanie CP-1252 . Wypróbuj online!
źródło
Pyke,
86 bajtówWypróbuj tutaj!
źródło
V , 21 bajtów
Wypróbuj online!
Za dużo bajtów ...
źródło
Właściwie 8 bajtów
Wypróbuj online!
Wyjaśnienie:
źródło
MATL,
119 bajtówWypróbuj online
Wyjaśnienie
źródło
Perl,
282221 bajtów (20 +-p
flaga)źródło
$"
zamiast' '
, ale nie testowałem.Stax ,
76 bajtówDzięki @recursive za bajt zapisany!
Uruchom i debuguj na staxlang.xyz! (link jest do rozpakowanej wersji)
Rozpakowane (7 bajtów):
Wyjaśnienie:
źródło
u
zamiast:g
. Otrzyma wszystkie unikalne elementy w tablicy, co jest dokładnie tym, czego chcesz w tym przypadku. Poza tym wygląda to dobrze w golfa.123
. Konieczna może być zmiana formatu wszystkich danych wejściowych (tj. Ich zacytowanie). Link również jest zepsuty. Trzeba wymienićm=11
zm=2
. Na stronie staxlang.xyz znajduje się przycisk generowania postu PPCG, więc możesz z niego skorzystać.Python, 59 bajtów
Edytowane, aby naprawić powtarzające się znaki niealfabetyczne
źródło
Julia, 40 bajtów
Wypróbuj online!
źródło
not s is (list comprehension)
ok, Julia ...PHP 4.1, 57 bajtów
Ten kod zakłada dostęp przez serwer WWW (na przykład Apache) przy użyciu domyślnej konfiguracji.
Można przekazać ciąg wysyłając kluczyk
S
za pomocą jakichkolwiek środków (POST
,GET
,COOKIE
,SESSION
...).źródło
C #,
8271 bajtówC # lambda, gdzie znajdują się dane wejściowe i wyjściowe
string
. Wypróbuj online .11 bajtów dzięki sztuczce @Lynn.
źródło
Common Lisp (Lispworks), 262 bajtów
bez golfa:
Stosowanie:
źródło