Desafío
Dada una lista, determine si agrupar la lista en series de elementos crecientes y decrecientes dará como resultado una lista de listas de igual tamaño.
En otras palabras, los "puntos de inflexión" de la lista están espaciados de manera uniforme.
Ejemplo
Aquí hay un ejemplo: 0, 3, 7, 5, 2, 3, 6
0, 3, 7aumenta, 7, 5, 2disminuye y 2, 3, 6aumenta. Por lo tanto, esto es verdad.
Otro ejemplo: 1, 4, 6, 8, 5, 3, 5, 7, 9
1, 4, 6, 8aumenta, 8, 5, 3disminuye y 3, 5, 7, 9aumenta. Por lo tanto, esto es falso.
Reglas y especificaciones
- Ningún elemento adyacente será igual
- Se puede suponer que todos los números están dentro del rango de números razonable de su idioma
- Puede suponer que todos los números son enteros, si le ayuda a jugar golf su envío
- Este es el código de golf , por lo que gana la respuesta más corta
- Entrada como una lista en cualquier representación razonable y salida como cualquier valor verdadero / falso. Los dos valores deben ser consistentes.
Casos de prueba
Input -> Output
1, 3, 5, 8, 6, 4, 2, 3, 5, 7, 6, 4, 2, 5, 7, 9, 6, 4, 2 -> True
1, 3, 5, 7, 6, 4, 5, 7, 9, 8, 6, 4, 2, 3, 5 -> False
2, 3, 6, 4, 2, 3, 7, 5, 3, 4, 6 -> True
3, 6, 4, 8, 5, 7, 3, 5, 2 -> True
8 -> True
1, 3, 5, 7 -> True
4, 5, 7, 6, 8, 9 -> False
6, 4, 2, 3, 5, 4, 2 -> True
8, 5, 3, 2, 4, 6, 5, 3, 2, 5, 7 -> False
Nota : No puede suponer que todos los números son de un solo dígito (a menos que sea todo lo que su idioma sea capaz de manejar); los casos de prueba reflejan eso solo porque es más fácil para mí escribir los casos de esta manera: P Aquí hay algunos casos de prueba con números fuera de ese rango:
1, 5, 10, 19, 15, 13, 8, 13, 18, 23, 19, 18, 14 -> True
15, 14, 17, 16, 19, 18 -> True
12, 16, 19, 15, 18, 19 -> False
fuente

