Учитывая список натуральных чисел, напишите код, который находит длину самого длинного непрерывного подсписка, который увеличивается (не строго). Это самый длинный подсписок, так что каждый элемент больше или равен последнему.
Например, если вход был:
Самый длинный увеличивающийся будет , поэтому вы получите .
Ваш ответ будет оценен, если взять его источник в виде списка байтов, а затем найти длину самого длинного увеличивающегося подсписка этого списка. Более низкая оценка - цель. Связи нарушаются в пользу программ с меньшим общим байтом.
code-challenge
source-layout
Специальный охотник за гарфами
источник
источник
True
чтобы он был заменой,1
но это может быть. Вы должны быть в состоянии обработать пустой список (вывод, конечно, 0).[] => 0
,[0] => 1
,[3,2,1] => 1
,[1,2,1,2] => 2
Ответы:
Pyth , оценка 2 (8 байт)
Попробуй это здесь!
Кодовые точки
[108, 101, 102, 83, 73, 84, 46, 58]
. Другое более короткое решение -leSI#.:
3 балла, но его кодовые баллы[108, 101, 83, 73, 35, 46, 58]
, которые на самом деле очень близки к 1 баллу.Перестановка немного может помочьNevermind, встроенные подстроки.:
не могут быть переставлены, поэтому наименьшее значение должно быть 2, если программа его использует.Как?
источник
Haskell , оценка 2,
6664616065 байтПопробуйте онлайн! (проверяет себя).
Я никогда не думал, что смогу получить счет 2 с Haskell, и все же я здесь!
Функция
g
вычисляет длины всех увеличивающихся подстрок рекурсивно.foldr1 max.g
принимает максимум из этих длин (foldr1 max
эквивалентноmaximum
, но с более низким баллом).источник
1+a : b
не является необходимым, так что это 62 байта.1
для пустого списка, куда он должен вернуться0
JavaScript (Node.js) ,
оценка 3,оценка 2,5346 байтов,5150 байтов-7 байт спасибо @Arnauld
+5+4 пробела в обмен на -1 очкоПопробуйте онлайн!
Предполагается не пустой ввод. 61 байт, если пустой список должен быть обработан. Оценка 2 еще.
Попробуйте онлайн!
... или 58, если возвращение
false
разрешено. Оценка 2 еще.источник
Шелуха , 5 байт , оценка = 2
Попробуйте онлайн!
Маловероятно, что Husk получит оценку ниже 2, потому что
ġ
1 имеет действительно высокий код и ему нужно что-то, чтобы получить максимум и длину. Можно было бы попытаться использовать несколько функций, но это\n
было бы перед любыми вспомогательными функциями, которые имеют действительно низкую кодовую точку, поэтому что-нибудь после этого будет создавать увеличивающуюся последовательность байтов по крайней мере длиной 2.1: кажется, что лучший способ использования операторов сравнения должен следовать различным функциям разделения, таким как
↕
(span
).объяснение
источник
Сетчатка 0.8.2 , 40 байт, оценка 3
Попробуйте онлайн! Ссылка включает себя как байтовые коды в качестве входных данных. Объяснение:
Преобразовать в одинарный.
Сплит по убывающим парам.
Удалить цифры.
Сортировать запятые в обратном порядке. (Я обычно писал бы это как,
O^
но не могу сделать это здесь по очевидным причинам.)Подсчитайте самый длинный запятую и добавьте один, чтобы включить окончательное число.
источник
Japt
-h
, 6 байт, оценка 2Не думайте, что оценка 1 возможна. Должен работать со строками и массивами символов тоже.
Попробуйте - включенный контрольный пример - это коды решения.
объяснение
источник
MATL , оценка 2, 13 байт
Ввод может быть:
MATL использует кодировку ASCII. Кодовые точки приведенного выше кода
Попробуйте онлайн!
объяснение
источник
Паскаль (FPC) , оценка 2
111 байт
Попробуйте онлайн!
Предполагается не пустой ввод. Числа взяты из стандартного ввода, разделенных пробелами.
источник
Желе , 8 байт , оценка 2
Вероятно, есть решение 1 балла как-то ...
Попробуйте онлайн!
Исходный код в виде списка байтовых значений:
Как?
источник
Perl 6 , оценка 2, 46 байт
Попробуйте онлайн!
Обрабатывает пустой список. Оригинальный код был:
Таким образом, только 5 дополнительных байтов, чтобы уменьшить счет до 2.
Изменить: Ах, я выяснил, как удалить назначение , но тогда я не могу получить этот счет ниже 3 из-за
)]]
...Объяснение:
источник
[[&(*+*)]]
работает как[+]
? Удивительно ...Z
иX
. Попробуйте онлайн!{max 0,|.[[X..] ^$_ xx 2].map({+$_ if [<=] $_})}
05AB1E , оценка 3 (9 байт )
Скорее всего, может быть 2 балла как-то.
Кодовые точки байтов программы:
[140,1,90,100,80,125,233,9,103]
(два подсписка длины 3:[1,90,100]
и[80,125,233]
)Попробуйте онлайн.
Объяснение:
источник
Java (JDK) , оценка 3, 94 байта
Попробуйте онлайн!
Порт моего (с предложениями от Арнаулда) JS ответа.
etu
вreturn
иhil
вwhile
делают невозможным гольф забить 2.for
не может быть использован здесь, потому что:;for
восходящийfor
нельзя использовать в начале лямбда-тела (ограничения объема). Можно обернуть его,{}
но, видимо, с помощьюwhile
сохраненных байтов.источник
\u
в некоторых местах, но тогда вы должны были00
следовать за цифрой, которая все равно 3 ...Powershell, оценка 3, 44 байта
Тестовый скрипт:
Выход:
Объяснение:
contiguous sub-list that is increasing (not strictly)
. Затем сценарий сортирует длину и берет последний (максимум)(...|sort)[-1]
.Powershell 6, оценка 3, 43 байта
То же, что и выше. Одно отличие:
sort -b 1
это сокращение дляsort -Bottom 1
и означает 1 элемент от конца отсортированного массива . Поэтому нам не нужен индекс[-1]
.источник
Stax , оценка 3 (15 байт)
Запустите и отладьте его
источник
Python 2 ,
оценка 5, 87 байт,оценка 2,1019392101 байтПопробуйте онлайн!
По электронной почте Ой! Думал, что это был код-гольф впервые ...
источник
m=1,o=[1]
части не приводит к экономии байтов, как только мы уменьшаем счетDyalog APL , оценка 2, 20 байт
Попробуйте онлайн!
источник
Wolfram Language (Mathematica) , оценка 3, 45 байт
Попробуйте онлайн!
SequenceCases
иOrderedQ
сами по себе дают оценку 3, поэтому оценка не может быть улучшена без существенного изменения подхода.источник
Max[Length/@SequenceCases[#,_?OrderedQ]]&
, но_?Or
это увеличивающаяся подпоследовательность длины 4. (Как есть_?AnyCamelCaseCommand
.)Java (JDK), 126 байт, оценка 6
Golfed
Ungolfed
вход
источник
byte
бытьint
, так какbyte
будет ограничено до 8 бит?Котлин, оценка 6, 119 байт
Попробуйте онлайн
объяснение
источник
Котлин, оценка 4, 67 байт
Основная идея: преобразовать каждое целое число в длину непрерывных подпоследовательностей, которая увеличивается (не строго). Вернуть максимум.
a.map{...}
- для каждого целого числа в массиве сделатьif(it<p){i=0}
- если текущее целое число меньше предыдущего, тогда сбросить счетчикp=it
- сохранить текущее целое число в предыдущем(++i)
- счетчик приращений и возвращаемое значение выражения.max()
- получить максимальную длинуисточник
Рубин , 64 байта
Попробуйте онлайн!
источник
6
. Кроме того, ваш код не обрабатывает пустой список (где должен быть вывод0
)