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
,j
yk
. Mantenerj
si es> =i
yj
.Editar: Ørjan Johansen guardó 7 bytes. ¡Gracias!
fuente
i:j:k:_<-scanr(:)[0]$0:l
Es 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
x
conc(0,x)
, así que conx
una posición desplazada a la derecha. También se comparax
conx[-1]
, por lo que una posición se desplazó hacia la izquierda. Ambos sonTRUE
si 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 dex
y 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 .
diff
calcula 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