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, 7
aumenta, 7, 5, 2
disminuye y 2, 3, 6
aumenta. Por lo tanto, esto es verdad.
Otro ejemplo: 1, 4, 6, 8, 5, 3, 5, 7, 9
1, 4, 6, 8
aumenta, 8, 5, 3
disminuye y 3, 5, 7, 9
aumenta. 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, 2
serí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
Mientras jugaba al golf, descubrí algunas alternativas geniales y más largas: (en su lugar
IṠŒgL€E
,IṠŒrṪ€E
utiliza run-length-encode).fuente
IṠŒgḂE
deberí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.Arg
lugar deSign
guardar otro byte.05AB1E ,
87 bytesPruébalo en línea!
-1 gracias a Adnan.
fuente
¥0.SγaË
debería guardar un bytea
No puedo encontrarlo en los documentos.is_letter(a)
???C (gcc) ,
143140138136135132 bytesr
para 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+1
a;...++j
.Pruébalo en línea!
Define una función
f
que 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
Algunas lindas alternativas:
fuente
JavaScript (ES6), 81 bytes
Esto parece demasiado largo. Probablemente me estoy perdiendo algo aquí ... Devuelve
true
oundefined
.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]<d
puede ser lo contrario de(...)[:l]==d
.Haskell ,
797877 bytesPruébalo en línea!
Dada una lista
s
,zipWith(<)s$tail s
prueba 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,group
se 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 colat
de 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
diff
calcula las diferencias sucesivas, luegosign
las reduce a ± 1.rle
luego la longitud de ejecución los codifica. Todos los elementos de estorle
deberí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
1
como 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:]);"*2
Ruby , 57 bytes
Pruébalo en línea!
fuente