Biorąc pod uwagę znak, wypisz (na ekran) cały układ klawiatury qwerty (ze spacjami i znakami nowej linii), który następuje po znaku. Przykłady wyjaśniają.
Wejście 1
f
Wyjście 1
g h j k l
z x c v b n m
Wejście 2
q
Wyjście 2
w e r t y u i o p
a s d f g h j k l
z x c v b n m
Wejście 3
m
Wyjście 3
(Program kończy się bez wyjścia)
Wejście 4
l
Wyjście 4
z x c v b n m
Najkrótszy kod wygrywa. (w bajtach)
PS
Akceptowane są dodatkowe znaki nowej linii lub dodatkowe spacje na końcu linii.
Odpowiedzi:
CJam,
4240 bajtówSprawdź to tutaj.
Wyjaśnienie
źródło
e#
? Czy jest to składnia CJam dla komentarza? Z góry dziękuję.Pyth, 33 bajty
Pamiętaj, że niektórych znaków nie można wydrukować. Wypróbuj online w kompilatorze Pyth .
Jak to działa
źródło
\
jest równoważnyd
.md5
nie produkuje 5 spacji.d
jest domyślną zmienną, która iteruje poprzez iterowalny argument operatora mapy. IjL\ <list>
jest po prostu skrótem dla operatora mapymj\ d<list>
.Perl, 56 bajtów
Licząc shebang jako 3, dane wejściowe są pobierane ze standardowego wejścia. Jeśli wiodącym nowej linii nie jest problemem dla wejść
p
il
, po czym/$_\n?/
można zastąpić gołe$_
zapisać 4.Przykładowe użycie
źródło
\K
!s/.\B/$& /g
działałoby równie dobrze. Lepszym przykładem .GS2 ,
3837 bajtówKod źródłowy używa kodowania CP437 . Wypróbuj online!
Testowe uruchomienie
Jak to działa
źródło
C #, 112 bajtów
105110Liczba wzrosła o 5 bajtów, ale bardziej poprawnie! Dzięki @ MartinBüttner !!
Nie grał w golfa
źródło
JavaScript (ES6), 60 bajtów
Używa tej samej techniki, co większość innych odpowiedzi. Sugestie mile widziane!
źródło
.join` `
tego nic by nie zrobiło i nie byłoby w tym spacji.Rubin,
6357 bajtówPobiera znak jako argument wiersza poleceń:
ruby keyboard.rb e
źródło
TeaScript ,
504544 bajtówTeaScript to JavaScript do gry w golfa.
Bez golfa i wyjaśnienia
źródło
JavaScript ES6, 73
Jeśli wiodący nowy wiersz nie jest dozwolony, gdy parametr ma wartość
p
lubl
, to 83źródło
Python, 83 bajty
Wypróbuj online
źródło
Sed, 59 znaków
(Kod 58 znaków + opcja wiersza poleceń 1 znak.)
Przykładowy przebieg:
źródło
Ruby,
8687837166Dodatkowa spacja po
m
to zapobiega awariom programu, jeśli dane wejściowe to „m”.Dzięki @manatwork za ~ 16 bajtów wskazówek
źródło
ARGV
→$*
;each_char
→chars
;do
..end
→{
..}
;printf
→$><<
+%
doprowadziłoby do tego:"qwertyuiop↵asdfghjkl↵zxcvbnm".split($*[0])[1].chars{|i|$><<"%s "%i}
. Więcej w Wskazówki dotyczące gry w golfa w Ruby ..
w wyrażeniu regularnym nie pasuje\n
domyślnie lepsze wykorzystanie że odstępy:puts"qwertyuiop↵asdfghjkl↵zxcvbnm ".split($*[0])[1].gsub(/./,'\& ')
. Chociaż długość kodu pozostanie taka sama.PHP, 88 bajtów
Wymaga
-F
opcji wiersza poleceń, liczonej jako 3. Domyślne ustawienia .ini są przyjmowane (możesz wyłączyć lokalne .ini za pomocą-n
).Przykładowe użycie
źródło
Prolog (SWI),
153133 bajtyEdycja: Wytnij 20 bajtów za pomocą wskazówek z @Fatalize
Kod
Wyjaśnienie
Przykłady
źródło
atom_codes
część, używając cudzysłowów, które ograniczają kody ciągów (dzięki czemu można zastąpić bezpośrednio L w wywołaniub
ciągiem).b([A,_|T],[H]):-A=H,writef('%s',[T]);b(T,[H]).
zamiast 2 różnych regułb
jest o 7 bajtów krótsze. Zwykle zawsze jest krótsze, aby scalić wszystkie reguły w jedną z OR,;
zamiast pisać wiele reguł, ponieważ unikasz powtarzania nazwy i parametrów orzeczenia, a takżeBefunge, 122 bajty
Został przetestowany tutaj: Befunge-93 Interpreter .
Jak to działa
'q w e r t y u i o p\na s d f g h j k l\nz x c v b n m'
jest wypychany na stos.@ZVD0FHJ:LNP^\<>,2B48X.T6R
) N jest wypychana.Uwaga
Wybrałem kodowanie, więc ciąg zaczyna się od
@
, aby pokrył się z programem. Ten ciąg jest generowany przy użyciu następującego kodu python:źródło
Świnka - 102 bajtów
Gra w golfa:
Nie golfił i skomentował:
Reguła zezwalająca na dodatkowe znaki nowej linii pozwoliła mi zaoszczędzić prawie 10 bajtów ...
źródło
Java - 107 bajtów
Niegolfowany z odczytem klasy opakowania z System.in
Gdyby spacje na początku linii były akceptowalne, moglibyśmy zmniejszyć do 99 bajtów:
źródło
Python 2,
586763 bajtów ##Pobiera dane wejściowe jako ciąg znaków lub znak. Dzieli ciąg na wejściu i drukuje wszystko po podziale.
(Gra w golfa po raz pierwszy, proszę delikatnie: P)
EDYCJA: Nie widziałem dodatkowych spacji wymaganych między postaciami, dodanych teraz
EDYCJA 2: Zmodyfikowana, aby była anonimową funkcją lambda i usuwa dodatkowy podzielony argument, oszczędzając 4 bajty
źródło
print
, ale wygląda na to, że nie drukuje to spacji między każdą parą liter."f"
.)lambda s:...
. Myślę, że podział nie potrzebuje argumentu1
, ponieważ postać pojawia się tylko raz. To wyświetla spacje na początku kolejnych linii, nie jestem pewien, czy jest to dozwolone.Rubin,
59 5767 bajtówDodano spacje między literami
źródło
nil
. To nie jest sam problem, ale spowoduje problemy podczas kończenia kodu w celu dodania spacji między literami.JavaScript, 88 bajtów
(nie ma potrzeby wprowadzania spacji po pierwszym znaku, ponieważ nigdy nie trafia on do wyjścia)
Ostrzega klawiaturę podczas połączenia
s("some letter")
. Można go również wykonać za pomocądocument.write()
lubconsole.log()
, ale hej, jest dłuższy: PPróbny:
źródło
\n
zamiast;
w ciągu i pozbywając się zamiany.SQL (MS T-SQL), 172 bajty
Nie golfowany:
Jestem tu nowy, dopiero co odkryłem tę stronę. Nie mam pojęcia, czy opublikowałem poprawnie, czy T-SQL jest dozwolony, ale wiem, że powyższa procedura działa.
źródło
O 2.2,
4846 znakówPrzykładowy przebieg:
O, 61 znaków
Przykładowy przebieg:
źródło
"qwertyuiop\nasdfghjkl\nzxcvbnm\n"i/r;s{n.'\n=ST?}d
działa tylko na nowym tłumaczu, ale ma 51 bajtów.git submodule update --init
następniemake
Japt ,
4942414038 bajtówJapt to skrócona wersja Ja vaScri pt . Interpretator
?
Powinna być niecenzuralny char Unicode U + 0086.Jak to działa
Teraz bije CJam! :) Sugestie mile widziane!
Wersja niekonkurencyjna, 12 bajtów
Od 11 stycznia dodałem nową fajną funkcję do Japt: jeśli program zawiera przecinek wiodący, zmienne
ABCDEFGHIJL
są przedefiniowywane do różnych wartości.D
jest ustawiony na"QWERTYUIOP\nASDFGHJKL\nZXCVBNM"
, więc;Dv
wystarczy zastąpić ciąg tutaj.źródło
Gema, 56 znaków
Przykładowy przebieg:
źródło
Kod maszynowy 8086 + DOS, 61 bajtów
Hexdump (z widokiem ASCII po prawej):
Kod źródłowy asemblera (może być skompletowany z tasm):
Dwie zabawne rzeczy tutaj:
qwerty
łańcucha wynosi0x011e
. Górny bajt to 1, który jest numerem funkcji DOS do wprowadzania znaków. To oszczędza 1 bajt w kodzie.AND
z0x20
, wszystkie są zamieniane w przestrzeń, która jest następnie drukowana. Jeśli poprzedni znak był bajtem końca linii, zostaje zamieniony na 0 i nie jest wyprowadzane spacja. Służy to do uniknięcia nonsensownej sekwencji0d 20 0a 20
na końcu linii.Jedna prawie zabawna rzecz:
Próbowałem wyszukać znak wejściowy zaczynając od adresu 0 (co zmniejszyło rozmiar programu o 2 bajty), zamiast zwykłego miejsca (początek łańcucha). To prawie działało; jednak nie udało się wprowadzić danych
t
, ponieważ sam kod zawiera bajtt
(jako część kodowania skoku warunkowego). Tak więct
, wyświetliłby kilka śmieciowych bajtów:źródło
𝔼𝕊𝕄𝕚𝕟, 32 znaki / 79 bajtów
Try it here (Firefox only).
Przynajmniej wygrywam w liczbie znaków ... (Liczba bajtów to inna historia.)
O tak, właśnie zdałem sobie sprawę, że zaimplementowałem skróty indeksu (
⎖1
zamiast[1]
) jakiś czas temu. Głupi ja!źródło
C ++,
129, 11297 bajtówNie golfowany:
źródło
puts
zamiaststd::cout<<
#include
doputs
, ale oczywiście, że nie!strstr
to coś.<stdio.h>
zastrstr
.Partia, 206 + 2 = 208 bajtów
Ponieważ wykorzystuje to opóźnione rozszerzenie, należy je wywołać
CMD /V /C keyboard.cmd <letter>
, dodając12 dla/V
przełącznika.źródło
cmd
zaakceptuje ją tak/VC
, jak robią to narzędzia POSIX. Ale jak wiem/V
wymaga własnego/
, który również się liczy.Python, 109 bajtów
Wiem, że jest trochę duży, ale to wszystko, co wiem, jak teraz zrobić!
źródło
kb()
na końcu; wystarczy zdefiniowanie funkcji. Wystarczy 1 przestrzeń wcięcia. Po dokonaniu tych zmian otrzymuję 108 bajtów, korzystając z tej strony .Bash, 80 bajtów
Wypróbuj sam, albo zamień 1 $ na żądany znak, albo stwórz skrypt #! / Bin / bash.
Oto kilka próbek z cygwina:
Nie jest najkrótszy, ale wciąż jestem z tego dumny!
źródło