Вызов
По заданному списку определите, приведет ли группировка списка к возрастающим и убывающим элементам в результате получится список списков одинакового размера.
Другими словами, «поворотные точки» списка расположены равномерно.
пример
Вот пример: 0, 3, 7, 5, 2, 3, 6
0, 3, 7
увеличивается, 7, 5, 2
уменьшается и 2, 3, 6
увеличивается. Поэтому это правда.
Другой пример: 1, 4, 6, 8, 5, 3, 5, 7, 9
1, 4, 6, 8
увеличивается, 8, 5, 3
уменьшается и 3, 5, 7, 9
увеличивается. Поэтому это ложь.
Правила и характеристики
- Никакие смежные элементы не будут равны
- Можно предположить, что все числа находятся в пределах разумного диапазона номеров вашего языка
- Вы можете предположить, что все числа являются целыми числами, если это поможет вам подать заявку
- Это код-гольф , поэтому выигрывает самый короткий ответ
- Вводить в виде списка в любом разумном представлении и выводить как любое значение «истина / ложь». Два значения должны быть согласованы.
Тестовые случаи
Input -> Output
1, 3, 5, 8, 6, 4, 2, 3, 5, 7, 6, 4, 2, 5, 7, 9, 6, 4, 2 -> True
1, 3, 5, 7, 6, 4, 5, 7, 9, 8, 6, 4, 2, 3, 5 -> False
2, 3, 6, 4, 2, 3, 7, 5, 3, 4, 6 -> True
3, 6, 4, 8, 5, 7, 3, 5, 2 -> True
8 -> True
1, 3, 5, 7 -> True
4, 5, 7, 6, 8, 9 -> False
6, 4, 2, 3, 5, 4, 2 -> True
8, 5, 3, 2, 4, 6, 5, 3, 2, 5, 7 -> False
Примечание . Вы не можете предполагать, что все числа представляют собой однозначные цифры (если только этот язык не поддерживает все языки); тестовые случаи отражают это только потому, что мне легче набирать эти случаи таким образом: P Вот несколько тестовых случаев с числами вне этого диапазона:
1, 5, 10, 19, 15, 13, 8, 13, 18, 23, 19, 18, 14 -> True
15, 14, 17, 16, 19, 18 -> True
12, 16, 19, 15, 18, 19 -> False
источник
1, 2, 3, 2
будет допустимым входным, и если так считается истинным или ложным? В этом примере следующее значение, равное 1, сделает его истинным, а 3 - ложным.Ответы:
MATL ,
109 байтПопробуйте онлайн!
Спасен один байт благодаря Луису Мендо!
Объяснение:
Предположим, что ввод
[0, 3, 7, 5, 2, 3, 6]
:источник
Желе , 6 байт
Попробуйте онлайн!
Спас 1 байт благодаря Аднану !
Как это устроено
В то время как игра в гольф, я обнаружил некоторые прохладно, более длинные варианты:
IṠŒgL€E
,IṠŒrṪ€E
(использование по длине прогона закодировать , а).источник
IṠŒgḂE
следует сохранить байтA
(абсолютное значение) заменитьḂ
или есть хитрость, которую я не понимаюḂ
?Октава ,
5450 байтПопробуйте онлайн!
объяснение
источник
Wolfram Language (Mathematica) , 38 байт
Попробуйте онлайн!
объяснение
источник
Equal@@(1^Split@Sign@Differences@#)&
на 2 байта короче, иEqual@@Im@Split@Sign@Differences@#&
на 1 байт короче.Arg
вместо того, чтобыSign
сохранять другой байт.05AB1E ,
87 байтПопробуйте онлайн!
-1 спасибо Аднану.
источник
¥0.SγaË
должен сохранить байтa
я не могу найти в документах.is_letter(a)
???C (gcc) ,
143140138136135132 байтаr
для хранения возвращаемого логического значения функции вместо прекращения использованияreturn
.int A[]
в гольф наint*A
(используя указатель вместо массива).f(int*A,int a)
вf(A,a)int*A;
.if(d!=...
вif(d-...
.;j++...j+1
в;...++j
.Попробуйте онлайн!
Определяет функцию,
f
которая просматривает каждый элемент в списке, кроме последнего, и определяет отношение этого элемента к следующему элементу в списке. Количество последовательных равных сравнений сохраняется в первый раз, когда отношение переворачивается, любые прогоны после начального прогона, длина которых отличается от сохраненной длины, приводят к ложному выводу. В конце рассматривается отношение второго к последнему элементу к последнему элементу, чтобы оно соответствовало остальной части списка.источник
f(A,a)int*A;
вместоf(int*A,int a)
.Pyth , 11 байт
Попробуй это здесь.
источник
Python 2 ,
10710510397969491 байтПопробуйте онлайн!
Python 3 ,
10210097 байтПопробуйте онлайн!
источник
{...}
вместо этого,set(...)
чтобы сохранить 3 байтаШелуха , 7 байт
Попробуйте онлайн!
Как это работает
Несколько милых альтернатив:
источник
JavaScript (ES6), 81 байт
Это кажется слишком длинным. Я , вероятно , отсутствует что - то здесь ... возврат либо
true
илиundefined
.Ищет период 0 <p <a.length , так что все изменения направления происходят каждые p элементов.
Контрольные примеры
Показать фрагмент кода
источник
Python 2 , 96 байт
Попробуйте онлайн! Вывод через код выхода: crash (1) - false, чистый выход (0) - true.
Python 2 , 106 байт
Попробуйте онлайн!
источник
(...)[:l]<d
может быть обратным(...)[:l]==d
.Haskell ,
797877 байтПопробуйте онлайн!
Учитывая список
s
,zipWith(<)s$tail s
проверяет для каждого элемента, меньше ли он, чем его преемник, например,s=[2,3,6,4,2,3,7,5,3]
дает[True,True,False,False,True,True,False,False]
. Затемgroup
выполняется из тех же элементов , а также :[[True,True],[False,False],[True,True],[False,False]]
. Для того, чтобы проверить , все ли эти списки имеют одинаковую длину, заменить их элементы с1
( см этого наконечника ) с получением[[1,1],[1,1],[1,1],[1,1]]
и проверить , если все элементы в хвостеt
этого списка равна головаh
:all(==h)t
.Такой подход не работает для одноэлементных списков, а потому , что те всегда верны, мы можем обращаться с ними в их собственном случае:
g[_]=1<3
.источник
R , 57 байт
Попробуйте онлайн!
источник
Japt , 15 байт
Попробуйте онлайн!
объяснение
источник
R, 36 байт
diff
вычисляет последовательные различия, а затемsign
уменьшает их до ± 1.rle
затем длина пробега кодирует их. Все элементы этогоrle
должны быть одинаковыми, то есть вектор имеет стандартное отклонение ноль.!
затем выдает правильный логический вывод.источник
Haskell (Lambdabot), 59 байт
На основании ответа @ Laikoni
источник
g_=1<3
.Java (OpenJDK 8) ,
437302256188 байтПопробуйте онлайн!
источник
Clojure, 70 байт
Возвращается
1
как истина иnil
(AKA null) как ложь.источник
Java (OpenJDK 8) , 135 байт
Попробуйте онлайн!
Пояснения
источник
Python 2 ,
11099 байт-11 байт благодаря @Lynn
Попробуйте онлайн!
источник
exec"d=map(cmp,d[:-1],d[1:]);"*2
Рубин , 57 байт
Попробуйте онлайн!
источник