JavaScript, 66 65 62 60 байт
Принимает ввод в виде строки, возвращает trueдля неоправданных чисел, пустую строку (Falsey) для однозначных чисел и в falseпротивном случае.
([s,...a])=>a+a&&a.every(x=>eval(s+"<>"[++y%2]+x,s=x),y=s<a)
Попытайся
Запустите фрагмент ниже, чтобы проверить 0-9и 25 случайных чисел <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>
объяснение
Несколько забавных маленьких трюков в этом, так что я думаю, что это оправдывает редкое объяснение решения JS от меня.
()=>
Мы начинаем просто с анонимной функции, которая принимает целочисленную строку в качестве аргумента при вызове.
[s,...a]
Этот аргумент сразу же разбивается на 2 параметра: sпервый символ в строке и aмассив, содержащий оставшиеся символы (например, "461902"становится s="4"и a=["6","1","9","0","2"]).
a+a&&
Во-первых, мы объединяем aсебя, что приводит оба вхождения к строкам. Если ввод представляет собой однозначное число, то оно aбудет пустым и, следовательно, станет пустой строкой; пустая строка плюс пустая строка по-прежнему является пустой строкой, и, поскольку в JS это неправильно, мы прекращаем обработку в логическом И и выводим нашу пустую строку. Во всех остальных случаях a+aбудет правдой, и поэтому мы переходим к следующей части функции.
a.every(x=>)
Мы будем проверять , если каждый элемент xв aвозвратах trueпри прохождении через функцию.
y=s<a
Это определяет, каким будет наше первое сравнение ( <или >), и затем мы будем чередоваться оттуда. Мы проверяем, sменьше ли строка, чем массив a, который получает приведение к строке в процессе, поэтому, если sон меньше, чем первый символ в a, yбудет trueили falseне будет.
s+"<>"[++y%2]+x
Мы строим строку с текущим значением sв начале и xв конце. В промежутке мы индексируем строку "<>", увеличивая yее начальное логическое значение на целое и по модулю 2, давая нам 0или 1.
eval()
Оцените эту строку.
s=x
Наконец, мы передаем второй аргумент eval , который он игнорирует, и используем его, чтобы установить sтекущее значение xдля следующей итерации.