Для строки, содержащей только буквы, выведите длину самого длинного ряда последовательных букв алфавита, которое содержит слово, где порядок не имеет значения. Пример алгоритма может отсортировать слово, удалить дубликаты, а затем вывести длину самого длинного прогона.
Тестовые случаи
watch -> 1
stars -> 3
antidisestablishmentarianism -> 3
backdoor -> 4
a -> 1
tutorials -> 4
Например, antidisestablishmentarianism
содержит буквы abdehilmnstr
. Самые длинные пробеги lmn
и rst
, как длины 3.
Заметки
Вы можете взять все строчные, все прописные или смешанные буквы в качестве входных данных, но регистр не может закодировать информацию о слове (то есть вы не можете сделать первые n
символы заглавными, где n
длина самого длинного пробега).
Это код-гольф , поэтому выигрывает самый короткий ответ в байтах.
rst
- uniquify, сортировка и получить самый длинный пробег подряд. Можем ли мы принять ввод как массив символов?Ответы:
Желе ,
10 9 8 76 байтПопробуйте онлайн!
9 использовал метод Сока :
ṢQẆẇƇØaṪL
Как?
источник
R ,
4443 байтаРаботает с массивом строчных букв. Изменить: изменил его с тестирования истинных значений на умножение на T / F для байта.
Попробуйте онлайн!
Выполняет ли кодирование длины серии букв, содержащихся в предоставленных символах, затем возвращает максимальное значение для истинных значений.
источник
APL (Dyalog Classic) ,
109 байтов-1 байт благодаря H.PWiz
Попробуйте онлайн!
⍞
вводит строку⎕a
это прописные буквы английского алфавита⎕a∊⍞
логический вектор длины 26 - какие буквы встречаются в строке?⊆⍨
векторы формы последовательных 1с≢⍉↑
смешать в матрицу, транспонировать и вернуть ее высоту - эффективно найти длину самого длинного вектора 1 систочник
⌈/≢¨
->≢⍉↑
Perl 6 , 41 байт
Попробуй это
Expanded:
Учитывая
'stars'
,.ords.sort.squish Z-0..*
вернется(97,113,113,113)
источник
Haskell , 35 байт
Попробуйте онлайн!
Haskell , 50 байтов
Попробуйте онлайн!
источник
JavaScript (Node.js) , 51 байт
Случай ввода строки не имеет значения.
Попробуйте онлайн!
Как?
Сначала мы конвертируем входную строку в битовую маску встречающихся букв с помощью:
Побитовый сдвиг обрабатывается с неявным модулем 32.
Пример:
Затем мы «уменьшаем» количество последовательных 1-х в битовой маске путем многократного «И» с копией влево-вправо, пока все биты не будут очищены:
Количество последовательных букв в алфавитном порядке - это количество итераций описанного выше процесса. Отсюда рекурсивная функция:
источник
Pyth , 9 байт
Предполагается, что вводом является строчная строка. Попробуйте онлайн здесь или проверьте все тестовые примеры сразу здесь .
источник
y
вместо.:
.MATL , 10 байт
Ввод в нижнем регистре.
Попробуйте онлайн! Или проверьте все тестовые случаи .
Здесь используется сочетание @ Sundar's (old) и @ ngn's подходов .
объяснение
Рассмотрим ввод
'tutorial'
в качестве примера.источник
Python 3 , 55 байт
Попробуйте онлайн!
Python 2 , 58 байт
Попробуйте онлайн!
Python 2 , 63 байта
Попробуйте онлайн!
источник
f=lambda s:s and-~f({*s}&{c+1for c in s})or 0
?05AB1E , 6 байтов
Œ...é
æ
Попробуйте онлайн!
Также 6 байтов
Сохранено 2 байта, опять же благодаря Adnan :
ASå
вместо этого используетсяêÇ¥Θ
, таким образом, также устраняется необходимость увеличения максимума в конце. Посмотрите историю изменений, чтобы сравнить поведение двух методов.Попробуйте онлайн!
Как это работает
Мне нравятся такие вызовы, которые приводят к множеству разных подходов.
источник
êæAÃ`g
а вторая программа может быть в гольфASåγOZ
.ASå
трюк.TSQL (Microsoft SQL Server), 206 байт
Для ввода используйте следующий
DECLARE
оператор перед кодом:Ожидается, что входные данные имеют одинаковый регистр (верхний или нижний регистр не имеет значения, но смешанный регистр не будет работать).
Ungolfed:
Объяснение:
Разбивает строку на ряд для каждого символа (адаптировано с /programming//a/27623321/1474939 ) в
CTE
cte.Затем находит последовательности последовательных букв путем преобразования в код ASCII в
Runs
cte.Наконец, он выбирает самый большой прогон и отчитывается в операторе выбора.
источник
C (gcc) ,
5856 байтСохранено 2 байта благодаря @gastropner
Использует тот же подход, что и мой Node.js ответ . Случай ввода строки не имеет значения.
Попробуйте онлайн!
комментарии
источник
1<<*s
оборачивает или это стандартное поведение?1<<32
результатов0
и выдает предупреждения размера типа данных.C (gcc) , 100 байт
Попробуйте онлайн!
объяснение
Попробуйте онлайн!
источник
MATL ,
1210 байтПопробуйте онлайн!
Объяснение:
91:
- Создайте список чисел от 1 до 91. 91 - это символ «[», который следует после «Z». Таким образом, это эффективно создает список всех символов от '\ x1' до '['. (В основном мы хотим, чтобы те находились в диапазоне ['A'-1:' Z '+ 1], но остальные не повредят, а требуют меньше счетчика.)w
- Неявный ввод, перенести ввод на вершину стека (предположим, «Учебники»)X-
- Установите разницу. Это оставляет только символы, которые не были найдены во входной строке, в их первоначальном порядке («стабильный»). стек:' !"#$%&'()*+,-./0123456789:;<=>?@BCDEFGHJKMNPQVWXYZ['
d
- Разница между последовательными элементами в этом списке. стек:[1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 2 1 2 1 2 1 5 1 1 1 1 1]
X>
- Получить максимальное из этих различий, то есть максимальное количество последовательных алфавитов, отсутствующих в заданной разности.q
- Уменьшение, чтобы получить фактическое количество символовСтаршая:
12 байт
Попробуйте онлайн!
источник
К (нгн / к) ,
1715 байтПопробуйте онлайн!
-
есть только для преобразования символов в числа (не имеет значения, если они отрицательные){
}\
применяет функцию до сходимости, сохраняя промежуточные результатыx+1
добавьте 1 к каждому числу вx
^
«без» - список слева без элементов, встречающихся в списке справаx^x^x+1
означает, чтоx
пересекается сx+1
1_
отбросить первый элемент#
подсчитыватьисточник
#1_{x^x^x+1}\-
?Сетчатка 0.8.2 , 54 байта
Попробуйте онлайн! Ссылка включает в себя тестовые случаи. Объяснение:
Сортировать буквы по порядку.
Дублируйте письма.
Дублируйте каждую букву в отдельных строках.
Уменьшить первую из каждой пары.
Если теперь это соответствует предыдущему символу, соедините их вместе.
Подсчитайте длину всех трасс.
Сортируйте их в обратном порядке.
Возьмите первый (самый большой).
источник
J, 16 байт
-7 байт благодаря FrownyFrog
Попробуйте онлайн!
объяснение
источник
]
вместо~.@/:~
алфавита уже отсортированы, поэтому вам не нужно сортировать входные данные и сохранять только уникальные элементы. TIO - 18 байтC (gcc) ,
9892 байтаСпасибо Джонатану Фреху за предложения.
Прописные только.
Попробуйте онлайн!
источник
k;
в конце. Неявное возвращение gcc является побочным эффектом присваивания переменной, который, по-видимому, выполняется как последний шаг в цикле for.Japt
-h
, 9 байтНечувствителен к регистру, принимает ввод в виде строки или массива символов.
Попробуйте или запустите несколько тестов (вторая строка служит заменой
-h
флага, поэтому этот флаг можно использовать для обработки нескольких входов)объяснение
источник
-1
, пожалуйста?Perl 5, 68 байт
Попробуйте онлайн .
Ungolfed:
источник
C (gcc) ,
666563 байтаПредполагается, что ввод содержит только строчные буквы. Во-первых, он перебирает строку и устанавливает биты в целое число, в соответствии с которым видны буквы. Далее он считает самую длинную полосу из 1 бита в целом числе.
Редактировать:
a
глобально, поэтому при первом вызове будет инициализировано 0. Второй цикл гарантирует, что он сбрасывается до 0, прежде чем вернуться. Поэтому мы можем избежать сброса настроек вручную.Попробуйте онлайн!
источник
Perl 5, 62 + 2 (
-nF
флаг) = 64 байтаПопробуйте онлайн .
Perl 5, 68 байт
Попробуйте онлайн .
источник
-pF
и-MList::Util+(max)
перейти к 56: Попробуйте онлайн!-MList::Util=max
добавляет 16 байт к результату.-MList::Util+(max)
-pF
или подобным. codegolf.meta.stackexchange.com/a/14339/9365SQLite 265
Ungolfed:
источник
Брахилог ,
141312 байтПопробуйте онлайн!
Достаточно медленно, чтобы не допустить ввода «антидисестаблишментаризма» в TIO. Относительно намного быстрее один на +1 байт:
13 байт
Попробуйте онлайн!
Используйте
dos
вместо того , чтобы⊇p
: S являетсяd
eduplicated сo
rteds
ubstring входа, а не только некоторой перестановкой некоторого подмножества.источник
Haskell , 87 байт
Попробуйте онлайн!
Ожидает строчные буквы
Объяснение:
источник
Python 2 , 95 байт
Попробуйте онлайн!
источник
Pyth - 11 байт
Входные данные должны быть заключены в кавычки. Если не разрешено:
Pyth - 12 байт
Объяснение:
источник
Котлин , 97 байт
Попробуйте онлайн!
источник
Java 8, 77 байт
Порт Арнаулда С ответ . Попробуйте это онлайн здесь .
Ungolfed:
источник
> <> , 63 байта
Читает строчные символы из стандартного ввода, выводит число в стандартный вывод.
Попробуйте онлайн!
источник