Definition
Narzisstische 1- Ganzzahlen eines Arrays denken, dass sie besser sind als ihre Nachbarn, weil sie streng höher sind als ihr arithmetisches Mittel.
Nachbarn sind wie folgt definiert:
Wenn sich die Ganzzahl auf dem Index 0 (dem ersten) befindet, sind die Nachbarn das letzte und das zweite Element der Liste.
Wenn die Ganzzahl weder die erste noch die letzte ist, sind ihre Nachbarn die beiden unmittelbar benachbarten Elemente.
Wenn die Ganzzahl den Index -1 (das letzte) hat, sind die Nachbarn das vorletzte und das erste Element der Liste.
Aufgabe
Bei einer Reihe von Ganzzahlen müssen Sie die narzisstischen verwerfen.
Die ganzen Zahlen können positiv, negativ oder null sein.
Sie können davon ausgehen, dass das Array mindestens drei Elemente enthält.
Es gelten alle Standardregeln. Das ist Code-Golf , also gewinnt der kürzeste Code in Bytes.
Beispiele
Betrachten Sie das Array [6, 9, 4, 10, 16, 18, 13]
. Dann können wir die folgende Tabelle erstellen:
Element | Nachbarn | Mittelwert der Nachbarn Ist narzisstisch? -------- + ------------ + ------------------ + --------- -------- 6 | 13, 9 | 11 | Falsch. 9 | 6, 4 | 5 | Wahr. 4 | 9, 10 | 9,5 | Falsch. 10 | 4, 16 | 10 | Falsch. 16 | 10, 18 | 14 | Wahr. 18 | 16, 13 | 14,5 | Wahr. 13 | 18, 6 | 12 | Wahr.
Indem wir die narzisstischen herausfiltern, bleiben wir zurück [6, 4, 10]
. Und das ist es!
Testfälle
Eingabe -> Ausgabe [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 - Narzisstisch bedeutet nicht mathematisch narzisstisch .
quelle
Haskell , 51 Bytes
Probieren Sie es online! Anwendungsbeispiel:
f [1,2,3]
Erträge[1,2]
.Für
s = [1,2,3]
,last s:s
ist die Liste[3,1,2,3]
undtail$s++s
die Liste[2,3,1,2,3]
.zip3
generiert eine Liste von Tripeln(a,b,c)
aus drei gegebenen Listen, wobei die längeren auf die Länge der kürzesten Liste gekürzt werden. Wir bekommen[(3,1,2),(1,2,3),(2,3,1)]
, mitb
dem ursprünglichen Listenelementa
undc
seinen Nachbarn. Das Listenverständnis wählt dann alle aus,b
wob*2<=a+c
dasb
nicht narzisstisch ist.quelle
Oktave / MATLAB, 48 Bytes
Probieren Sie es online!
Erläuterung
Das Eingabearray wird zuerst mit den letzten (
x(end)
) und ersten (x(1)
) Einträgen an den entsprechenden Seiten erweitert.Der Test auf Narzissmus wird durchgeführt, indem
conv
das erweiterte Array mit[1, -2, 1]
nur dem'valid'
Teil zusammengehalten wird.Der Vergleich jedes Eintrags im Faltungsergebnis mit
0
ergibt einen logischen Index (Maske), mit dem die Zahlen aus der Eingabe ausgewählt werden.quelle
J , 16 Bytes
Probieren Sie es online!
Erläuterung
quelle
Japt ,
171615 BytesVersuch es
Erläuterung
Implizite Eingabe eines Arrays
U
.Entfernen Sie (
k
) die Elemente, die beim Durchlaufen einer Funktion true zurückgeben. Dabei handeltY
es sich um den aktuellen Index, der überprüft, ob das aktuelle Element größer ist als ...Das Array
[Y-1, Y+1]
...Reduziert durch Addition (
x
) nach Indizierung jedes Elements inU
...Multipliziert mit
.5
.Alternative, 15 Bytes
Versuch es
quelle
R ,
5156 BytesVielen Dank an user2390246 für die Korrektur meines Algorithmus
Probieren Sie es online!
Indizes, bei
l
denenc(l[-1],l[1])+c(l[s],l[-s])
die Nachbarsummenl
nicht weniger als das Doppelte betragenl
.quelle
Mathematica, 40 Bytes
quelle
<=
statt<
.>=
.Pick
nicht narzisstisch zahlen.Gelee , 17 Bytes
Probieren Sie es online!
quelle
Python 2 ,
6460 Bytesl[-~j%len(l)]
(und ein Leerzeichen) zu(l+l)[-~j]
.Probieren Sie es online!
quelle
Java 8,
141137127 Bytes-10 Bytes dank @Nevay .
Erläuterung:
Probieren Sie es hier aus.
quelle
Julia 0,6 , 38 Bytes
Probieren Sie es online!
quelle
JavaScript ES5, 59 Byte
quelle
Perl 5 , 51 + 1 (
-a
) = 52 BytesProbieren Sie es online!
quelle
PowerShell , 75 Byte
quelle
APL, 20 Bytes
Probieren Sie es online!
quelle