Ihre Aufgabe ist es, den Verkehr an einer Kreuzung zu regeln. Es gibt 4 Straßen, die aus dem Norden, Osten, Süden und Westen kommen.
Die Eingabe ist eine Zeichenfolge, die den anstehenden Verkehr auf jeder Straße darstellt. Gibt beispielsweise an, NNNWS
dass insgesamt 5 Autos vorhanden sind: drei im Norden, eines im Westen und eines im Süden. Die Reihenfolge der Zeichen hat hier keine Bedeutung, NNNWS
entspricht WNNSN
.
Sie müssen die Reihenfolge, in der die Autos fahren sollen, anhand der Priorität der richtigen Regel ausgeben: Autos, die aus dem Süden kommen, müssen Autos, die aus dem Osten kommen, zuerst gehen lassen, Osten geht nach Norden, Norden geht nach Westen und Westen geht nach Süd.
Bei der Eingabe NNNWS
sollte zum Beispiel das Südauto zuerst fahren, dann das Westauto, dann die 3 Nordautos. Die Ausgabe sollte also sein SWNNN
.
Es gibt einige unbestimmbare Fälle, zum Beispiel NS
oder NNWSE
: Sie sollten dann den String ausgeben stuck
.
Testfälle
N => N
NW => WN
NWS => SWN
SNW => SWN
SSSSS => SSSSS
ENNNNES => NNNNEES
NS => stuck
NNWSE => stuck
stuck
.NS
steckt es fest? Weil beidesNS
undSN
eine Lösung wäre?Antworten:
Perl, 65 Bytes
Beinhaltet +2 für
-lp
Geben Sie eine Eingabe für STDIN ein. Angenommen, die leere Zeichenfolge ist keine gültige Eingabe
Wenn Ihnen das Fehlen eines Zeilenumbruchs nach dem Löschen nichts ausmacht
stuck
, können Sie diel
Option löschenquelle
PHP, 267 Bytes
benutze den neuen Raumschiff Operator und benutze -5 Bytes von @IsmaelMiguel
Nervenzusammenbruch
quelle
function c($x,$y){global$t,$p;return$p($t,$x)<=>$p($t,$y);}$a=str_split($i);usort($a,c);
können Sie$a=str_split($i);usort($a,function($x,$y)use($t,$p){return$p($t,$x)<=>$p($t,$y);});
5 Bytes verwenden und speichern. Der Raumschiffbetreiber hat bei dieser Art der Sortierung wirklich geholfen. Damit Sie verstehen, was ich getan habe, habe ich die Funktion inusort()
eine anonyme Funktion verschoben . Dannglobal
habe ich anstelle von (NIEMALS verwenden) verwendetfunction(...)use($t,$p){...}
. Mit deruse(...)
Syntax können Sie Variablen an den anonymen Funktionskörper übergeben (es werden auch Referenzen akzeptiert).use()
anonymen Funktionen sehr. Sie sollten es benutzen und missbrauchen.Stapel, 216 Bytes
Einfacher Port meiner JavaScript-Antwort. Übernimmt die Eingabe von STDIN in Groß- oder Kleinschreibung.
quelle
JavaScript (ES6),
108107106104 BytesSammelt eine Bitmaske, deren Richtungen sich Autos nähern, und extrahiert den entsprechenden Teil der Prioritätszeichenfolge.
quelle
Uncaught SyntaxError: Invalid regular expression: missing /