Code Golf Challenge
Mam problem, moje palce są tłuste i często jave ja zalegam z problemami z wciśnięciem jednego klawisza po prawej stronie na mojej tablicy.
Obawiam się, że z upływem czasu sprawa jest coraz gorsza.
Pozbądź się każdego klucza, który zrobię; przesuń kursor w prawo!
Przed tym chciałbym, aby program (lub FUNCIPN) automatycznie przesuwał wszystkie keystrpke z powrotem na lewy.
Postaram się zabrać mój tom do reszty tjis chal; wyjdź, żeby nie wywołać zamieszania!
Cel:
Napisz program lub funkcję, która pobiera dane z jednego z następujących zielonych klawiszy na standardowej klawiaturze QWERTY i zwraca znak klawisza z lewej strony.
Warunki:
• Możesz założyć, że osoba uruchamiająca ten program korzysta z klawiatury QWERTY takiej jak na powyższej ilustracji.
• Dane wejściowe i wyjściowe nie uwzględniają wielkości liter, możesz użyć dowolnej wielkości liter (lub kombinacji kombinacji wielkości liter) dla tego wyzwania, a także możesz założyć, że wszystkie dane wejściowe będą w jednym przypadku, jeśli to pożądane.
• Jeśli z jakiegoś powodu Twój język nie pozwala użytkownikowi wprowadzić klucza powrotu, możesz zignorować to jedno naciśnięcie klawisza
• To wyzwanie dotyczy tylko domyślnych wartości klawiszy, na przykład jeśli 4
klawisz zostanie naciśnięty, możesz założyć, że zawsze będzie 4
i nigdy$
• Możesz założyć, że tylko zielone klawisze zostaną naciśnięte.
Przykład Input
-> Output
:
S
-> a
4
-> 3
=
-> -
[
->p
To jest golf golfowy , więc wygrywa program z najkrótszą liczbą bajtów!
]
->[
?Odpowiedzi:
Ruby,
76 7169 bajtówźródło
Perl 6 ,
878369 bajtówWypróbuj online!
Zastanawiasz się, czy istnieje sposób na zakodowanie tego zakodowanego ciągu na coś krótszego ...
( Pomysł wyrażenia regularnego Stole GB dla -14 bajtów.)
źródło
$"
zakresy, moglibyśmy zaoszczędzić kilka znakówGalaretka ,
3433 bajtówWypróbuj online!
Jak to działa
źródło
Øq
fajne! Lubię to, dzięki!Python 3,
8578 bajtów:źródło
lambda x,k="1234567890-=qwertyuiop[]\\asdfghjkl;'\nzxcvbnm<>?":k[k.find(x)-1]
aby zmniejszyć kilka bajtówPython , 76 bajtów
Wypróbuj online!
Tworzy słownik, który przenosi każdy klawisz do klawisza po lewej stronie, kompresując ciąg znaków za pomocą przesuniętej wersji. Dolna linia to funkcja, górna to definicja.
Użycie
translate
do stworzenia mapowania dało dłuższe rozwiązanie. Wypróbuj online!źródło
Siatkówka ,
5351 bajtówWypróbuj online!
Prosta transliteracja przesuwająca każdą pozycję o 1 pozycję do tyłu. Wszystko od
1
do/
jest oryginalnym zestawem znaków, podczas gdy następna część jest nowym zestawem, za pomocą,o
aby wskazać Inny zestaw.H
iL
są specjalnymi klasami znaków do transliteracji w siatkówce (odpowiednio odwzorowanie na cyfry szesnastkowe i wielkie litery), ale na szczęście występują na klawiaturze w sekwencjach uporządkowanych alfabetycznie (FGH
iJKL
), więc możemy uniknąć ich ucieczki poprzez umieszczenie ich w zakresach i zyskanie w ten sposób 2 bajty.źródło
C ++, 109 bajtów
Wypróbuj online!
źródło
TI-Basic, 70 bajtów
Wątpię, by mogło być krótsze niż to ...
PS Tokeny są dwa bajty
Str1
,`
,\
,sub(
, iinString(
.źródło
V ,
575451 bajtów3 bajty zaoszczędzone dzięki @ nmjcman101 do używania
hxVp
zamiast tego, co miałem dla klawiatury wielowierszowejWypróbuj online!
<esc>
jest0x1b
i<c-r>
jest0x12
Uwaga: to nie obsługuje klawisza Enter
Zawiera niedrukowalne, więc oto zrzut heksowy
Wyjaśnienie
Większość programu generuje klawiaturę.
i
wchodzi w tryb wstawiania i każdy znak po nim jest drukowany w buforze. Ale jest tu małe dziwactwo,¬19
wstawia znaki od 1 do 9.Program wychodzi z trybu wstawiania na
<esc>
. A potem/<c-r>a
szuka argumentu w buforze. Spowoduje to umieszczenie kursora nad znalezionym znakiem.źródło
hylHVGp
możesz zrobić to, co zrobił @DJMcMayhem w pytaniu motocyklowymhxVp
. Nie jestem pewien, dlaczego tam umieściłeśG
, prawda? Działa równieżdhVp
.G
kiedy klawiatura była wielowierszowa. Dzięki!PowerShell, 82 bajty
Klawisz Enter jest obsługiwany, ale nie można go przetestować,
Read-Host
ponieważ naciśnięcie klawisza Enter bez wartości nic nie zwraca w programie PowerShell.źródło
Japt ,
5642 bajtówWyjaśnienie
Wypróbuj online!
źródło
Java 8, 99 bajtów
Wyjaśnienie:
Wypróbuj tutaj.
źródło
c->"`1234567890-=qwertyuiop[]\\asdfghjkl;'\nzxcvbnm,./".replaceAll("(?s).*(.)"+c+".*","$1")
.JavaScript (ES6), 74 bajty
Ponieważ
/
nie ma go w moim ciągu,indexOf
zwraca-1
, które po zwiększeniu powoduje.
wyjście. 93 bajty do przetworzenia ciągu:źródło
GNU sed , 72 + 1 (flaga r) = 73 bajty
Nie można przetestować klawisza Return, ponieważ sed by design dzieli dane wejściowe za pomocą
\n
separatora, a następnie uruchamia skrypt tyle razy, ile jest wierszy.Przebieg testowy: ciągła para wejście / wyjście (po zakończeniu naciśnij Ctrl + D lub Ctrl + C)
źródło
05AB1E , 50 bajtów
Wypróbuj online!
Wyjaśnienie:
źródło
Pyth - 56 bajtów
Pakiet testowy .
źródło