Bei Eingabe einer Liste von Wochentagen wird die kürzeste sortierte Darstellung der Liste ausgegeben.
Das Format des Eingangs ist eine Zeichenkette , die aus einem oder mehreren der zwei Zeichen - Strings Su
(Sonntag), Mo
(Montag), Tu
(etc.), We
, Th
,
Fr
, und Sa
. Die Eingabe muss nicht unbedingt in sortierter Reihenfolge erfolgen.
So konvertieren Sie die Eingabe in das Ausgabeformat:
Sortieren Sie die Eingabe nach Wochentag ab Sonntag (z. B.
ThMoSaSuFrTuWe
->SuMoTuWeThFrSa
).Reduzieren Sie die Abkürzungen auf einen Buchstaben, wenn keine Mehrdeutigkeit vorliegt . Zum Beispiel
SuMoTuWe
sollte es sein,SMTW
dass das erste S nicht Samstag sein kann, da dies die Ausgabe unsortiert (dasselbe gilt für das T). EsThFrSa
sollte jedoch so werdenThFS
, dass sowohl Dienstag als auch Donnerstag vor Freitag liegen und eine Reduzierung zuTFS
Mehrdeutigkeiten führen würde.Wenn die Ausgabe jetzt ist der
MTWTF
AusgangD
statt (das steht für „Woche Tag s“). In ähnlicher WeiseSS
sollte sichE
für Woche Ende . EndlichSMTWTFS
sollte esA
für alle Tage werden.
Die Eingabe und Ausgabe müssen beide eine einzelne Zeichenfolge sein.
Da es sich um Code-Golf , der kürzeste Code in Bytes gewinnt.
Testfälle:
In Out | In Out
-----------------------|--------------------
SuTu STu | SuTuWe STW
SuTuSa STuS | SuWeTh SWT
TuThSa TTS | TuThSu STT
Su Su | Sa Sa
WeTh WT | FrTh ThF
WeTu TW | FrTu TuF
FrWeMo MWF | SaWeSu SWS
ThTu TT | We W
ThTuMoFrWe D | SaSu E
SuMoWeTuThFr SMTWTF | ThMoSaSuFrTuWe A
quelle
Antworten:
Retina ,
15288Mit @ Martins und @ Randomras Hilfe massiv golfen! Danke euch beiden!
Probieren Sie es online aus. Einige Zeilen beginnen
m`
mit diesem Online-Interpreter-Link. Dies ist so, dass das Programm mit mehreren Eingabezeilen arbeitet (um alle Tests auf einmal auszuführen). Mehrere Eingabezeilen sind jedoch keine Voraussetzung, daher sind diese nicht über oder in meiner Partitur enthalten.quelle
T`l``Su\B|\BSa|.*e.*|uTh|o|r
Spart 3 weitere Bytes.JavaScript (ES7),
187178168157143 BytesDie Regex-Tests haben dazu beigetragen, die speziellen Tagesregeln schnell umzusetzen, und obwohl sie nicht ideal sind, funktioniert die Objektzuordnung. Ich bin mir sicher, dass ich noch ein paar mehr herausholen kann.
quelle
Python 3, 321 Bytes
Test auf Ideone
quelle
'Su Mo Tu We Th Fr Sa'.split()
ist kürzer als['Su','Mo','Tu','We','Th','Fr','Sa']
JavaScript (ES6), 197 Byte
Erläuterung
Kodiert jeden Tag als Bit und speichert die Eingabe als Zahl
n
. Bit 0 = Sonntag ... Bit 6 = Samstag. Dies ermöglicht, dass der Mehrdeutigkeitsregelprüfcode aufgrund der bitweisen Operationen viel kürzer ist und in der Lage ist, die gesamte Kombination mit einer Zahl zu vergleichen, die immer kleiner als 128 ist.Prüfung
Code-Snippet anzeigen
quelle