1, 2, 3, 2sería una entrada válida, y si se considera verdadero o falso? En ese ejemplo, el siguiente valor que sea un 1 lo haría verdadero, pero un 3 lo haría falso.Respuestas:
MATL ,
109 bytesPruébalo en línea!
¡Ahorré un byte gracias a Luis Mendo!
Explicación:
Suponga que la entrada es
[0, 3, 7, 5, 2, 3, 6]::fuente
Jalea , 6 bytes
Pruébalo en línea!
¡Guardado 1 byte gracias a Adnan !
Cómo funciona
IṠŒgAE - Programa completo. I - Incrementos (Deltas). Ṡ - Signo de cada uno. -1 si es negativo, 0 si es nulo, 1 si es positivo. Œg - Agrupa ejecuciones de elementos adyacentes. A - Valor absoluto. Vectoriza Esto asigna -1 y 1 al mismo valor. E - ¿Son todos iguales?Mientras jugaba al golf, descubrí algunas alternativas geniales y más largas: (en su lugar
IṠŒgL€E,IṠŒrṪ€Eutiliza run-length-encode).fuente
IṠŒgḂEdebería guardar un byteA(valor absoluto) sustituirḂo hay un truco que no entiendoḂ?Octava ,
5450 bytesPruébalo en línea!
Explicación
fuente
Wolfram Language (Mathematica) , 38 bytes
Pruébalo en línea!
Explicación
fuente
Equal@@(1^Split@Sign@Differences@#)&es 2 bytes más corto yEqual@@Im@Split@Sign@Differences@#&es 1 byte más más corto que eso.Arglugar deSignguardar otro byte.05AB1E ,
87 bytesPruébalo en línea!
-1 gracias a Adnan.
fuente
¥0.SγaËdebería guardar un byteaNo puedo encontrarlo en los documentos.is_letter(a)???C (gcc) ,
143140138136135132 bytesrpara almacenar el retorno booleano de la función en lugar de terminar usandoreturn.int A[]al golfint*A(usando un puntero en lugar de una matriz).f(int*A,int a)af(A,a)int*A;.if(d!=...aif(d-....;j++...j+1a;...++j.Pruébalo en línea!
Define una función
fque examina cada elemento de la lista pero el último y determina la relación de este elemento con el siguiente elemento de la lista. El número de comparaciones iguales consecutivas se almacena la primera vez que la relación cambia, cualquier ejecución después de la ejecución inicial que difiera en longitud a la longitud almacenada da como resultado una salida falsa. Al final, se mira la relación del penúltimo elemento con el último elemento para que coincida con el resto de la lista.fuente
f(A,a)int*A;lugar def(int*A,int a).Pyth , 11 bytes
Pruébalo aquí
fuente
Python 2 ,
10710510397969491 bytesPruébalo en línea!
Python 3 ,
10210097 bytesPruébalo en línea!
fuente
{...}en su lugarset(...)para guardar 3 bytesCasco , 7 bytes
Pruébalo en línea!
Como funciona esto
EmLġ ± Ẋ- ~ Programa completo. Map ~ Mapa sobre pares de elementos adyacentes. - ~ Con sustracción (esto calcula los deltas) Group ~ Agrupar utilizando el predicado de igualdad. ± ~ signo. mL ~ Obtenga las longitudes. E ~ ¿Son todos iguales?Algunas lindas alternativas:
fuente
JavaScript (ES6), 81 bytes
Esto parece demasiado largo. Probablemente me estoy perdiendo algo aquí ... Devuelve
trueoundefined.Busca un período 0 <p <a.longitud tal que todos los cambios de dirección ocurran en cada elemento p .
Casos de prueba
Mostrar fragmento de código
fuente
Python 2 , 96 bytes
Pruébalo en línea! Salida a través del código de salida: crash (1) es falsey, la salida limpia (0) es verdadera.
Python 2 , 106 bytes
Pruébalo en línea!
fuente
(...)[:l]<dpuede ser lo contrario de(...)[:l]==d.Haskell ,
797877 bytesPruébalo en línea!
Dada una lista
s,zipWith(<)s$tail sprueba para cada elemento si es más pequeño que su sucesor, por ejemplo,s=[2,3,6,4,2,3,7,5,3]rendimientos[True,True,False,False,True,True,False,False]. A continuación,groupse ejecuta por los mismos elementos juntos:[[True,True],[False,False],[True,True],[False,False]]. Para comprobar si todas esas listas tienen la misma longitud, sustituir sus elementos con1( ver esta punta ) produciendo[[1,1],[1,1],[1,1],[1,1]]y comprobar si todos los elementos en la colatde esta lista son iguales a la cabezah:all(==h)t.Este enfoque no funciona para listas simples, sino porque esas son siempre verdad, podemos manejar en su propio caso:
g[_]=1<3.fuente
R , 57 bytes
Pruébalo en línea!
fuente
Japt , 15 bytes
Pruébalo en línea!
Explicación
fuente
R, 36 bytes
diffcalcula las diferencias sucesivas, luegosignlas reduce a ± 1.rleluego la longitud de ejecución los codifica. Todos los elementos de estorledeberían ser iguales, es decir, el vector tiene una desviación estándar cero.!luego produce la salida lógica correcta.fuente
Haskell (Lambdabot), 59 bytes
Basado en la respuesta de @ Laikoni
fuente
g_=1<3.Java (OpenJDK 8) ,
437302256188 bytesPruébalo en línea!
fuente
Clojure, 70 bytes
Devuelve
1como verdadero ynil(también conocido como nulo) como falso.fuente
Java (OpenJDK 8) , 135 bytes
Pruébalo en línea!
Explicaciones
fuente
Python 2 ,
11099 bytes-11 bytes gracias a @Lynn
Pruébalo en línea!
fuente
exec"d=map(cmp,d[:-1],d[1:]);"*2Ruby , 57 bytes
Pruébalo en línea!
fuente