JavaScript, 66 65 62 60 Bytes
Nimmt Eingaben als Zeichenfolge, gibt trueundulierende Zahlen zurück, leere Zeichenfolgen (Falschzeichen) für einstellige Zahlen und falseandere.
([s,...a])=>a+a&&a.every(x=>eval(s+"<>"[++y%2]+x,s=x),y=s<a)
Versuch es
Führen Sie das folgende Snippet aus, um 0-925 Zufallszahlen zu testen <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>
Erläuterung
Ein paar lustige kleine Tricks in diesem, also denke ich, dass es eine seltene Erklärung für eine JS-Lösung von mir verdient.
()=>
Wir beginnen einfach mit einer anonymen Funktion, die beim Aufruf die Ganzzahl als Argument verwendet.
[s,...a]
Dieses Argument wird sofort in zwei Parameter zerlegt: Es sist das erste Zeichen in der Zeichenfolge und aein Array, das die verbleibenden Zeichen enthält (z . B. "461902"wird s="4"und a=["6","1","9","0","2"]).
a+a&&
Zuerst verknüpfen wir uns amit sich selbst, wodurch beide Vorkommen in Zeichenfolgen umgewandelt werden. Wenn die Eingabe eine einstellige Zahl ist, aist sie leer und wird daher zu einer leeren Zeichenfolge. Eine leere Zeichenkette plus eine leere Zeichenkette ist immer noch eine leere Zeichenkette, und da dies in JS falsch ist, beenden wir die Verarbeitung beim logischen UND und geben unsere leere Zeichenkette aus. In allen anderen Fällen a+aist dies der Fall und wir fahren mit dem nächsten Teil der Funktion fort.
a.every(x=>)
Wir werden prüfen, ob jedes Element xin azurückkehrt, truewenn es eine Funktion durchläuft.
y=s<a
Dies bestimmt, was unser erster Vergleich sein wird ( <oder >) und dann werden wir von dort abwechseln. Wir prüfen, ob die Zeichenfolge skleiner ist als das Array a, das dabei in eine Zeichenfolge umgewandelt wird. Wenn sie skleiner ist als das erste Zeichen a, ywird dies der Fall sein trueoder falsenicht.
s+"<>"[++y%2]+x
Wir erstellen einen String mit dem aktuellen Wert von sam Anfang und xam Ende. Dazwischen indexieren wir den String, "<>"indem wir ihn inkrementieren y, seinen anfänglichen booleschen Wert in eine Ganzzahl umwandeln und modulo um 2, was uns 0oder ergibt 1.
eval()
Bewerte diesen String.
s=x
Schließlich übergeben wir ein zweites Argument eval, das ignoriert wird, und setzen damit den Wert von sauf den aktuellen Wert von xfür die nächste Iteration.