Definição
Os números narcisistas 1 de uma matriz acham que são melhores que seus vizinhos, porque são estritamente mais altos que sua média aritmética.
Os vizinhos são definidos da seguinte maneira:
Se o número inteiro estiver no índice 0 (o primeiro), seus vizinhos serão o último e o segundo elementos da lista.
Se o número inteiro não for o primeiro nem o último, seus vizinhos serão os dois elementos imediatamente adjacentes.
Se o número inteiro estiver no índice -1 (o último), seus vizinhos serão o penúltimo e o primeiro elemento da lista.
Tarefa
Dada uma matriz de números inteiros, sua tarefa é descartar os narcisistas.
Os números inteiros podem ser positivos, negativos ou zero.
Você pode assumir que a matriz contém pelo menos três elementos.
Todas as regras padrão se aplicam. Isso é código-golfe , então o código mais curto em bytes vence.
Exemplos
Considere a matriz [6, 9, 4, 10, 16, 18, 13]
. Em seguida, podemos criar a seguinte tabela:
Elemento | Vizinhos | Média dos vizinhos | É narcisista? -------- + ------------ + ------------------ + --------- -------- 6 13, 9 11 Falso. 9 6, 4 | 5 Verdade. 4 9, 10 | 9,5 Falso. 10 4, 16 | 10 Falso. 16 10, 18 | 14 Verdade. 18 16, 13 | 14,5 | Verdade. 13 18, 6 | 12 Verdade.
Ao filtrar os narcisistas, ficamos com ele [6, 4, 10]
. E é isso!
Casos de teste
Entrada -> Saída [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 não significa matematicamente narcisista .
fonte
Haskell , 51 bytes
Experimente online! Exemplo de uso:
f [1,2,3]
rendimentos[1,2]
.Para
s = [1,2,3]
,last s:s
é a lista[3,1,2,3]
etail$s++s
a lista[2,3,1,2,3]
.zip3
gera uma lista de triplos a(a,b,c)
partir de três listas, truncando as mais longas ao comprimento da menor lista. Ficamos[(3,1,2),(1,2,3),(2,3,1)]
comb
o elemento de lista originala
ec
seus vizinhos. A compreensão da lista seleciona tudob
ondeb*2<=a+c
, issob
não é narcísico.fonte
Oitava / MATLAB, 48 bytes
Experimente online!
Explicação
A matriz de entrada é estendida primeiro com as últimas (
x(end)
) e primeiras (x(1)
) entradas nos lados apropriados.O teste para o narcisismo é feito
conv
resolvendo a matriz estendida com[1, -2, 1]
e mantendo apenas a'valid'
peça.A comparação de cada entrada no resultado da convolução
0
fornece um índice lógico (máscara) que é usado para selecionar os números da entrada.fonte
J , 16 bytes
Experimente online!
Explicação
fonte
Japonês ,
171615 bytesTente
Explicação
Entrada implícita da matriz
U
.Remova (
k
) os elementos que retornam true quando passados por uma função,Y
sendo o índice atual, que verifica se o elemento atual é maior que ...A matriz
[Y-1, Y+1]
...Reduzido pela adição (
x
) após indexar cada elemento emU
...Multiplicado por
.5
.Alternativa, 15 bytes
Tente
fonte
R ,
5156 bytesObrigado a user2390246 por corrigir meu algoritmo
Experimente online!
índices
l
ondec(l[-1],l[1])+c(l[s],l[-s])
, as somas vizinhas del
, não são menos que duas vezesl
.fonte
Mathematica, 40 bytes
fonte
<=
vez de<
.>=
.Pick
números não-narcisistas.Gelatina , 17 bytes
Experimente online!
fonte
Python 2 ,
6460 bytesl[-~j%len(l)]
(e um espaço) para(l+l)[-~j]
.Experimente online!
fonte
Java 8,
141137127 bytes-10 bytes graças a @Nevay .
Explicação:
Experimente aqui.
fonte
Julia 0.6 , 38 bytes
Experimente online!
fonte
JavaScript ES5, 59 bytes
fonte
Perl 5 , 51 + 1 (
-a
) = 52 bytesExperimente online!
fonte
PowerShell , 75 bytes
fonte
APL, 20 bytes
Experimente online!
fonte