Когда вы редактируете сообщение в SE, все последующие изменения в течение 5-минутного льготного периода объединяются в него. Учитывая список случаев, когда вы редактируете сообщение, считайте, что изменения не были сделаны в течение льготного периода.
Скажем, вы редактируете в считанные минуты [0,3,4,7,9,10,11,12]
. Это приводит к 3 изменениям время от времени [0,7,12]
, с остальными, происходящими в их льготные периоды.
0: [3,4]
7: [9,10,11]
12: []
- Первое редактирование выполняется в минуту 0. Изменения в минуты 3 и 4 находятся в пределах 5-минутного льготного периода, поэтому не учитываются.
- Второе редактирование - минут 7. Редактирование минут 9, 10, 11 - в течение льготного периода.
- Третья редакция на 12-й минуте находится за 5-минутным льготным периодом, начиная с 7-й минуты.
Итак, на выходе 3.
Список раз в минутах будет список целых чисел. Первое число всегда будет 0 для первоначальной публикации, которую мы считаем редактированием.
Тестовые случаи:
[0]
[0,3,5,7]
[0,3,4,7,9,10,11,12]
[0,30,120]
[0,4,8,12,16]
[0,4,8,12,16,20]
[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]
[0,5,10,15,20]
[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
[0,1,4,5,9,11,12,14,16,18,23,24,26,28,29,30]
Выходы:
1
2
3
3
3
3
4
5
5
6
Для простоты копирования вот пары входов, выходов и входов / выходов:
[[0], [0, 3, 5, 7], [0, 3, 4, 7, 9, 10, 11, 12], [0, 30, 120], [0, 4, 8, 12, 16], [0, 4, 8, 12, 16, 20], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [0, 5, 10, 15, 20], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], [0, 1, 4, 5, 9, 11, 12, 14, 16, 18, 23, 24, 26, 28, 29, 30]]
[1, 2, 3, 3, 3, 3, 4, 5, 5, 6]
[([0], 1), ([0, 3, 5, 7], 2), ([0, 3, 4, 7, 9, 10, 11, 12], 3), ([0, 30, 120], 3), ([0, 4, 8, 12, 16], 3), ([0, 4, 8, 12, 16, 20], 3), ([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19], 4), ([0, 5, 10, 15, 20], 5), ([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], 5), ([0, 1, 4, 5, 9, 11, 12, 14, 16, 18, 23, 24, 26, 28, 29, 30], 6)]
Leaderboard:
code-golf
sequence
counting
subsequence
code-golf
arithmetic
code-golf
string
interpreter
code-golf
number
sequence
code-golf
quine
code-golf
sequence
code-golf
ascii-art
kolmogorov-complexity
alphabet
code-golf
kolmogorov-complexity
code-golf
string
code-golf
string
kolmogorov-complexity
XNOR
источник
источник
Ответы:
JavaScript, 36 байт
Попробуйте онлайн!
Как это работает
В каждом рекурсивном вызове мы удаляем все элементы из массива, которые находятся на расстоянии более 4 минут от первого элемента.
Есть маленькая хитрость с именем переменной
$
. Проверка$>f
сначала преобразует массив в строку, а затем сравнивает ее со строковым представлением функции,f
а затем сравнивает их лексикографически. Первым символом строкового массива является цифра и, следовательно, только имя переменной с одним символом, индекс ascii которого меньше, чем индексы всех цифр$
. Замена$
на любое другое имя переменной всегда вернетfalse
.источник
Mathematica,
46403733 байтаобъяснение
Установите
i
в1
иj
в0
.Карта на все элементы ввода ...
Если
(element) - j < 5
false, то увеличиватьi
и устанавливатьj
на элемент (оценка короткого замыкания).Выход
i
.источник
Шелуха , 8 байт
Попробуйте онлайн!
объяснение
источник
Python 2 , 58 байт
Попробуйте онлайн!
49 байтов
Используя рекурсивный метод , показанный на @ ThePirateBay в растворе .
Попробуйте онлайн!
источник
and 1+f(...)
может быть замененоand-~f(...)
на 49 байтовx=a[:1]
эквивалентноx=[0]
, так как в вопросе прямо говорится, что первый элемент всегда0
( 62 байта )J , 20 байт
Попробуйте онлайн!
объяснение
источник
MATLAB, 34 байта
Анонимная функция, которая вводит массив и выводит число.
При этом используется
uniquetol
функция, в частности ее формаy = uniquetol(x, t)
, которая даетy
уникальные элементыx
с допускомt
. При этом, похоже , что функция следует «ленивому» подходу: сортируйтеx
, выбирайте свою первую запись и продолжайте пропускать записи, пока они находятся в пределах допуска последней выбранной записи. Это именно то, что нужно здесь.uniquetol
Функция автоматически масштабирует заданный допуск по максимальной абсолютной величине вa
. Вот почему нам нужно разделение здесь.x+1
используется вместо того,x
чтобы избежать деления на 0.Проверка контрольных примеров:
источник
uniquetol
... Представлено в R2015a . У меня R2014b :( Хороший ответ :)05AB1E ,
201918151411 байтОбъяснение:
Попробуйте онлайн!
редактировать
источник
¼4¹vDy‹i¼y4+}}¾
v®y‹iy4+©\¼
Шелуха, 6 байт
Попробуйте онлайн!
источник
ü
работает так! Это очень удобно.ġ
но он не работает, а в HaskellgroupBy
работ:length.groupBy((>).(+5))
. Потом я обнаружил ,ü
что также приводит к более короткому Haskell эквивалент:nubBy
.Haskell ,
3130 байтПопробуйте онлайн!
Сохранено 1 байт благодаря Zgarb
источник
z-4>x
должен сохранить байт.05AB1E , 14 байтов
Попробуйте онлайн!
источник
æ
для суперсет, это отличный трюк!æ
означает «powerset».MATL ,
1312 байтПопробуйте онлайн! Или проверьте все тестовые случаи .
объяснение
источник
Pyth , 14 байт
Это рекурсивная функция. Позвони
y[0 1 2 3 4 5 6 7 8)
, где[...)
твой список.Или попробуйте здесь! или Проверьте все контрольные примеры.
объяснение
Это примерно эквивалентно решению Python. Перевод даст следующие результаты:
Разбивка кода
источник
.U
. Предложения приветствуютсяJava 8,
7861605956 байтПорт ответа @ JungHwanMin
Попробуйте онлайн!
источник
a->{int i=0;for(int l:a)if(l-a[i]>4)a[++i]=l;return-~i;}
C # .NET, 63 байта
Объяснение:
Попробуй это здесь.
источник
Perl 5 , 54 байта
52 байта кода +2 для
-ap
Попробуйте онлайн!
источник
Pyth, 25 байт
Попробуйте это здесь: http://pyth.herokuapp.com
источник
Протон , 40 байт
Сильно вдохновлен решением Python .
Попробуйте онлайн!
источник
Ly , 29 байт
Попробуйте онлайн!
Это заняло много времени, чтобы добраться сюда.
источник
Сетчатка ,
3226 байтПопробуйте онлайн! Объяснение:
Преобразовать в унарный, но добавить 1, потому что 0 - сложное понятие в Retina.
Подсчитайте количество правок, но включите все правки в каждом матче.
источник
Котлин, 52 байта
Публикация в виде функции, если это не приемлемо, я заменю ее на метод
представление
украшенный
Тест
TryItOnline
источник
PowerShell , 74 байта
Итеративное решение. Длительный из-за ограждения на
for
петле, требующего дополнительной проверки на конце. Предложения по игре в гольф приветствуются.Мы принимаем входные данные
$args[0]
как буквальный массив, отделяем первый элемент в,$x
а остальные - в$y
. Затем, пока есть еще элементы$y
, мы зациклимся.Каждая итерация, мы проверяем , является ли текущая метка
$x
является5
или более от$l
аст редактирования метки времени. Если это так, мы увеличиваем наш счетчик$i++
и устанавливаем текущую метку времени. Затем, на итерации цикла, мы удаляем следующий элемент$x
и оставляем его в$y
.Как только мы выйдем из цикла, мы выводим
$i
, плюс1
для начального редактирования, плюс, находится ли окончательная временная метка более чем на пяти шагах от последнего редактирования (с логическим значением, неявно приведенным к целому числу). Этот результат остается в конвейере, а вывод неявным.Попробуйте онлайн!
источник
R , 52 байта
Попробуйте онлайн!
Простая анонимная функция, которая итеративно удаляет элементы из списка, которые находятся на расстоянии менее 5 от первого элемента, пока список не пуст, затем возвращает счетчик.
источник
Clojure, 53 байта
Это отслеживает «время начала редактирования», а затем возвращает их различное количество.
источник
Japt , 14 байт
Попытайся
объяснение
Неявный ввод массива
U
Получить длину
U
.Логическое И (
&&
) - выполнить следующее, только еслиÊ
верно (не ноль).Рекурсивный вызов.
Filter (
f
)U
, передавая каждый элемент через функцию.Получите разницу (
a
) между текущим элементом и первым элементом (g
) изU
.Больше чем 4?
Добавить
1
.Неявный вывод результирующего целого числа.
источник
Желе , 11 байт
Попробуйте онлайн!
объяснение
12 байт
Попробуйте онлайн!
объяснение
источник