Niektórzy z twoich pracowników mają zepsute klawisze Capslock i jesteś zbyt tani, aby je wymienić. Pomóż im, tworząc najkrótszy możliwy program do poprawienia ich pracy! Po prostu przekonwertuj każdy znak w danym ciągu z wielkich na małe i odwrotnie ... ale jest pewien zwrot!
Jesteś również bardzo podekscytowany świętami Bożego Narodzenia! Zostawisz więc mały „błąd”, który nie koryguje liter znajdujących się w ciągach Christmas
(bez rozróżniania wielkości liter).
Wkład
Do wprowadzania danych użyjesz jednego łańcucha (lub tablicy bajtów), który może zawierać znaki nowej linii i znaki ascii między 0x20 a 0x7e ( -
~
). Nie musisz się martwić o powrót karetki lub inne znaki w łańcuchu.
Wydajność
Wynik powinien zawierać tylko podany ciąg znaków z zamienionymi dużymi i małymi znakami (i oczywiście błąd świąteczny!). Może zawierać maksymalnie jeden dodatkowy biały znak.
Christmas Bug
Wyjaśnijmy to na przykładzie:
Input: i CAN HARDLY WORK LIKE THIS please GET ME A NEW KEYBOARD FOR cHRISTMAS
Output: I Can HaRdly work lIke thiS PLEASE geT Me A new keyboard for ChriStmas
can
zawiera „c”, które jest pierwszą literą Bożego Narodzenia, więc to się nie zmienia. Następna litera w Christmas
to „h”, która jest w hardly
(która również zawiera „r”), więc to się nie zmienia, itd. Christmas
Sama ma tylko jedną literę bez zmian, ponieważ do czasu, gdy kod tam osiągnie, faktycznie szuka „s”, a nie „c”.
Gdy sekwencja zostanie znaleziona, powinna zacząć od nowa od „c” i zacząć iterację Christmas
jeszcze raz. Więc ChristmasChristmas
pozostanie niezmieniony.
Przypadki testowe
Input: Hello World!
Output: hELLO wORLD!
Input: I like pie :)
Output: i LIKE PIE :)
Input: hELP my KeYboarD
iS BROKEN
Output: Help MY kEyBOARd
Is broken
Input: cHRISTMAS IS COMING REALLY SOON!
Output: cHRISTMAS is Coming really soon!
Input: C is the first letter in cHRISTMAS
Output: C IS ThE FIrST LETTER iN ChriSTMAS
Zwycięzca
To jest golf golfowy, więc wygrywa najkrótsza odpowiedź!
Christmas
sekwencyjnie, więc „h” jest ignorowane, dopóki nie znajdzie „c”, następnie szuka „h”, następnie „r” itd.Odpowiedzi:
05AB1E , 16 bajtów
Dzięki Emignie za uratowanie bajtu i naprawienie błędu!
Wyjaśnienie:
Wykorzystuje kodowanie CP-1252 . Wypróbuj online!
źródło
u
je usuniesz , powinno działać.V ,
38, 36 bajtówWypróbuj online! (zawiera dane wejściowe i oczekiwane dane wyjściowe do porównania)
Kiedy zobaczyłem to po raz pierwszy, pomyślałem, że będzie to niezwykle łatwe. W rzeczywistości, gdyby nie było na „Boże Narodzenie” błąd, to będzie tylko 2 bajty:
V~
. Świąteczny błąd znacznie utrudnia uzyskanie bardzo hackerskiej odpowiedzi.Jak zwykle, zrzut heksowy:
źródło
PHP,
113110102 bajtówpobiera dane wejściowe z argumentu pierwszego wiersza poleceń. Uruchom z
-r
.awaria
źródło
MATL ,
3630 bajtówCiągi znaków nowego wiersza należy zdefiniować,
10
łącząc się z kodem ASCII (patrz przykład w łączu z przypadkami testowymi).Wypróbuj online! Lub sprawdź wszystkie przypadki testowe .
Wyjaśnienie
źródło
Pyke,
3125 bajtówWypróbuj tutaj!
źródło
\n
i otoczysz wejście,"
wtedy takPerl 6 , 84 bajtów
źródło
C # 197 bajtów
Nie wygrasz z tym, ale mam nadzieję, że najmniejsza implementacja C #, która działa ...
Wyjaśnienie:
źródło
JavaScript,
12211811410710493 bajtówźródło
k!=c?k:c.toUpperCase()
zaoszczędzić kilka bajtów?Perl 6 , 80 bajtów
Spróbuj
źródło
my $i=0;
było legalne. I nie zdziwiłbym się, gdyby było więcej błędów składniowych związanych z białymi znakami.$/ eq $/.lc
a nie po$/.lc eq $/
to, by wcześniej usunąć tę przestrzeńeq
.Java 7, 200 bajtów
Brzydki, ale działa .. Zdecydowanie można bez wątpienia grać w golfa .. Jestem zardzewiały ...
Nie golfowany:
Kod testowy:
Wypróbuj tutaj.
Wydajność:
źródło
Python 100 bajtów
źródło
Rubinowy, 63 + 1 = 64 bajty
Używa
-p
flagi.źródło
C # 239 znaków
bardziej wyraźna wersja:
jest to dość naiwne rozwiązanie i prawdopodobnie można je ulepszyć (może możemy zezwolić na niejawną konwersję na char?).
zakłada się, że znajduje się w funkcji, odczytuje z konsoli (standardowe wejście) i zapisuje w niej (standardowe wyjście).
edit: Char.IsUpper (s [j]) jest o 2 bajty dłuższy niż s [j]> 64 && s [j] <91, Char.ToUpper jest także dłuższy niż moja wersja.
źródło
Haskell,
222207 bajtówzaktualizowano:
Jak to działa:
źródło