Dada una matriz de enteros positivos, genera una matriz de todos los elementos que son mayores o iguales que los adyacentes. La mayoría de los elementos tendrán dos elementos adyacentes; el primer y el último elemento son casos especiales, ya que solo tienen un elemento adyacente.
Puede suponer que la matriz contiene al menos dos elementos.
Casos de prueba:
Input | Output
[4,2,6,12,4,5,4,3] | [4,12,5]
[1,2] | [2]
[1,2,3,2,1] | [3]
[3,2,1,2,3] | [3,3]
[4,4] | [4,4]
[2,4,4,4,1] | [4,4,4]
[2,3,3,4] | [3,4]
[4,3,3,4] | [4,4]
Este es el código de golf , ¡el código más corto gana!

[4,3,3,4]como caso de prueba? Mi solución no lo manejó muy bien tristemente.Respuestas:
Jalea ,
13 1211 bytesUn enlace monádico que toma una lista de enteros positivos y devuelve la lista filtrada que contiene solo aquellos que son mayores o iguales a todos sus vecinos.
Pruébalo en línea!
Anterior 12 byter :
Anterior 13 byter :
¿Cómo?
fuente
»¿qué tal 10 aunque ...?Python , 54 bytes
Pruébalo en línea!
I / O es con tuplas en lugar de listas.
Python , 57 bytes
Pruébalo en línea!
Alt 57:
fuente
Mathematica 22 Bytes
fuente
Haskell,
504942 bytesPruébalo en línea!
scanr(:)[0]hace una lista de las colas de(0:l), cada uno con una final0, por ejemplo, paral = [4,3,3,4]:[[0,4,3,3,4,0],[4,3,3,4,0],[3,3,4,0],[3,4,0],[4,0],[0]]que es agains patrón emparejadoi:j:k:_para extraer todas las listas con al menos 3 elementos que se nombrani,jyk. Mantenerjsi es> =iyj.Editar: Ørjan Johansen guardó 7 bytes. ¡Gracias!
fuente
i:j:k:_<-scanr(:)[0]$0:lEs más corto. (Ajustando ligeramente eltails=scanr(:)[]truco "estándar" .)Dyalog APL,
3130282221bytesPruébalo en línea!
Explicación (no soy bueno explicando cosas):
fuente
Haskell , 40 bytes
Pruébalo en línea!
fuente
JavaScript (ES6), 40 bytes
fuente
Python 3 ,
84 75 *71 bytesPruébalo en línea!
* @ LeakyNun ahorró 9 bytes usando un ingenioso truco de operador.
fuente
lambda l,k=[0]:[l[i]for i in range(len(l))if(k+l+k)[i+2]<=l[i]>=(k+l+k)[i]]Jalea , 15 bytes
Pruébalo en línea!
fuente
05AB1E ,
151413 bytesPruébalo en línea!
Explicación
Solución anterior de 15 bytes
Pruébalo en línea!
Explicación
fuente
R, 44 bytes
que evalúa la función:
Se compara
xconc(0,x), así que conxuna posición desplazada a la derecha. También se comparaxconx[-1], por lo que una posición se desplazó hacia la izquierda. Ambos sonTRUEsi hay un máximo allí.&tomar el AND de estos booleanos. Debido a la naturaleza envolvente de los vectores de R cuando no tienen la misma longitud, tenemos que truncar el resultado a la longitud dex, que se encuentra tomandosum(x|1). Luego conectamos el vector booleano, tomando solo los índices verdaderos dexy devolviendo eso.Tenga en cuenta que debido a que estas operaciones lógicas se realizan con vectores de longitud desigual, R se quejará. Mucho. Pero la salida correcta estará allí en medio de las advertencias:
fuente
R , 42 bytes
Pruébalo en línea!
2 bytes más cortos que la solución de JAD .
diffcalcula las sucesivas diferencias; luego mantenga solo las entradas mayores que ambos vecinos.fuente
Pyth , 20 bytes
Para jugar al golf ...
Banco de pruebas.
fuente
R , 68 bytes
Pruébalo en línea!
fuente
pryr::f(expression)es una forma más corta de declarar una función quefunction(a)expression.sum(a|1)es un atajo paralength(a).PHP , 67 bytes
Pruébalo en línea!
fuente
Retina , 51 bytes
Pruébalo en línea
fuente
q, 39 bytes
fuente
Stax , 10 bytes
Ejecutar y depurarlo
Produce la salida como valores separados de nueva línea en la salida estándar.
Sin empaquetar, sin golf y comentado, se ve así
Ejecute este
Actualizado: Acabo de encontrar una solución de 9 bytes. Actualizará la explicación más tarde:
Stax , 9 bytes
Ejecutar y depurarlo
fuente
Perl 5
-a, 37 bytesPruébalo en línea!
fuente