Su tarea es regular el tráfico en una encrucijada. Hay 4 caminos que vienen del norte, este, sur y oeste.
La entrada es una cadena que representa el tráfico próximo en cada carretera. Por ejemplo, NNNWS
indica que hay un total de 5 automóviles: tres en el norte, uno en el oeste y uno en el sur. El orden de los caracteres no tiene importancia aquí, NNNWS
es equivalente a WNNSN
.
Debe mostrar el orden en el que deben ir los autos, utilizando la prioridad a la regla correcta: los autos que vienen del sur deben dejar que los autos que vienen del este vayan primero, el este da paso al norte, el norte da paso al oeste y el oeste da paso a sur.
Por ejemplo, con la entrada NNNWS
, el automóvil del sur debe ir primero, luego el automóvil del oeste, luego los 3 automóviles del norte. La salida debería ser así SWNNN
.
Hay algunos casos indecidibles, por ejemplo, NS
o NNWSE
: debería generar la cadena stuck
.
Casos de prueba
N => N
NW => WN
NWS => SWN
SNW => SWN
SSSSS => SSSSS
ENNNNES => NNNNEES
NS => stuck
NNWSE => stuck
stuck
.NS
atascado? ¿Porque ambosNS
ySN
serían una solución?Respuestas:
Perl, 65 bytes
Incluye +2 para
-lp
Dar entrada en STDIN. Asume que la cadena vacía no es una entrada válida
Si no le importa la ausencia de una nueva línea después de
stuck
que pueda soltar lal
opciónfuente
PHP, 267 bytes
use el nuevo operador de nave espacial y use -5 Bytes por @IsmaelMiguel
Descompostura
fuente
function c($x,$y){global$t,$p;return$p($t,$x)<=>$p($t,$y);}$a=str_split($i);usort($a,c);
, puede usar$a=str_split($i);usort($a,function($x,$y)use($t,$p){return$p($t,$x)<=>$p($t,$y);});
y guardar 5 bytes. El operador de la nave espacial realmente ayudó con este tipo de clasificación. Para que entiendas lo que hice, moví la función ausort()
, convirtiéndola en una función anónima. Entonces, en lugar deglobal
(NUNCA lo use), lo he usadofunction(...)use($t,$p){...}
. Lause(...)
sintaxis le permite pasar variables al cuerpo de la función anónima (también acepta referencias).use()
funciones anónimas. Debes usarlo y abusar de él.Lote, 216 bytes
Puerto simple de mi respuesta de JavaScript. Toma entrada en STDIN en mayúsculas o minúsculas.
fuente
JavaScript (ES6),
108107106104 bytesAcumula una máscara de bits de las direcciones que se aproximan a los automóviles y extrae la parte adecuada de la cadena de prioridad.
fuente
Uncaught SyntaxError: Invalid regular expression: missing /