Определение
Нарциссические 1 целые числа массива считают, что они лучше, чем их соседи, потому что они строго выше их среднего арифметического.
Соседи определяются следующим образом:
Если целое число имеет индекс 0 (первый), то его соседями являются последний и второй элементы списка.
Если целое число не является ни первым, ни последним, то его соседями являются два непосредственно смежных элемента.
Если целое число имеет индекс -1 (последний), то его соседями являются второй-последний и первый элементы списка.
задача
Учитывая массив целых чисел, ваша задача - отбросить нарциссические.
Целые числа могут быть положительными, отрицательными или нулевыми.
Вы можете предположить, что массив содержит как минимум три элемента.
Все стандартные правила применяются. Это код-гольф , поэтому выигрывает самый короткий код в байтах.
Примеры
Рассмотрим массив [6, 9, 4, 10, 16, 18, 13]
. Тогда мы можем построить следующую таблицу:
Элемент | Соседи | Соседи Среднее | Нарциссический? -------- + ------------ + ------------------ + --------- -------- 6 | 13, 9 | 11 | Ложь. 9 | 6, 4 | 5 | Правда. 4 | 9, 10 | 9,5 | Ложь. 10 | 4, 16 | 10 | Ложь. 16 | 10, 18 | 14 | Правда. 18 | 16, 13 | 14,5 | Правда. 13 | 18, 6 | 12 | Правда.
Отфильтровывая нарциссические, мы остаемся с [6, 4, 10]
. Вот и все!
Тестовые случаи
Вход -> Выход [5, -8, -9] -> [-8, -9] [8, 8, 8, 8] -> [8, 8, 8, 8] [11, 6, 9, 10] -> [6, 10] [1, 2, 0, 1, 2] -> [1, 0, 1] [6, 9, 4, 10, 16, 18, 13] -> [6, 4, 10] [6, -5, 3, -4, 38, 29, 82, -44, 12] -> [-5, -4, 29, -44]
1 - Нарцисс не означает математически нарциссический .
источник
Haskell , 51 байт
Попробуйте онлайн! Пример использования:
f [1,2,3]
доходность[1,2]
.Для
s = [1,2,3]
,last s:s
это список[3,1,2,3]
иtail$s++s
список[2,3,1,2,3]
.zip3
генерирует список троек(a,b,c)
из трех заданных списков, укорачивая более длинные до длины самого короткого списка. Мы получаем[(3,1,2),(1,2,3),(2,3,1)]
,b
будучи оригинальным элементом спискаa
иc
его соседями. Понимание списка затем выбирает все,b
гдеb*2<=a+c
, тоb
есть не нарциссическое.источник
Октава / MATLAB, 48 байтов
Попробуйте онлайн!
объяснение
Входной массив сначала расширяется записями last (
x(end)
) и first (x(1)
) с соответствующих сторон.Тест на нарциссизм выполняется путем
conv
объединения расширенного массива с[1, -2, 1]
сохранением только'valid'
части.Сравнение каждой записи в результате свертки
0
дает логический индекс (маску), который используется для выбора чисел из входных данных.источник
J , 16 байт
Попробуйте онлайн!
объяснение
источник
Japt ,
171615 байтПопытайся
объяснение
Неявный ввод массива
U
.Remove (
k
) элементы, которые возвращают true при передаче через функцию сY
текущим индексом, который проверяет, больше ли текущий элемент, чем ...Массив
[Y-1, Y+1]
...Уменьшается добавлением (
x
) после индексации каждого элемента вU
...Умножается на
.5
.Альтернатива, 15 байт
Попытайся
источник
R ,
5156 байтСпасибо пользователю 2390246 за исправление моего алгоритма
Попробуйте онлайн!
индексы
l
гдеc(l[-1],l[1])+c(l[s],l[-s])
соседние суммыl
не менее чем в два разаl
.источник
Mathematica, 40 байт
источник
<=
вместо<
.>=
.Pick
не нарциссическим номерам.Желе , 17 байт
Попробуйте онлайн!
источник
Python 2 ,
6460 байтl[-~j%len(l)]
(и пространство), чтобы(l+l)[-~j]
.Попробуйте онлайн!
источник
Java 8,
141137127 байт-10 байт благодаря @Nevay .
Объяснение:
Попробуй это здесь.
источник
Юлия 0,6 , 38 байт
Попробуйте онлайн!
источник
JavaScript ES5, 59 байт
источник
Perl 5 , 51 + 1 (
-a
) = 52 байтаПопробуйте онлайн!
источник
PowerShell , 75 байт
источник
APL, 20 байт
Попробуйте онлайн!
источник