Votre tâche consiste à réguler le trafic à un carrefour. Il y a 4 routes venant du nord, de l'est, du sud et de l'ouest.
L'entrée est une chaîne représentant le trafic à venir sur chaque route. Par exemple, NNNWS
indique qu'il y a un total de 5 voitures: trois au nord, une à l'ouest et une au sud. L'ordre des caractères n'a pas d'importance ici, NNNWS
est équivalent à WNNSN
.
Vous devez sortir l'ordre dans lequel les voitures doivent aller, en utilisant la priorité à la bonne règle: les voitures venant du sud doivent laisser les voitures venant de l'est aller en premier, l'est cède la place au nord, le nord cède la place à l'ouest et l'ouest cède la place à Sud.
Par exemple, avec l'entrée NNNWS
, la voiture sud devrait aller en premier, puis la voiture ouest, puis les 3 voitures nord. La sortie devrait donc être SWNNN
.
Il existe des cas indécidables, par exemple NS
ou NNWSE
: vous devez ensuite sortir la chaîne stuck
.
Cas de test
N => N
NW => WN
NWS => SWN
SNW => SWN
SSSSS => SSSSS
ENNNNES => NNNNEES
NS => stuck
NNWSE => stuck
stuck
.NS
coincé? Parce que les deuxNS
etSN
serait une solution?Réponses:
Perl, 65 octets
Comprend +2 pour
-lp
Donnez votre avis sur STDIN. Suppose que la chaîne vide n'est pas une entrée valide
Si cela ne vous dérange pas l'absence d'une nouvelle ligne après avoir supprimé
stuck
l'l
optionla source
PHP, 267 octets
utiliser le nouvel opérateur de vaisseau spatial et usort -5 octets par @IsmaelMiguel
Panne
la source
function c($x,$y){global$t,$p;return$p($t,$x)<=>$p($t,$y);}$a=str_split($i);usort($a,c);
, vous pouvez utiliser$a=str_split($i);usort($a,function($x,$y)use($t,$p){return$p($t,$x)<=>$p($t,$y);});
et enregistrer 5 octets. L'opérateur du vaisseau spatial a vraiment aidé avec ce type de tri. Pour que vous compreniez ce que j'ai fait, j'ai déplacé la fonction dansusort()
, ce qui en fait une fonction anonyme. Ensuite, au lieu deglobal
(NE JAMAIS l'utiliser), j'ai utiliséfunction(...)use($t,$p){...}
. Lause(...)
syntaxe vous permet de passer des variables dans le corps de la fonction anonyme (elle accepte également les recérences).use()
peu sur les fonctions anonymes. Vous devez l'utiliser et en abuser.Lot, 216 octets
Port simple de ma réponse JavaScript. Prend l'entrée sur STDIN en majuscule ou en minuscule.
la source
JavaScript (ES6),
108107106104 octetsAccumule un masque de bits dont les directions ont des voitures qui approchent et extrait la partie appropriée de la chaîne de priorité.
la source
Uncaught SyntaxError: Invalid regular expression: missing /