Предположим, вам дан набор непересекающихся интервалов целых чисел [a1,b1],[a2,b2],[a3,b3],...,[aN,bN]
. (Где [a,b]
множество целых чисел больше или равно a
и меньше или равно b
.)
Интервал в индексе X
охватывает bX - aX + 1
значения. Мы позвоним по этому номеру cX
.
Учитывая, что каждый интервал может быть ...
- без изменений (остается как
[aX,bX]
), - продлен вправо в
+
сторону от номера строкиcX
(становясь[aX,bX + cX]
), - или продлен влево к
-
стороне номера линииcX
(становясь[aX - cX,bX]
),
Каково максимальное количество значений, которое может быть покрыто объединением всех обновленных интервалов, учитывая, что они все еще не пересекаются?
Напишите функцию или программу, которая принимает строку в форме [a1,b1],[a2,b2],[a3,b3],...,[aN,bN]
и вычисляет этот максимум. Если вы пишете функцию, верните значение. Если вы пишете полную программу, используйте stdin для ввода и выведите значение в stdout (или используйте самые близкие альтернативы).
Вы можете предположить, что все значения находятся в пределах нормальных 32-разрядных целочисленных пределов со знаком, и это aX
меньше или равно bX
для всех индексов X
. Интервалы могут быть в любом порядке, они не обязательно всегда увеличиваются. Они должны быть представлены в виде строки в формате выше. Строка может быть пустой, и в этом случае ответ будет 0.
Самая короткая подача в байтах побеждает.
пример
Если бы вход был [-3,0],[1,2],[4,9]
выходным, было бы 22. Средний интервал не имеет места для расширения в любом случае, поэтому он должен оставаться неизменным. Левый и правый интервалы могут быть увеличены до [-7,0]
и [4,15]
соответственно. Объединение [-7,0]
и [1,2]
и [4,15]
содержит все значения от -7 до 15, кроме 3. Это 22 значения.
источник
[5,6]
стать[3,8]
(для ответа 6), или это может быть просто[5,8]
или[3,6]
(для ответа 4)?Ответы:
Haskell, 145 байт
Образцы прогонов:
источник
R
282278269247Это получилось очень быстро, имея дело со строковым вводом. Я подозреваю, что могу сыграть в гольф лучше, но на данный момент времени не хватило.
По сути идея
Редактировать: понял, что я неправильно подсчитал символы, а затем перестроил несколько вещей, чтобы побрить несколько.
источник