JavaScript, 66 65 62 60 bytes
Toma la entrada como una cadena, regresa truepara números ondulantes, una cadena vacía (falsey) para números de un solo dígito y de falseotra manera.
([s,...a])=>a+a&&a.every(x=>eval(s+"<>"[++y%2]+x,s=x),y=s<a)
Intentalo
Ejecute el fragmento a continuación para probar 0-9y 25 números aleatorios <10,000,000.
f=
([s,...a])=>a+a&&a.every(x=>eval(s+"<>"[++y%2]+x,s=x),y=s<a)
tests=new Set([...Array(10).keys()])
while(tests.add(Math.random()*1e7|0).size<35);
o.innerText=[...tests].map(x=>(x=x+``).padStart(7)+` = `+JSON.stringify(f(x))).join`\n`
<pre id=o></pre>
Explicación
Algunos trucos divertidos en este caso, así que creo que justifica una explicación rara para mí de una solución JS.
()=>
Comenzamos, simplemente, con una función anónima que toma la cadena entera como argumento cuando se llama.
[s,...a]
Ese argumento se desestructura de inmediato en 2 parámetros: sser el primer carácter de la cadena y aser una matriz que contiene los caracteres restantes (por ejemplo, se "461902"convierte en s="4"y a=["6","1","9","0","2"]).
a+a&&
Primero, nos concatenamos aconsigo mismos, lo que convierte ambas ocurrencias en cadenas. Si la entrada es un número de un solo dígito, aestará vacío y, por lo tanto, se convertirá en una cadena vacía; una cadena vacía más una cadena vacía sigue siendo una cadena vacía y, como eso es falsey en JS, detenemos el procesamiento en el AND lógico y sacamos nuestra cadena vacía. En todos los demás casos a+aserá veraz y, por lo tanto, continuaremos con la siguiente parte de la función.
a.every(x=>)
Comprobaremos si cada elemento xen adevuelve truecuando se pasa a través de una función.
y=s<a
Esto determina cuál será nuestra primera comparación ( <o >) y luego alternaremos desde allí. Verificamos si la cadena ses menor que la matriz a, que se convierte en una cadena en el proceso, por lo que, si ses menor que el primer carácter a, yserá trueo falseno.
s+"<>"[++y%2]+x
Construimos una cadena con el valor actual de sal principio y xal final. En el medio, indexamos en la cadena "<>"incrementando y, convirtiendo su valor booleano inicial en un número entero, y el módulo en 2, dándonos 0o 1.
eval()
Evalúa esa cuerda.
s=x
Finalmente, pasamos un segundo argumento a eval, que ignora, y lo usamos para establecer el valor de sal valor actual de xpara la próxima iteración.