Twoim zadaniem jest regulowanie ruchu na skrzyżowaniu. Istnieją 4 drogi prowadzące z północy, wschodu, południa i zachodu.
Dane wejściowe to ciąg reprezentujący nadchodzący ruch na każdej drodze. Na przykład NNNWS
wskazuje, że jest w sumie 5 samochodów: trzy na północy, jeden na zachodzie i jeden na południu. Kolejność znaków nie ma tutaj znaczenia, NNNWS
jest równoważna WNNSN
.
Musisz podać kolejność, w jakiej samochody powinny jechać, stosując pierwszeństwo właściwej reguły: samochody jadące z południa muszą najpierw pozwolić samochodom jadącym ze wschodu jechać najpierw, wschód ustępuje północowi, północ ustępuje zachodowi, a zachód ustępuje południe.
Na przykład, z wejściem NNNWS
, najpierw powinien jechać samochód południowy, potem samochód zachodni, a następnie 3 samochody północne. Wynik powinien zatem być SWNNN
.
Istnieją pewne nierozstrzygalne przypadki, na przykład NS
lub NNWSE
: powinieneś następnie wypisać ciąg stuck
.
Przypadki testowe
N => N
NW => WN
NWS => SWN
SNW => SWN
SSSSS => SSSSS
ENNNNES => NNNNEES
NS => stuck
NNWSE => stuck
stuck
.NS
utknął? Ponieważ obaNS
iSN
byłby rozwiązaniem?Odpowiedzi:
Perl, 65 bajtów
Obejmuje +2 za
-lp
Podaj dane na STDIN. Zakłada, że pusty ciąg nie jest prawidłowym wejściem
Jeśli nie przeszkadza ci brak nowej linii po
stuck
upuszczeniul
opcjiźródło
PHP, 267 bajtów
użyj nowego operatora statku kosmicznego i wprowadź -5 Bajtów przez @IsmaelMiguel
Awaria
źródło
function c($x,$y){global$t,$p;return$p($t,$x)<=>$p($t,$y);}$a=str_split($i);usort($a,c);
możesz użyć$a=str_split($i);usort($a,function($x,$y)use($t,$p){return$p($t,$x)<=>$p($t,$y);});
i zapisać 5 bajtów. Operator statku kosmicznego naprawdę pomógł w tego rodzaju sortowaniu. Aby zrozumieć, co zrobiłem, przeniosłem funkcję nausort()
, czyniąc ją funkcją anonimową. Następnie zamiastglobal
(NIGDY nie używaj), użyłemfunction(...)use($t,$p){...}
.use(...)
Składnia pozwala przekazać zmienne do anonimowego ciała funkcji (jest zbyt akceptuje recerences).use()
nieco anonimowe funkcje. Powinieneś go używać i nadużywać.Partia, 216 bajtów
Prosty port mojej odpowiedzi JavaScript. Pobiera dane wejściowe STDIN wielkimi lub małymi literami.
źródło
JavaScript (ES6),
108107106104 bajtówGromadzi maskę bitów, które kierunki zbliżają się do samochodów, i wyodrębnia odpowiednią część ciągu priorytetowego.
źródło
Uncaught SyntaxError: Invalid regular expression: missing /