Definición
Los enteros narcisistas 1 de una matriz piensan que son mejores que sus vecinos, porque son estrictamente más altos que su media aritmética.
Los vecinos se definen de la siguiente manera:
Si el entero está en el índice 0 (el primero), sus vecinos son el último y el segundo elemento de la lista.
Si el número entero no es el primero ni el último, entonces sus vecinos son los dos elementos inmediatamente adyacentes.
Si el número entero está en el índice -1 (el último), entonces sus vecinos son el penúltimo y el primer elemento de la lista.
Tarea
Dado un conjunto de enteros, su tarea es descartar los narcisistas.
Los enteros pueden ser positivos, negativos o cero.
Puede suponer que la matriz contiene al menos tres elementos.
Se aplican todas las reglas estándar. Este es el código de golf , por lo que gana el código más corto en bytes.
Ejemplos
Considera la matriz [6, 9, 4, 10, 16, 18, 13]
. Entonces podemos construir la siguiente tabla:
Elemento | Vecinos | Media de los vecinos | Es narcisista? -------- + ------------ + ------------------ + --------- -------- 6 | 13, 9 | 11 | Falso. 9 | 6, 4 | 5 | Cierto. 4 | 9, 10 | 9,5 | Falso. 10 | 4, 16 | 10 | Falso. 16 10, 18 | 14 Cierto. 18 16,13 | 14,5 | Cierto. 13 18, 6 | 12 | Cierto.
Al filtrar los narcisistas, nos quedamos con [6, 4, 10]
. ¡Y eso es!
Casos de prueba
Entrada -> Salida [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 - Narcisista no significa matemáticamente narcisista .
fuente
Haskell , 51 bytes
Pruébalo en línea! Ejemplo de uso:
f [1,2,3]
rendimientos[1,2]
.Para
s = [1,2,3]
,last s:s
es la lista[3,1,2,3]
ytail$s++s
la lista[2,3,1,2,3]
.zip3
genera una lista de triples(a,b,c)
de tres listas dadas, truncando las más largas a la longitud de la lista más corta. Obtenemos[(3,1,2),(1,2,3),(2,3,1)]
,b
siendo el elemento original de la listaa
yc
sus vecinos. La comprensión de la lista luego selecciona todos losb
lugaresb*2<=a+c
, esb
decir, no es narcisista.fuente
Octava / MATLAB, 48 bytes
Pruébalo en línea!
Explicación
La matriz de entrada se extiende primero con las últimas (
x(end)
) y primeras (x(1)
) entradas en los lados apropiados.La prueba para el narcisismo se realiza
conv
uniendo la matriz extendida con[1, -2, 1]
y manteniendo solo la'valid'
parte.La comparación de cada entrada en el resultado de convolución
0
proporciona un índice lógico (máscara) que se utiliza para seleccionar los números de la entrada.fuente
J , 16 bytes
Pruébalo en línea!
Explicación
fuente
Japt ,
171615 bytesIntentalo
Explicación
Entrada implícita de matriz
U
.Elimine (
k
) los elementos que devuelven verdadero cuando se pasa a través de una función,Y
siendo el índice actual, que verifican si el elemento actual es mayor que ...La matriz
[Y-1, Y+1]
...Reducido por la suma (
x
) después de indexar cada elemento enU
...Multiplicado por
.5
.Alternativa, 15 bytes
Intentalo
fuente
R ,
5156 bytesGracias a user2390246 por corregir mi algoritmo
Pruébalo en línea!
índices
l
dondec(l[-1],l[1])+c(l[s],l[-s])
, las sumas vecinas del
, no son menos de dos vecesl
.fuente
Mathematica, 40 bytes
fuente
<=
lugar de<
.>=
.Pick
números no narcisistas.Jalea , 17 bytes
Pruébalo en línea!
fuente
Python 2 ,
6460 bytesl[-~j%len(l)]
(y un espacio) para(l+l)[-~j]
.Pruébalo en línea!
fuente
Java 8,
141137127 bytes-10 bytes gracias a @Nevay .
Explicación:
Pruébalo aquí.
fuente
Julia 0.6 , 38 bytes
Pruébalo en línea!
fuente
JavaScript ES5, 59 bytes
fuente
Perl 5 , 51 + 1 (
-a
) = 52 bytesPruébalo en línea!
fuente
PowerShell , 75 bytes
fuente
APL, 20 bytes
Pruébalo en línea!
fuente