Wenn eine Eingabezeichenfolge S gegeben ist, geben Sie zurück, truthy
ob alle Buchstaben in S lexikalisch sortiert sind: Ihre ASCII-Werte müssen entweder in aufsteigender oder absteigender Reihenfolge vorliegen. Rückgabe falsy
in anderen Fällen.
Eingang
- Die Eingabe erfolgt in der gleichen Groß- oder Kleinschreibung. Ihre Einreichung sollte beides verarbeiten können.
- Eingang wird im Bereich von ASCII besteht
[A-Za-z]
nur - Die Eingabelänge beträgt mindestens 1, bis zu dem von Ihrer Sprache unterstützten Maximum.
- Die Eingabe ist eine Zeichenfolge - keine Liste von Zeichen, kein Array von ASCII-Codepunkten.
Ausgabe
- Ausgabe soll
true
oderfalse
, oder0/1
, oder jede andere eindeutigetrue / false
Stil Ausgabe Ihrer Sprache zur Verfügung stellen kann. - Alle wahren Fälle müssen dieselbe Ausgabe haben, ebenso wie alle falschen Fälle. Nein "Falsch ist 0, wahr ist 1, 2 oder 3".
Zusätzliche Regeln
- Standardlücken sind verboten
- Die Antwort muss ein vollständiges Programm oder eine Funktion sein, kein Snippet oder ein REPL-Eintrag.
- Code-Golf , die kürzeste Antwort in Bytes gewinnt.
Testfälle
Wahrheit
"ABCDEF"
"ZYX"
"no"
"tree" --> the multiple 'e's don't break the order
"q"
Falsch
"ABCDC"
"yes"
"deed"
Ungültig
"Hello" --> invalid input - mixed case-, does not have to be handled
"" --> invalid input - length 0-, does not have to be handled
"\n
" --> invalid input - newline is not in range [A-Za-z]-, does not have to be handled
truthy
oder nicht sagenfalsy
. Dies impliziert, dass alle Werte, die ausgewertet werdentrue
oderfalse
zulässig sind.Antworten:
05AB1E , 5 Bytes
Probieren Sie es online!
Erläuterung
quelle
{¹å
für 4 löschte meine Antwort. Ich habe die Verwendung von Bifurkate nicht bemerkt, meine war zu ähnlich.aba => ['aab', 'baa'] => is in? => 0
|aab => same => 1
Python 2 ,
53444039 BytesProbieren Sie es online!
quelle
Haskell , 33 Bytes
Probieren Sie es online!
Dank an Ørjan Johansen für 1 Byte mit Aliasing-
scanl1
Infix.Haskell ist eine interessante Sprache für Herausforderungen, die auf Golfsortierung basieren, da es keine eingebaute Sortierung gibt, es sei denn, es ist langwierig
import Data.List
. Dies fördert die Suche nach einer Möglichkeit, die Aufgabe von Hand zu erledigen, ohne sie explizit zu sortieren.Der Code verwendet
scanl1
, der eine Operation von links nach rechts über die Liste faltet, um die Zwischenergebnisse zu verfolgen. Hatscanl1 max
also den Effekt, die kumulativen Maxima der Liste aufzulisten, dh die Maxima von progressiv längeren Präfixen. Zum Beispielscanl1 max [3,1,2,5,4] == [3,3,3,5,5]
.Dasselbe gilt für die
min
Überprüfung, ob die Liste abnimmt. Der Code überprüft die beiden Fälle und kombiniert sie mit||
.Vergleichen Sie mit anderen Ausdrücken:
quelle
||
gewinnt deine Version mit, wenn du definierst(?)=scanl1
.Perl 6 , 25 Bytes
Wie es funktioniert:
.comb
teilt die Eingabe in eine Folge von Zeichen auf.le
undge
sind die Vergleichsoperatoren "kleiner oder gleich" und "größer oder gleich" .[ ]
Reduziert ("faltet") die Argumentliste um einen Infix-Operator mit diesem Operator. (Es ist klug genug, True zurückzugeben, wenn die Eingabe nur null oder ein Zeichen enthält.)or
Gibt True zurück, wenn die Ausdrücke auf beiden Seiten wahr sind.quelle
JavaScript (ES6), 43 Byte
quelle
q
würden , würden Sie stattdessen diesen Wert festlegen..sort()
implizit imreverse
Scheck sortierenMATL , 7 Bytes
Probieren Sie es online! Oder überprüfen Sie alle Testfälle .
quelle
Clojure, 47 Bytes
quelle
<=
und>=
sieht zwar infix aus, was wirklich komisch ist.(let[+ *](+ 2 3))
=6
: D Es funktioniert auf jeder Funktion, aber anscheinend nicht auf Makros: "Kann den Wert eines Makros nicht annehmen"C (gcc) , 70 Bytes
Ich hatte gehofft, eine kürzere Lösung zu finden, die auf einer rekursiven Funktion basiert, aber sie hat aufgrund der Ausgabeanforderung nicht funktioniert. Hier ist also ein zwingender Ansatz. Zumindest funktioniert die Operatorrangfolge von C für die innere Schleifenanweisung gut.
Probieren Sie es online!
quelle
R, 48
5061BytesAls unbenannte Funktion
Vielen Dank an @guiseppe für ein paar zusätzliche Bytes.
charToRaw
Nimmts
und teilt sich in einen rohen Vektor. Dies wird in Ganzzahlen umgewandelt unddiff
angewendet.sign
macht das diffs zu einer einheit.range
reduziert den Vektor auf Minimum und Maximum. Wenn die Standardabweichungsd
kleiner als 1 ist, ist sie WAHRProbieren Sie es online!
quelle
function(s,d=utf8ToInt(s))all(d==sort(d))
orfunction(s,d=utf8ToInt(s))!is.unsorted(d)
!is.unsorted(utf8ToInt(scan(,'')))
cba
und die letzte würde ein erforderncat()
, um es ein volles Programm zu machenfunction(s)all(!diff(order(utf8ToInt(s)),,2))
(funktioniert auch mit der umgekehrten Sortierung!)tree
MATL, 8 Bytes
Probieren Sie es online!
Erläuterung
quelle
'\n'
und'Hello'
: /[A-Za-z]
wie im ersten Beitrag angegeben. Sie befinden sich im Abschnitt "ungültig", da sie explizit nicht behandelt werden müssen.Gelee ,
45 BytesProbieren Sie es online!
Ursprünglich war
Ṣm0w
bei vier Bytes.Erläuterung
quelle
ẇ
Ich glaube aber, dass noch vier Bytes möglich sind . Edit: ughṢm0ẇ@
.Ṣẇm0$
. Wenn die Argumentationsreihenfolge nicht anders war fürw
undẇ
...'\n'
und'Hello'
sind vollkommen gültige Werte.Mathematica, 33 Bytes
Basierend auf diesem Tipp . Leider muss ich
ToCharacterCode
anstatt verwendenCharacters
, weil<=
und>=
Zeichenfolgen nicht vergleichen.quelle
PowerShell , 61 Byte
Probieren Sie es online!
Übernimmt die Eingabe
$a
und prüft dann, ob es sich um-in
ein Array mit zwei Elementen handelt. Das Array wird gebildet, indem man$a
es alschar
-array aufnimmt, es$b
für später speichert und essort-object
lexikalisch sortiert. Das andere Element ist$b
in-des
aufsteigender Reihenfolge sortiert .quelle
Perl , 35 Bytes
Sparte 4 Bytes dank @Xcali direkt und 4 weitere indirekt.
31 Byte Code +
-pF
Flag.Probieren Sie es online!
Der Code sortiert die Eingabe und überprüft, ob die Eingaben selbst sortiert (oder in umgekehrter Reihenfolge) übereinstimmen.
quelle
$"=$,
und/x
stattdessen 5 weitere Bytes sparen.Gelee , 5 Bytes
Probieren Sie es online!
Wie?
quelle
Bash + Coreutils, 59 Bytes
Die Eingabezeichenfolge wird als Argument übergeben.
Die Ausgabe wird im Exit-Code zurückgegeben (0 für Wahrheit, 1 für Falschheit, wie üblich), wie von PPCG-E / A-Methoden zugelassen .
quelle
PHP, 66 Bytes
Nimmt Eingaben vom Kommandozeilenargument entgegen. Laufen Sie mit
-r
.quelle
Ruby , 44 Bytes
Probieren Sie es online!
quelle
Schläger , 93 Bytes
Probieren Sie es online!
Ungolfed:
Verwenden Sie die Sortierung und vergleichen Sie sie mit dem ursprünglichen Ansatz
quelle
Brachylog , 5 Bytes
Ich habe erfolglos versucht, eine 4-Byte-Lösung zu finden. Im Moment ist dies die interessanteste 5-Byte-Lösung, die ich gefunden habe:
Probieren Sie es online!
o
Die Sortierfunktion kann einen Parameter annehmen:0
bedeutet aufsteigende Reihenfolge,1
bedeutet absteigende Reihenfolge. Wir setzen diesen Parameter auf eine ungebundene VariableN
. Brachylog versucht verschiedene Werte fürN
(nur0
oder1
möglich), versucht, das Ergebnis mit der Eingabe zu vereinheitlichen, und gibt zurück, ob einer dieser Versuche erfolgreich war.quelle
o?|o₁?
für ein zusätzliches Byte.o{|↔}?
.MATLAB / Octave, 38 Bytes
Online-Demo
quelle
JavaScript (ES6)
7462504743 ByteNach einigem Golfen und Bugfixing entsprach diese Antwort fast der von ETHProduction. Bitte überprüfen Sie seine Antwort und geben Sie eine
+1
.quelle
+1
seine Antwort.Haskell,
5450 BytesAnwendungsbeispiel:
t "defggh"
->True
. Probieren Sie es online! .Vielleicht ist die Verwendung
sort
anderer Antworten kürzer, obwohl dies erforderlich istimport Data.List
. Hier ist ein anderer Ansatz:Für jede Funktion
f
aus[(=<<),(<*>)]
, berechnetand(zipWith(<=)`f`tail$a)
und bedarf keines der Ergebnisse zu seinTrue
. Die Funktionen sinddie beide Vergleiche von Nachbarelementen der Eingabeliste
a
mit durchführen<=
, aber eines mit gespiegelten Argumenten, was zu a führt>=
.and
prüft, ob alle Vergleiche vorhanden sindTrue
.quelle
Aufdringlich , 7 Bytes
Probieren Sie es online!
Erläuterung:
quelle
1
und2
istTrue
in Pushy, wohingegen es0
istFalse
.Pyth, 5 Bytes
Ein Programm, das a eingibt
"quoted string"
und drucktTrue
oderFalse
entsprechend.Testsuite
Wie es funktioniert
quelle
}Q
mit/
, die eine implizite verwendetQ
.Oktave, 24 Bytes
Probieren Sie es online!
quelle
GNU sed, 97 + 1 (r flag) = 98 Bytes
Wenn die Buchstaben bestellt sind, kehrt das Skript
1
ansonsten zurück0
. In sed gibt es keine Datentypen.Um zu überprüfen, ob alle Buchstaben in aufsteigender Reihenfolge angeordnet sind, mache ich eine Tabellensuche für jedes Paar aufeinanderfolgender Buchstaben in einem absteigenden Alphabet, dh ich versuche, ein Gegenbeispiel zu finden. Beachten Sie, dass
//
tatsächlich die letzte Übereinstimmung mit regulären Ausdrücken wiederholt wird! (siehe Zeilen 2 und 3)Beispiel ausführen: Das Skript kann mehrere Eingabewörter testen, eines pro Zeile
quelle
CJam ,
1211 BytesProbieren Sie es online!
Erläuterung
quelle
8086 Maschinencode,
686148464539 BytesZusammengesetzt aus:
quelle
Scala, 47 Bytes
quelle