tło
Otrzymałeś zadanie sporządzania notatek na spotkanie. Zaczynasz pisać w Dokumentach Google, ale podczas spotkania nie masz wystarczająco dużo czasu, aby spojrzeć na klawiaturę podczas pisania.
Na szczęście dla Ciebie możesz pisać bez patrzenia na klawiaturę. Po spotkaniu zdajesz sobie sprawę, że wszystko, co wpisałeś, było jednym klawiszem po lewej stronie.
Wyzwanie
Do tego wyzwania użyjesz liter, cyfr i spacji układu klawiatury QWERTY.
Biorąc pod uwagę wprowadzanie tekstu (z dowolnej standardowej metody wprowadzania), wypisz wynikowy tekst, w którym każdy znak jest przesuwany na klawiaturze o jeden w lewo.
W przypadku większości liter wystarczy spojrzeć na literę i przetłumaczyć ją na literę po lewej stronie (
c
staje sięx
,t
staje sięr
itp.).W przypadku litery
q
przetłumacz na literowy znak tabulacji (\t
).W przypadku litery
a
włącz blokadę wielkich liter, aby wielkość liter w pozostałej części łańcucha była odwrócona.W przypadku litery
z
wielką literę należy wpisać następną literą.Spacja nie wymaga tłumaczenia.
Zachowaj wielkie litery podczas tłumaczenia i pamiętaj o Caps Lock (jeśli włączona jest Caps Lock, upewnij się, że przypadek jest odwrotny).
Wszystkie znaki w ciągu wejściowym będą literami, cyframi lub spacją. Nie można uwzględniać interpunkcji ani innych znaków.
Przypadki testowe
\t
to dosłowny znak tabulacji
Hello world -> Gwkki qieks
Code Golf -> Xisw Fikd
Queried apples -> \tyweuws OOKWA
Punktacja
Najniższy wynik w bajtach wygrywa. Baw się dobrze!
Azerty
->wERT
z
wielką literą należy wpisać następną literę -> czy to oznacza, że musimy się tylko przejmować dużymi literami i nie musimy przełączać się między cyframi i symbolami? Co znajduje się w oczekiwany wyjście0123456789
,a0123456789
iz0z1z2z3z4z5z6z7z8z9
? (Poza tym na wielu klawiaturach innych niż QWERTY „Caps Lock” naprawdę działa jak „Shift Lock”. Uważam, że QWERTY nie stosuje się do tego wzoru, ale należy go określić dla tych z nas, którzy go nie znają. )Odpowiedzi:
JavaScript (V8) , 271 bajtów
Wypróbuj online! Mój pierwszy golf JavaScript. Może być zdecydowanie krótszy, ale myślę, że to dobry początek.
Zasadniczo znajduje każdy znak w
k
ciągu i zastępuje go poprzednim, a następnie zamienia wielkość liter międzyA
luba
, i usuwa wszystkie wystąpieniaZ
lubz
(ponieważ klawisz Shift sam nic nie robi).To powinien być normalny układ klawiatury QWERTY, ale daj mi znać, jeśli nie.
źródło
zebras=>wveA
przypadek testowy wydaje się nieprawidłowy. Pierwszyz
powinien spowodowaće
wydrukowanie wielkiej literyw
. Od OP: „W przypadku literyz
wielką literę należy wpisać wielką literą w ciągu”.Python 3 , 211 bajtów
Wypróbuj online!
Używa łańcucha wyszukiwania, w którym normalny znak i jego wersja modyfikowana przesunięciem są zgrupowane. Dla każdego znaku na wejściu wycofa znak o dwa miejsca po lewej stronie. Zmienia wielkie litery, dodając
1
(lub-1
jeśli bieżący znak jest pisany wielkimi literami) do wartości odnośnika, gdy aktywna jest blokada klawisza shift XOR. Modyfikator Caps Lock nie wpływa na liczby.źródło
PHP , 227 bajtów
Wypróbuj online!
Utworzyłem ciąg odwzorowania (
~1!2@3#4$5%6^7&8*9(0 qwertyuiopasdfghjklzxcvbnm
), który dla każdej cyfry ma tryb SHIFT po lewej, a dla każdej litery ma literę / klawisz po lewej stronie.Pętlę znaki wejściowe i dla każdego znaku:
a
lubA
, flaga Caps Lock zostaje odwrócona (logiczne nie).z
lubZ
, flaga przesunięcia jest ustawiona na1
.aAzZ
:$t
.1
,$t
jest drukowana, w przeciwnym razie, jeśli cyfra jest1
,`
jest drukowana, jeśli cyfra jest0
,9
jest drukowana, a poza tymdigit-1
jest drukowana.$t
drukowane są małe lub duże litery. Jedynym szczególnym przypadkiem jest tutaj znak tabulacji, który jest drukowany w niezmienionej postaci.0
na końcu.źródło
Czerwony , 218 bajtów
Wypróbuj online!
Obecnie
AaZz
nie wpływają na cyfry.źródło
'A pear' -> ' OWe'
C (gcc) , 276 bajtów
Dzięki pułapowi cat na 33 bajty.
Wypróbuj online!
źródło
k^=!(l^7)
zamiastk=l^7?k:!k