Программа должна вывести букву, которая больше всего сопряжена. Например, если вашей программе была задана следующая строка:
"Sally's friend Bobby searched for seashells."
он должен выводить, L
потому что "ll"
происходит дважды, что чаще, чем у другой пары "bb"
.
Правила:
- Если более чем одна буква занимает 1-е место для вхождений, выведите все из них в алфавитном порядке (например,
"Sally's friends Jimmy and Bobby rummaged for seashells."
следует вывести обаL
ANDM
[или,"LM"
если хотите], потому что они оба встречаются чаще, чем другие пары). - Буквы, которые утроены, четырехкратно и т. Д., Считаются одной парой (например,
"lll"
in"willless"
считается только одной паройL
). - Буквенные пары должны быть в одном слове (например,
"Sally's sociable friends Sammy and Bobby searched for fabulous seashells."
должны выводиться,L
а неS
потому, что, несмотря на"ss"
наличие большего числа вхождений, чем"ll"
они, они разделены пробелами.) - Считайте только буквы от английского алфавита
- Случай не имеет значения (например
"Ss"
, то же самое, что и"SS"
или"ss"
, и все они считаются одной паройS
.)
Вы можете прочитать свой вклад, где угодно. Самый короткий код выигрывает.
'
т. Д.?['l']
?Ответы:
Pyth,
2625241615 байтПопробуйте онлайн: демонстрация
Объяснение:
источник
eC
->s
сохраняет один байт.Bash + GNU coreutils, 133
Testcases:
источник
11ss11aa
11ss11aa
-> AS :)sort -r
нужно,sort -rn
если у вас есть 10 или более парных букв.CJam,
2927 байтСпасибо @Optimizer за удаление 2 байта!
Попробуйте онлайн в интерпретаторе CJam .
Как это устроено
источник
z~\)-,>
должно работать, насколько я вижу.Pyth -
23222120 байтИспользует подстановку регулярных выражений, чтобы заменить все два или более алфавита на временное значение, и использует
.M
aximal, чтобы получить все значения с наивысшим вхождением. Спасибо @Jakube за указание на избыточность сортировки и сохранение байта.Принимает ввод из стандартного ввода и выводит как стандартный
['l', 'm']
вывод.Попробуйте это онлайн здесь .
источник
С, 155
Что-то другое, без регулярных выражений.
источник
Python 2,
132143 байтаПример выполнения:
источник
CJam, 37 байт
Попробуйте онлайн
Боюсь, без поддержки регулярных выражений будет сложно конкурировать с Pyth. Это лучшее, что я придумал на первом проходе.
Объяснение:
источник
Q (66)
Относительно читабельно для загрузки:
источник
R, 105 байт
Это читает строку текста из STDIN и печатает список наиболее распространенных парных букв в STDOUT с разделителями пробелами.
Ungolfed + объяснение:
Примеры:
Вы можете попробовать это онлайн !
источник
toupper
если вы игнорируете case и используете perl в своемgregexpr
. напримерcat(substr(names(b<-table(regmatches(s<-readline(),gregexpr("(\\w)\\1+",s,T,T))))[b==max(b)],1,1))
toupper
чтобы все равно это сделать.Руби, 60
group_by
создает хэш (словарную) структуру, где ключи - это выходные данные блока, а значения - списки букв, которые приводят к каждому ключу. В этом случае ключи - это число от 2+ повторений буквы без учета регистра.max
сравнивает каждый[key,value]
кортеж лексикографически, поэтому он просто находит максимальный ключ. Затем[1]
возвращает часть списка значений кортежа.источник
Питон 2,
185 159153Принимает ввод в виде строки в кавычках.
источник
C # 160 байт
Где
s
вход:источник
RS, 146 байт
Попытайся! Пожалуйста! У меня ушло навсегда, чтобы сделать кнопки даже с полем вывода на этой странице ...
Ну, это было довольно ... сумасшедшим. Логика здесь довольно странная; Я только отправлю объяснение, если кто-то спросит. (Конечно, я также сказал, что для ответа INTERCAL, чье объяснение было запрошено ... что я никогда не объяснял ...;)
источник
JavaScript
156153источник
f[s]?f[s]+1:1
->-~f[s]
Count only letters from the English alphabet
f=x=>{x.toUpperCase(f={},a=0,o).replace(/([A-Z])\1+/g,(m,s)=>a<(m=f[s]=-~f[s])?(a=m,o=[s]):a>m?0:o.push(s));alert(o.sort().join'')}
(последние 2 '' - это действительно обратныеBash + textutils (grep, sed), 111 символов
Bash + awk (вместо sed), 97 символов
чтобы проверить это, сначала назначьте s
источник
R, 98 байт
Очень похоже на решение Алекса, но использует замену, а не совпадение, для определения последовательных букв. Сканирование используется для получения входных данных, а также для разделения результата подстановки на пробелы.
Пара тестов
источник