Ваша задача - регулировать движение на перекрестке. Есть 4 дороги, идущие с севера, востока, юга и запада.
Входные данные представляют собой строку, представляющую предстоящий трафик на каждой дороге. Например, NNNWS
указывает, что в общей сложности 5 автомобилей: три на севере, один на западе и один на юге. Порядок символов здесь не имеет значения, NNNWS
эквивалентен WNNSN
.
Вы должны вывести порядок, в котором машины должны двигаться, используя приоритет правильного правила: автомобили, идущие с юга, должны позволять автомобилям, идущим с востока, идти первыми, восток сменяется севером, север - западом, а запад - юг.
Например, при вводе NNNWS
сначала должна идти южная машина, затем западная, затем 3 северных. Выход должен быть таким SWNNN
.
Есть несколько неразрешимых случаев, например NS
или NNWSE
: вы должны вывести строку stuck
.
Контрольные примеры
N => N
NW => WN
NWS => SWN
SNW => SWN
SSSSS => SSSSS
ENNNNES => NNNNEES
NS => stuck
NNWSE => stuck
stuck
.NS
застрял? Потому что и такNS
иSN
будет решением проблемы?Ответы:
Perl, 65 байт
Включает +2 для
-lp
Дайте вход на STDIN. Предполагается, что пустая строка не является допустимым вводом
Если вы не возражаете против отсутствия новой строки после
stuck
того, как вы можете отказаться отl
опцииисточник
PHP, 267 байт
используйте новый оператор космического корабля и usort -5 байт от @IsmaelMiguel
Сломать
источник
function c($x,$y){global$t,$p;return$p($t,$x)<=>$p($t,$y);}$a=str_split($i);usort($a,c);
вы можете использовать$a=str_split($i);usort($a,function($x,$y)use($t,$p){return$p($t,$x)<=>$p($t,$y);});
и сохранить 5 байтов. Оператор космического корабля действительно помог с такой сортировкой. Чтобы вы поняли, что я сделал, я переместил функциюusort()
, сделав ее анонимной функцией. Затем вместоglobal
(НИКОГДА не используйте) я использовалfunction(...)use($t,$p){...}
.use(...)
Синтаксис позволяет передавать переменные в анонимной функции тела (она принимает recerences тоже).use()
немного анонимных функций. Вы должны использовать и злоупотреблять этим.Пакет, 216 байт
Простой порт моего ответа JavaScript. Вводит STDIN в верхнем или нижнем регистре.
источник
JavaScript (ES6),
108107106104 байтаНакапливает битовую маску, по которым указываются приближающиеся автомобили, и выделяет соответствующую часть строки приоритета.
источник
Uncaught SyntaxError: Invalid regular expression: missing /