Эти три ряда QWERTY - клавиатура qwertyuiop
, asdfghjkl
и zxcvbnm
. Ваша задача - найти самое длинное слово, которое можно набрать, используя только одну строку клавиатуры, из заданного списка слов.
Пример ввода 1
artist
home
gas
writer
geology
marine
twerp
Выход
writer
(Из данных слов, только gas
, writer
и twerp
могут быть написаны с использованием одной строки, а writer
самый длинный)
Слова не могут быть реальными словами (поэтому не допускайте, чтобы третья строка была недействительной). Однако вы можете предположить, что всегда будет ровно один ответ (не больше, не меньше).
Пример ввода 2
wrhuji
bxnzmmx
gllwssjjd
vnccbb
lrkjhgfdsa
tttttt
Выход
bxnzmmx
Дополнительные знаки препинания и пробелы могут быть предоставлены при вводе (в соответствии с требованиями языка). Тем не менее, никакой дополнительной информации не должно быть. Вход и выход в нижнем регистре. Самый короткий код выигрывает.
Ответы:
Python 2, 84 байта
Находит
max
входные данные, сравнивая их по меньшему числу строк клавиатуры, затем увеличивая их длину. Значение строки клавиатуры извлекается с помощью"asdfghjklzxcvbnm".find(c)/9
, который переводит среднюю строку0
в нижнюю строку1
и верхнюю строку, которая исключается-1
, посколькуfind
дает-1
пропущенные значения.Другие попытки:
источник
/
Еще 1 символ для Python 3;)9
иfor
...E
илиe
, вы можете почти всегда удалять пробелы между числом и именем переменной / ключевым словом4if 0else 2
, действует в 2.7.11 и 3.5.1 (и, вероятно, было в силе для нескольких предыдущих версий)Japt,
3230 байтПроверьте это онлайн! Ввод представляет собой массив строк.
Как это работает
источник
"QWERTYUIOP\nASDFGHJKL\nZXCVBNM"
предопределенный литерал? Хорошо сыграно :-)D
заданоQWERTYUIOP\nASDFGHJKL\nZXCVBNM
, даже страница, на которую вы ссылаетесь, кажется, заявляетVariables <...> D 13
;
в начале программы сбрасывает переменныеA-L
к различным значениям.D
устанавливается на строку клавиатуры. Вы можете найти больше информации здесь .Python 2.5+ и 3, 93 байта
Пришлось проверить, сколько ударов для этого подхода; при этом используется тот факт, что в
a.strip(b)
результате получается пустая строка, если онаa
состоит исключительно из символов, встречающихся в b.Функция принимает список строк и возвращает строку.
источник
key
переменная там? Я думаю, что вы можете удалить это.key
аргументmax
функции является ключевым словом только.Сетчатка , 73 байта
Попробуйте онлайн!
Вывод: сетчатка нуждается в стадии сортировки.
объяснение
Это этап grep: он сохраняет только те строки, которые соответствуют регулярному выражению. Т.е. те, которые формируются исключительно из одного из этих классов персонажей.
Теперь нам просто нужно найти самую большую из оставшихся строк. Мы делаем это путем сопоставления всех слов, которые по крайней мере так же длинны, как все слова после них. Это
1
новое дополнение к Retina (выпущено два дня назад), которое ограничивает стадию матча только первым таким матчем. И!
инструктирует Retina напечатать матч (вместо того, чтобы считать).источник
(?<a-b>...)
синтаксис, который редко требуется в гольф-коде.o-r
, офигенно.Java,
154142 или142130 байтПотому что, вы знаете, Java.
C #, для сравнения .
146 байт, если входные данные должны быть единственной строкой со значениями, разделенными
\n
:134 байта, если вместо этого я могу принять ввод как String []:
Слегка разгульный
Вторая лямбда-это
Function<String[],String>
.источник
l->l.stream().filter(g->g.matches("[wertyuio-r]*|[asdfghjkl]*|[zxcvbnm]*")).max((a,b)->a.length()-b.length()).get()
(116 символов)import java.util.*;
в счетчик байтов, то есть взять список составляет -16 байт, принимая список, но +19, чтобы импортировать список. ОДНАКО, вы поймали там, используяmax
вместоreduce
получения -7 байтов.Желе,
4034 байтаПопробуйте онлайн!
Как это работает
источник
Питон 3, 98
Сохранено 5 байтов благодаря Кевину.
Сохранено 3 байта благодаря PM 2Ring.
Сохранено 3 байта благодаря Антти Хаапала.
Грубый принуждение в данный момент. Я фильтрую слова только до тех, которые содержатся в одной строке, а затем сортирую по максимальной длине строки.
Тестовые случаи:
источник
PowerShell v2 +, 72 байта
Принимает ввод через аргументы командной строки как
$args
, затем использует-match
оператор с регулярным выражением для выбора только тех слов, которые состоят исключительно из одной строки клавиатуры. Мы передаем эти результаты в собственностьSort-Object
такого родаLength
. Мы можем сделать это, так как все строки в PowerShell имеютSystem.String
тип, который включает.Length
в себя свойство сортировки. Это сортирует строки в порядке возрастания по длине, поэтому мы берем последнюю строку[-1]
, оставляем ее в конвейере и выводим неявно.пример
источник
Pyth,
4535 байтСпасибо @FryAmThe Eggman за то, что сэкономил мне несколько байтов!
Попробуй это здесь!
Принимает ввод как список слов.
объяснение
источник
Руби,
888269Если мне не разрешено брать список строк и нужно брать многострочную строку, добавьте +12 к партитуре и добавьте
.split('\n')
прямо перед.grep
вызовом.Спасибо CatsAreFluffy за то, что он научил меня лабиринтам в Ruby и дальнейшим оптимизациям от manatwork.
источник
.split('\n')
перед тем.select
, верно? А почему нет крепких лямбд?.select
блока кода, это сопоставить его с регулярным выражением, то.grep
это более удобно; нет необходимости ставить скобки вокруг параметров последнего метода в цепочке вызовов;.length
имеет более короткий псевдоним.size
:->x{x.grep(/^([o-rwetyui]+|[asdfghjkl]+|[zxcvbnm]+)$/).max_by &:size}
C #, 141/112 / (120 байт)
Претендент на худший язык гольфа, по понятным причинам. Использует "мой" языковой стандарт с qwertz вместо qwerty, но в остальном работает нормально.
Полная программа без где:
Только вывод без Где:
Только вывод (оригинал):
источник
bash
105 байтИ различные другие утилиты, конечно.
источник
awk
Код можно записать короче$0=length"\t"$0
.awk,
928481 байтсэкономили 3 байта благодаря предложению @Wolfgang
источник
[wetyuio-r]
вместо этого, а также еще два, выполнив/^(expr|expr|expr)$/
вместо `/ ^ expr $ | ^ expr $ | ^ expr $ /gawk
иmawk
счастливы без них.MATL , 54 байта
Это работает с текущей версией (14.0.0) языка / компилятора.
Формат ввода (первый пример)
или (второй пример)
Попробуйте онлайн!
объяснение
источник
Perl, 81 байт
$a=$1 if/^([wetyuio-r]+|[asdfghjkl]+|[zxcvbnm]+)$/&&1<<y///c>$a=~y///c;END{say$a}
Символ к букве считается довольно высоким.
источник
Groovy, 65 символов
Образец прогона:
Обратите внимание, что используемое регулярное выражение
.grep()
не требует привязки, что также позволяет сэкономить группировку:источник