Незначителен массив представляет собой массив положительных целых чисел, где абсолютные различия между последовательными элементами являются все меньше или равно 1 .
Например, следующий массив не имеет значения:
[1, 2, 3, 4, 3, 4, 5, 5, 5, 4]
Потому что соответствующие (абсолютные) различия:
[1, 1, 1, 1, 1, 1, 0, 0, 1]
Которые все меньше или равны 1 .
Ваша задача - определить, является ли данный массив целых чисел незначительным.
- Вы можете предположить, что массив всегда содержит как минимум два элемента.
- Применяются стандартные правила ввода и вывода . Вы можете принимать входные данные (и выходные данные) в любом разумном формате.
- По умолчанию лазейки запрещены.
- Истинные / ложные ценности должны быть четкими и последовательными.
- Это код-гольф , поэтому выигрывает самый короткий ответ в байтах.
Контрольные примеры
Вход -> Выход [1, 2, 3, 4, 3, 4, 5, 5, 5, 4] -> верно [1, 2, 3, 4, 5, 6, 7, 8, 9, 8] -> верно [3, 3, 3, 3, 3, 3, 3] -> верно [3, 4, 4, 4, 3, 3, 3, 4, 4, 4] -> верно [1, 2, 3, 4] -> верно [5, 4, 3, 2] -> верно [1, 3, 5, 7, 9, 7, 5, 3, 1] -> неверно [1, 1, 1, 2, 3, 4, 5, 6, 19] -> неверно [3, 4, 5, 6, 7, 8, 7, 5] -> неверно [1, 2, 4, 10, 18, 10, 100] -> неверно [10, 20, 30, 30, 30] -> неверно
Я использовал значения true
и false
.
code-golf
number
array-manipulation
decision-problem
Мартин Эндер
источник
источник
Ответы:
Желе , 3 байта
Попробуйте онлайн!
Как?
Просто идеальный вызов для желе.
источник
P
это не сработало бы, потому что, если бы все различия были1
бы, он вывел бы1
, но если бы было одно из них,0
он бы вывел0
? И если бы одно различие было,5
но одно было0
бы, это все еще сделало0
?JavaScript (ES7),
3329 байтСохранено 4 байта благодаря @JohanKarlsson
Как?
При приведении к
Number
, массивы по крайней мере двух элементов оцениваютсяNaN
. При повторном использовании входных данных a в качестве переменной, содержащей предыдущее значение, первая итерация some () всегда приводит к ([v0, v1, ...] - a [0]) ** 2 = NaN , независимо от того, значение [0] . Итак, первый тест всегда ложный, и фактические сравнения начинаются со 2-й итерации, как и предполагалось.Контрольные примеры
Показать фрагмент кода
источник
a=>!a.some(v=>(a-(a=v))**2>1)
Python 3 , 40 байт
Попробуйте онлайн!
источник
Mathematica, 24 байта
источник
#==Clip@#&@*Differences
на один байт короче.Python 2 , 35 байт
Существует с кодом состояния 1 для незначительных массивов, с кодом состояния 0 в противном случае.
Попробуйте онлайн!
источник
Шелуха , 4 байта
Попробуйте онлайн!
Объяснение:
источник
Октава , 21 байт
Анонимная функция, которая вводит числовой вектор и выводит,
1
если он незначителен или0
нет.Попробуйте онлайн!
источник
Haskell ,
3433 байтаПопробуйте онлайн! -1 байт благодаря @ user1472751
Бессмысленное решение - это
один надваснова, всего один байт ( благодаря -1 байту от @Dennis ) короче, чем рекурсивный подход:Попробуйте онлайн!
источник
Pyth , 6 байт
Проверьте все контрольные примеры.
Pyth , 8 байт
Попробуйте онлайн!
объяснение
источник
I#
а неM
.Протон , 41 байт
Попробуйте онлайн!
-16 байтов благодаря Mr. Xcoder
-2 байта
-6 байтов благодаря Mr. Xcoder
источник
<2 for
может быть пропущено.Japt , 6 байт
Попробуйте онлайн!
объяснение
источник
C # (.NET Core) ,
514544 + 18 байт-1 байт благодаря Jeppe Stig Nielsen
Количество байтов также включает в себя:
Попробуйте онлайн!
Объяснение:
источник
a=>a.Zip(a.Skip(1),(x,y)=>x-y).All(x=>x*x<4)
избегает отрицания!
.Perl 6 , 25 байт
Попробуйте онлайн!
Это должно быть довольно читабельным. Единственное менее очевидное здесь то, что оператор zip
Z
перестанет архивировать, когда исчерпан более короткий список (мы удаляем первый элемент списка справа), и что пустой нижний индекс.[]
, так называемый фрагмент Zen, дает весь список..skip
возвращает список без первого элемента.источник
.rotate
не нужно.-2<
вместо-1≤
и<2
вместо того,≤1
чтобы сохранить еще четыре байта.2>...>-2
чтобы избежать<
ошибочной интерпретации .R ,
3026 байтПопробуйте онлайн!
источник
function(a)all(diff(a)^2<2)
экономит 3 байта.all(diff(scan())^2<2)
scan
, но он все равно сохраняет байт!05AB1E , 5 байтов
Попробуйте онлайн!
объяснение
источник
[5,2]
Например, это не сработает .Ом v2 , 4 байта
Попробуйте онлайн!
Как?
источник
PowerShell , 62 байта
Попробуйте онлайн!
PowerShell не имеет
.map
или.some
команду или подобное, так что здесь мы индивидуально проверять каждую дельту.Мы берем ввод
$a
и устанавливаем$l
равным первому элементу. Затем мы перебираем$a
и вынимаем каждый элемент, где|?{...}
разница$_-$l
является-in
диапазоном1,0,-1
. Затем мы устанавливаем$l
равным текущему элементу. Итак, теперь у нас есть коллекция элементов, где дельта между их предыдущим соседом равна 1. Мы берем.count
это и проверяем, имеет ли оно значение-eq
для.count
массива в целом. Если это так, то каждая дельта равна 1 или меньше, так что это незначительный массив. Этот логический результат остается в конвейере, а вывод неявным.источник
$l=($a=$args)[0]
$l
в вашем предложении будет задан весь входной массив.$args
является весь массив. Пример$args
. Если бы вы вызвали сценарий или функцию с серией аргументов, разделенных пробелами, они бы появились как отдельные элементы$args
, и для TIO это то, как это эмулировать. Я лично использовал это так много раз прежде, но каждому свое :)Python 3 , 45 байт
Попробуйте онлайн! или попробуйте тестовый набор.
Спасибо Джонатану Фреху за -2 байта.
источник
abs(x-y)<2
->-2<x-y<2
.Java (OpenJDK 8) , 78 байт
Попробуйте онлайн!
источник
MATL ,
65 байт-1 байт благодаря Джузеппе
Попробуйте онлайн! или проверить все тесты
источник
d|2<
вместо этого, так как массив с нулевым значением является ошибочным в MATL.d|2<A
для чего-то ближе к вашему первоначальному ответу.anyfix , 9 байт
Попробуйте онлайн!
В основном это порт решения 05AB1E, за исключением ужасного, потому что anyfix не имеет автовекторизации и других интересных вещей.
источник
C
6156 байтСпасибо @scottinet за сохранение пяти байтов!
Попробуйте онлайн!
C (gcc), 47 байтов
Попробуйте онлайн!
источник
r
вместо его возврата. :-)Clojure, 35 байт
Насколько это аккуратно?
источник
TI-Basic,
67 байтовили 5 байтов, если ошибки считаются действительным возвращаемым значением (
ERR:ARGUMENT
если незначительно, возвращаетERR:DOMAIN
)источник
abs(ΔList(Ans
, иначе падение более чем на 1 (например, в {5,3,1} или в тестовом примере {3,4,5,6,7,8,7,5}) не получить обнаружено.JavaScript (ES6),
3736 байтРедактировать: 1 байт сохранен путем кражи трюка Арно.
источник
a=>u=>!a.some(e=>(e-=(u=e))>1|e<-1)
Pyth, 7 байт
Тестирование
Возвращает истину / ложь.
Объяснение:
источник
Mathematica, 34 байта
объяснение
источник
Java (OpenJDK 8) , 60 байт
Попробуйте онлайн!
источник
r
в цикле вычисление(p-n)
только один раз,>>1
можете/2
или удалите его, если|
вместо+
:a->{int r=1,p=a[0];for(int i:a)r|=(r=p-(p=i))*r;return r<2;}
(60 байт).Swift 4, 52 байта
Тестирование:
источник
APL, 13 байт
Первый ответ APL \ o /
Примечание: я бот, принадлежащий Hyper Neutrino. Я существую в основном для тестирования в чате.
объяснение
источник
∧/2>(|2-/⊢)