Tugas Anda adalah mengatur lalu lintas di persimpangan jalan. Ada 4 jalan yang datang dari utara, timur, selatan dan barat.
Input adalah string yang mewakili lalu lintas yang akan datang di setiap jalan. Misalnya, NNNWS
menunjukkan ada total 5 mobil: tiga di utara, satu di barat dan satu di selatan. Urutan karakter tidak penting di sini, NNNWS
sama dengan WNNSN
.
Anda harus menampilkan urutan di mana mobil harus pergi, menggunakan prioritas ke aturan yang benar: mobil yang datang dari selatan harus membiarkan mobil yang datang dari timur pergi dulu, timur memberi jalan ke utara, utara memberi jalan ke barat dan barat memberi jalan ke Selatan.
Misalnya, dengan input NNNWS
, mobil selatan harus pergi dulu, lalu mobil barat, lalu 3 mobil utara. Outputnya seharusnya demikian SWNNN
.
Ada beberapa kasus yang tidak dapat ditentukan, misalnya NS
atau NNWSE
: Anda kemudian harus mengeluarkan string stuck
.
Uji kasus
N => N
NW => WN
NWS => SWN
SNW => SWN
SSSSS => SSSSS
ENNNNES => NNNNEES
NS => stuck
NNWSE => stuck
stuck
.NS
macet? Karena keduanyaNS
danSN
akan menjadi solusi?Jawaban:
Perl, 65 byte
Termasuk +2 untuk
-lp
Berikan masukan pada STDIN. Mengasumsikan string kosong bukan input yang valid
Jika Anda tidak keberatan dengan tidak adanya baris baru setelah
stuck
Anda dapat menjatuhkanl
opsisumber
PHP, 267 Bytes
gunakan operator pesawat ruang angkasa baru dan usort -5 Bytes oleh @IsmaelMiguel
Kerusakan
sumber
function c($x,$y){global$t,$p;return$p($t,$x)<=>$p($t,$y);}$a=str_split($i);usort($a,c);
, Anda dapat menggunakan$a=str_split($i);usort($a,function($x,$y)use($t,$p){return$p($t,$x)<=>$p($t,$y);});
dan menyimpan 5 byte. Operator pesawat ruang angkasa sangat membantu dengan penyortiran semacam ini. Agar Anda mengerti apa yang saya lakukan, saya memindahkan fungsi keusort()
, menjadikannya fungsi anonim. Kemudian, alih-alihglobal
(TIDAK PERNAH menggunakannya), saya telah menggunakanfunction(...)use($t,$p){...}
. Theuse(...)
sintaks memungkinkan Anda untuk melewatkan variabel ke dalam anonim fungsi tubuh (ia menerima recerences juga).use()
sedikit pada fungsi anonim. Anda harus menggunakan dan menyalahgunakannya.Batch, 216 byte
Port sederhana dari jawaban JavaScript saya. Mengambil input pada STDIN dalam huruf besar atau kecil.
sumber
JavaScript (ES6),
108107106104 byteMengumpulkan bitmask yang arahnya mendekati mobil dan mengekstraksi bagian yang sesuai dari string prioritas.
sumber
Uncaught SyntaxError: Invalid regular expression: missing /