Definicja
Narcystyczne liczby całkowite 1 tablicy uważają, że są lepsze niż ich sąsiedzi, ponieważ są ściśle wyższe niż ich średnia arytmetyczna.
Sąsiedzi są zdefiniowani w następujący sposób:
Jeśli liczba całkowita ma indeks 0 (pierwszy), to sąsiedzi są ostatnim i drugim elementem listy.
Jeśli liczba całkowita nie jest pierwszą ani ostatnią, wówczas jej sąsiadami są dwa bezpośrednio przylegające elementy.
Jeśli liczba całkowita ma indeks -1 (ostatni), to jej sąsiedzi są przedostatnimi i pierwszymi elementami listy.
Zadanie
Biorąc pod uwagę szereg liczb całkowitych, Twoim zadaniem jest odrzucić te narcystyczne.
Liczby całkowite mogą być dodatnie, ujemne lub zerowe.
Możesz założyć, że tablica zawiera co najmniej trzy elementy.
Obowiązują wszystkie standardowe zasady. To jest golf golfowy , więc wygrywa najkrótszy kod w bajtach.
Przykłady
Rozważ tablicę [6, 9, 4, 10, 16, 18, 13]
. Następnie możemy zbudować następującą tabelę:
Element | Sąsiedzi | Średnia sąsiadów | Czy narcystyczny? -------- + ------------ + ------------------ + --------- -------- 6 | 13, 9 | 11 | Fałszywy. 9 | 6, 4 | 5 | Prawdziwe. 4 | 9, 10 | 9,5 | Fałszywy. 10 | 4, 16 | 10 | Fałszywy. 16 | 10, 18 | 14 | Prawdziwe. 18 | 16, 13 | 14,5 | Prawdziwe. 13 | 18, 6 | 12 | Prawdziwe.
Odfiltrowując te narcystyczne, pozostaje nam [6, 4, 10]
. I to wszystko!
Przypadki testowe
Wejście -> Wyjście [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 - Narcissist nie oznacza matematycznie narcystycznego .
źródło
Haskell , 51 bajtów
Wypróbuj online! Przykład użycia:
f [1,2,3]
plony[1,2]
.Dla
s = [1,2,3]
,last s:s
lista[3,1,2,3]
itail$s++s
lista[2,3,1,2,3]
.zip3
generuje listę potrójnych(a,b,c)
z trzech podanych list, skracając dłuższe do długości najkrótszej listy. Otrzymujemy[(3,1,2),(1,2,3),(2,3,1)]
,b
będąc oryginalnym elementem listya
ic
jego sąsiadami. Lista rozumienie wybiera wszystkob
gdzieb*2<=a+c
, tob
nie jest narcystyczne.źródło
Octave / MATLAB, 48 bajtów
Wypróbuj online!
Wyjaśnienie
Tablica wejściowa jest najpierw rozszerzana o wpisy last (
x(end)
) i first (x(1)
) po odpowiednich stronach.Test na narcyzm wykonuje się przez
conv
przeszlifowanie rozszerzonej tablicy[1, -2, 1]
i zachowanie tylko'valid'
części.Porównanie każdego wpisu w wyniku splotu
0
daje indeks logiczny (maskę), który służy do wybierania liczb z wejścia.źródło
J , 16 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Japt ,
171615 bajtówSpróbuj
Wyjaśnienie
Domniemane wejście tablicy
U
.Remove (
k
) elementy, które zwracają wartość true po przejściu przez funkcję,Y
będąc bieżącym indeksem, które sprawdzają, czy bieżący element jest większy niż ...Tablica
[Y-1, Y+1]
...Zmniejszone przez add (
x
) po zindeksowaniu każdego elementu doU
...Pomnożone przez
.5
.Alternatywnie, 15 bajtów
Spróbuj
źródło
R ,
5156 bajtówDziękuję użytkownikowi 2390246 za poprawienie mojego algorytmu
Wypróbuj online!
indeksy, w
l
którychc(l[-1],l[1])+c(l[s],l[-s])
sumy sąsiadówl
są nie mniejsze niż dwa razyl
.źródło
Mathematica, 40 bajtów
źródło
<=
zamiast<
.>=
.Pick
liczby nie narcystyczne.Galaretka , 17 bajtów
Wypróbuj online!
źródło
Python 2 ,
6460 bajtówl[-~j%len(l)]
(i spacja)(l+l)[-~j]
.Wypróbuj online!
źródło
Java 8,
141137127 bajtów-10 bajtów dzięki @Nevay .
Wyjaśnienie:
Wypróbuj tutaj.
źródło
Julia 0.6 , 38 bajtów
Wypróbuj online!
źródło
JavaScript ES5, 59 bajtów
źródło
Perl 5 , 51 + 1 (
-a
) = 52 bajtyWypróbuj online!
źródło
PowerShell , 75 bajtów
źródło
APL, 20 bajtów
Wypróbuj online!
źródło