Meine Quelle ist in Ordnung, ist deine?

14

Ihre Herausforderung besteht darin, ein Programm, eine Funktion usw. zu schreiben, die berechnet, ob der übergebene String "in Ordnung" ist. Das bedeutet, dass die Zeichen der Zeichenfolge Zeichencodes haben, die von klein nach groß geordnet sind. Der kleinste Zeichencode muss der erste sein. Damit meine ich niedrigste Unicode-Codepunkte zum höchsten. Es spielt keine Rolle, welche Codepage Ihre Sprache verwendet.

Sie müssen einen Wert zurückgeben, wenn die Eingabe "in Ordnung" ist, und einen anderen, wenn dies nicht der Fall ist. Die Werte müssen unterschiedlich sein, es gibt jedoch keine andere Einschränkung für die Ausgabewerte. Beispielsweise können Sie truefür !1AQaq¡±(in Reihenfolge) und falsefür (in Reihenfolge) drucken / zurückgeben / ausgeben aq!QA. Die zwei unterschiedlichen Werte müssen nicht wahr oder falsch oder so etwas sein, nur zwei unterschiedliche Werte. Wiederholte Zeichenfolgen (z. B. aa) sind in Ordnung.

Sie müssen nur bis zu Unicode U+007E( ~) unterstützen (ASCII 126)

Die Zeichen Ihres Programms müssen jedoch selbst in Ordnung sein. Viel Glück und viel Spaß beim !

programmer5000
quelle
Sie brauchen keine wahrheitsgemäßen / falschen Werte? zwei truthys würden funktionieren?
Freitag,
Ist der kleinste Zeichencode auch immer beim ersten Zeichen? Oder kann es umgekehrt werden?
Freitag,
12
Code-Golf scheint ehrlich gesagt eine schlechte Gewinnbedingung für diese Form der eingeschränkten Quelle zu sein. Code Bowling für die meisten einzigartigen Charaktere wäre interessanter.
Freitag,
1
@Pavel Pop Nachteile funktionieren nicht gut, um eine bestimmte Aufgabe auf eine bestimmte Art und Weise zu erfüllen.
Dennis
2
ist wiederholte Zeichenfolge in Reihenfolge? Ist zum Beispiel "aa"in Ordnung?
TSH

Antworten:

14

Brachylog , 2 Bytes

.o

Probieren Sie es online!

Erläuterung

.o
.   Assert that {the input} equals the output of the last command in the program
 o  Sort {the input}

Als vollständiges Programm gibt es einen Assertionsfehler false., und jeder erfolgreiche Lauf, der keine Assertions verletzt, gibt estrue.


quelle
9

Gelee , 2 Bytes

Ṣ⁼

Probieren Sie es online!

Erläuterung

Ṣ⁼
Ṣ    Sort {the input}
 ⁼   Compare that to {the input} for equality of the whole structure

⁼Ṣ hat auch die richtige Funktionalität ("die Eingabe mit der sortierten Eingabe vergleichen"), so dass es nur darum ging, die beiden Programme selbst auszuführen, um herauszufinden, was in Ordnung war (ich habe mit Sicherheit nicht die Unicode-Codepunkte dieses Teils) von Jellys seltsamem Zeichensatz auswendig gelernt).


quelle
Ihre Eingabe in der Jelly-Codierung ist falsch. Sie muss ⁼Ṣstattdessen erfolgen. Sie können Jellys Codepage hier sehen .
Erik der Outgolfer
@EriktheOutgolfer Das ist leicht zu beheben; ⁼Ṣmacht genau das gleiche wie Ṣ⁼.
Steenbergh
@steenbergh Diese Einsendung ist derzeit ungültig. Obwohl das Update einfach ist, wurde es noch nicht angewendet und es wird davon abgeraten, Code zu bearbeiten.
Erik der Outgolfer
1
@EriktheOutgolfer Bei der Diskussion über diese Antwort geht es hauptsächlich um die zu verwendende Codepage: Die Challenge verweist auf Unicode (obwohl wir nicht ausdrücklich dazu auffordern, sie zu verwenden), und Jelly hat eine eigene Codepage. Was auch immer das Ergebnis sein mag, es ist trivial, diese Antwort zu korrigieren. Daher würde ich diese Antwort nicht als "ungültig" bezeichnen - ich würde sie nicht einmal in ihrem aktuellen Zustand ablehnen.
Steenbergh
@steenbergh Ich habe auch nicht herabgestimmt, ich habe nur ais523 benachrichtigt :)
Erik the Outgolfer
9

