Trzy rzędy klawiatury qwerty to qwertyuiop
: asdfghjkl
i zxcvbnm
. Twoim zadaniem jest znalezienie najdłuższego słowa, które można wpisać za pomocą tylko jednego wiersza klawiatury, z podanej listy słów.
Przykładowe dane wejściowe 1
artist
home
gas
writer
geology
marine
twerp
Wydajność
writer
(Danego słowa, tylko gas
, writer
i twerp
mogą być zapisywane za pomocą pojedynczego wiersza, i writer
jest najdłuższym)
Słowa mogą nie być rzeczywistymi słowami (więc nie zakładaj, że trzeci wiersz jest nieprawidłowy). Możesz jednak założyć, że zawsze będzie dokładnie jedna odpowiedź (nie więcej, nie mniej).
Przykładowe wejście 2
wrhuji
bxnzmmx
gllwssjjd
vnccbb
lrkjhgfdsa
tttttt
Wydajność
bxnzmmx
Wprowadzane mogą być dodatkowe znaki interpunkcyjne i białe znaki (zgodnie z wymaganiami językowymi). Nie należy jednak podawać żadnych dodatkowych wyników. Dane wejściowe i wyjściowe są pisane małymi literami. Najkrótszy kod wygrywa.
Odpowiedzi:
Python 2, 84 bajtów
Znajduje dane
max
wejściowe, porównując mniejszą liczbę rzędów klawiatury, a następnie zwiększając ich długość. Wartość rzędu klawiatury jest wyodrębniana przez"asdfghjklzxcvbnm".find(c)/9
, który przenosi środkowy wiersz0
, dolny wiersz1
i górny wiersz, który jest wykluczony-1
, ponieważfind
daje-1
brakujące wartości.Inne próby:
źródło
/
Jeszcze 1 znak dla Pythona 3;)9
afor
...E
lube
, można prawie zawsze usunąć białe spacje między liczbą a nazwą zmiennej / słowem kluczowym4if 0else 2
jest ważny w wersjach 2.7.11 i 3.5.1 (i prawdopodobnie był ważny dla kilku wcześniejszych wersji)Japt,
3230 bajtówPrzetestuj online! Dane wejściowe to tablica ciągów.
Jak to działa
źródło
"QWERTYUIOP\nASDFGHJKL\nZXCVBNM"
predefiniowany dosłowność? Dobrze zagrane :-)D
jest ustawioneQWERTYUIOP\nASDFGHJKL\nZXCVBNM
, nawet strona, do której się odwołujesz, wydaje się zawieraćVariables <...> D 13
;
na początku programu resetuje zmienneA-L
do różnych wartości.D
jest ustawiony na ciąg klawiatury. Więcej informacji znajdziesz tutaj .Python 2.5+ i 3, 93 bajty
Musiałem sprawdzić, ile uderzeń dla tego podejścia; wykorzystuje to fakt, że
a.strip(b)
wynikiem jest pusty ciąg znaków, jeślia
składa się wyłącznie ze znaków występujących w b.Funkcja pobiera listę ciągów i zwraca ciąg.
źródło
key
tam zmienna? Myślę, że możesz to usunąć.key
argumentemmax
funkcji jest tylko na słowa kluczowe.Siatkówka , 73 bajty
Wypróbuj online!
Wniosek: Retina wymaga etapu sortowania.
Wyjaśnienie
To jest etap grep: zachowuje tylko linie, które są dopasowane przez wyrażenie regularne. To znaczy te, które powstają wyłącznie z jednej z tych klas postaci.
Teraz musimy tylko znaleźć największy z pozostałych ciągów. Robimy to, dopasowując wszystkie słowa, które są co najmniej tak długie, jak wszystkie słowa po nich.
1
To nowy dodatek do siatkówki (wydany dwa dni temu), co ogranicza ten etap dopasowania do rozważa tylko pierwszy taki mecz. I!
instruuje Retinę, aby wydrukowała mecz (zamiast go liczyć).źródło
(?<a-b>...)
składni, która jest rzadko potrzebna w golfie kodowym.o-r
, niesamowite.Java,
154142 lub142130 bajtówPonieważ, wiesz, Java.
C #, dla porównania .
146 bajtów, jeśli dane wejściowe muszą być pojedynczym ciągiem znaków, a wartości należy oddzielić
\n
:134 bajty, jeśli zamiast tego mogę przyjąć dane wejściowe jako String []:
Nieznacznie nie golfista:
Druga lambda to
Function<String[],String>
.źródło
l->l.stream().filter(g->g.matches("[wertyuio-r]*|[asdfghjkl]*|[zxcvbnm]*")).max((a,b)->a.length()-b.length()).get()
(116 znaków)import java.util.*;
w liczbie bajtów, co oznacza, że pobranie listy wynosi -16 bajtów, biorąc Listę, ale +19, aby zaimportować Listę. JEDNAK złapałeś tam, używającmax
zamiastreduce
-7 bajtów.Galaretka,
4034 bajtówWypróbuj online!
Jak to działa
źródło
Python 3, 98
Zaoszczędził 5 bajtów dzięki Kevinowi.
Zaoszczędzono 3 bajty dzięki PM 2Ring.
Zaoszczędzono 3 bajty dzięki Antti Haapala.
Brute zmusza go w tej chwili. Filtruję słowa do tylko tych zawartych w jednym rzędzie, a następnie sortuję według maksymalnej długości łańcucha.
Przypadki testowe:
źródło
PowerShell v2 +, 72 bajty
Pobiera dane wejściowe za pomocą argumentów wiersza polecenia
$args
, a następnie używa-match
operatora z wyrażeniem regularnym, aby wybrać tylko słowa, które składają się wyłącznie z jednego wiersza klawiatury. Przekazujemy wyniki doSort-Object
tego rodzaju według właściwościLength
. Możemy to zrobić, ponieważ ciągi znaków w programie PowerShell są tego samegoSystem.String
typu, co zawiera.Length
jako właściwość do sortowania. To sortuje ciągi w porządku rosnącym według długości, więc bierzemy ostatni z[-1]
, zostawiamy go w potoku, a dane wyjściowe są niejawne.Przykład
źródło
Pyth,
4535 bajtówDzięki @FryAmThe Eggman za uratowanie mi kilku bajtów!
Wypróbuj tutaj!
Pobiera dane wejściowe jako listę słów.
Wyjaśnienie
źródło
Ruby,
888269Jeśli nie wolno mi wziąć listy ciągów i muszę wziąć ciąg wielowierszowy, dodaj +12 do wyniku i dodaj
.split('\n')
bezpośrednio przed.grep
wywołaniem.Dzięki CatsAreFluffy za nauczenie mnie o mocnych lambdach w Ruby i dalsze optymalizacje z manatwork
źródło
.split('\n')
przed.select
, prawda? A dlaczego nie ma mocnych lambdów?.select
bloku kodu jest dopasowanie go do wyrażenia regularnego,.grep
to bardziej odpowiednie; nie trzeba umieszczać nawiasów wokół parametrów ostatniej metody w łańcuchu wywołań;.length
ma krótszy alias.size
:->x{x.grep(/^([o-rwetyui]+|[asdfghjkl]+|[zxcvbnm]+)$/).max_by &:size}
C #, 141/112 / (120 bajtów)
Rywalizuj o najgorszy język golfa, z oczywistych powodów. Używa ustawień regionalnych „my” z qwertz zamiast qwerty, ale w przeciwnym razie działa dobrze.
Pełny program bez:
Wyjście tylko bez Where:
Tylko wyjście (oryginalne):
źródło
bash
, 105 bytesAnd various other utilities, of course.
źródło
awk
code can be written shorter as$0=length"\t"$0
.awk ,
928481 bytessaved 3 bytes thanks to @Wolfgang suggestion
źródło
[wetyuio-r]
instead, and also two more by doing/^(expr|expr|expr)$/
instead of `/^expr$|^expr$|^expr$/gawk
andmawk
are happy without them.MATL, 54 bytes
This works with current version (14.0.0) of the language/compiler.
Input format is (first example)
or (second example)
Try it online!
Explanation
źródło
Perl, 81 bytes
$a=$1 if/^([wetyuio-r]+|[asdfghjkl]+|[zxcvbnm]+)$/&&1<<y///c>$a=~y///c;END{say$a}
Symbol to letter count pretty high.
źródło
Groovy, 65 characters
Sample run:
Note that the regular expression used by
.grep()
not requires anchoring, allowing to spare the grouping too:źródło