MATL , 5 Bytes

GGS\a

Gibt aus, 0wenn die Eingabe in Ordnung ist, 1ansonsten.

Probieren Sie es online!

Erläuterung

Dies berechnet den Modul (die Codepunkte von) jedes Zeichens aus der Eingabe mit dem am gleichen Index in der sortierten Eingabe. Die Eingabe ist genau dann in Ordnung, wenn alle Ergebnisse vorliegen 0.

Betrachten Sie beispielsweise die Eingabezeichenfolge BCD!. Sortieren gibt es '!BCD. Die Arrays der Codepunkte sind [66 67 68 33]und [33 66 67 68]. Die Berechnung der Module ergibt [0 1 1 33], so dass die Eingabe nicht in Ordnung ist. Beachten Sie, dass einige Ergebnisse 0auch dann angezeigt werden können, wenn die Werte nicht identisch sind (hier an der ersten Position), dies jedoch nicht in allen Einträgen möglich ist, es sei denn, die Eingabe ist ordnungsgemäß.

G     % Push input string
GS    % Push input string and sort it
\     % Modulus, element-wise. This gives all zeros iff the input was in order
a     % Any: gives 1 if any entry is non-zero. Implicitly display
Luis Mendo
quelle
8

05AB1E , 3 2 Bytes

Vielen Dank an Kevin für das Ausschneiden von 33% meines Quellcodes!

Probieren Sie es online!

Erläuterung:

      There used to be a D here for 'Duplicate stack' 
      but we now use the same input twice implicitly
 {    Sort the copy
  å   Check if the sorted copy is a substring of the original
      This will only return 1 if the original input is sorted, 0 otherwise.
steenbergh
quelle
D{Qfunktioniert auch ...
Neil A.
1
@ NeilA.Es könnte dasselbe tun, aber die Zeichen sind nicht in Ordnung. Voraussetzung ist, dass Ihr Quellcode den gleichen Test wie die Daten besteht. Dies sollte 1 ergeben .
Steenbergh
1
Das Dkann für -1 entfernt werden, indem nur eine implizite Eingabe zweimal verwendet wird.
Kevin Cruijssen
5

2sable , 2 Bytes

Probieren Sie es online!

Erläuterung

{    # sorted input
 Ê   # not equals (implicit input)

Gibt 0 aus, wenn es Auftrag ist, sonst 1 .

Emigna
quelle
1
@steenbergh: Ah, ich habe diesen Teil der Herausforderung verpasst.
Emigna
1
@steenbergh: Behoben! Zum Glück konnten wir keine eindeutigen Werte ausgeben :)
Emigna
2

Pyth, 2 Bytes

<S

Falsebedeutet sortiert, Truebedeutet unsortiert.

Testsuite

Das war ziemlich untrivial. Die naheliegendste Lösung für dieses Problem ohne die eingeschränkte Quelle ist die SIinvariante Sortierung. Aber das ist nicht sortiert. Dann dachte ich daran qS, die Eingabevariable implizit zweimal zu verwenden und zu überprüfen, ob sie ihrem sortierten Selbst entspricht. Aber währenddessen q < shat q > Sdas auch nicht funktioniert. Aber es <kommt vor S, und die einzige Möglichkeit, dass die sortierte Version nicht kleiner als das Original sein kann, besteht darin, dass das Original sortiert wurde, da die sortierte Version die lexikografisch minimale Permutation der Elemente ist.

isaacg
quelle
1

CGL (CGL Golfing Language) , 4 Bytes (nicht konkurrierend)

-:Sc

Erläuterung:

- Decrement the stack counter so the current stack is where input is put
: Split the first element of the current stack (input) into an array of single strings, make that the next stack, and increment the stack counter
S Sort the current stack
c Compare the current stack and the one before, push that to the next stack and increment the stack counter
(implicit) Output the first element of the current stack, true if in order, false if not.

Wettbewerbsverbot da :, Sund cwurden nach Erstellung dieser Herausforderung umgesetzt.

programmer5000
quelle
Gibt es Beweise dafür, dass diese Sprache vor dieser Herausforderung erstellt wurde?
Kritixi Lithos
@KritixiLithos ja, und es ist technisch eine gültige Sprache, aber ich werde dies nicht konkurrieren, weil die Funktionen, die notwendig sind, um dies zu vervollständigen, nach dieser Herausforderung gemacht wurden. CGL ist noch in Arbeit und ich benutze Herausforderungen, um mir zu zeigen, welche neuen Funktionen hinzugefügt werden sollten.
programmer5000