Nhiệm vụ
Viết chương trình hoặc chức năng có cấu trúc nút giao thông và xuất ra chuỗi, trong đó phương tiện sẽ đi qua.
Đầu ra phải chứa ít nhất bốn dây chuyền với các định dạng sau đây #. x->y\n, nơi #là một số số thứ tự, tiếp theo là dấu chấm ., xvà ylà nhân vật ["N", "E", "S", "W"]. Họ nên được phân tách bằng các ký tự ->. Nếu bạn không trả về một chuỗi các chuỗi, mỗi dòng phải kết thúc bằng một \n(ký tự dòng mới) hoặc tương đương với hệ thống của bạn.
Đầu vào phải có dạng sau:
- Phần 1: bốn ký tự, mỗi ký tự có đường đích cho các đường nguồn theo thứ tự N, E, S, W (theo chiều kim đồng hồ). Các nhân vật được phép là
N,S,W,Ehoặc. Không gian có nghĩa là không có xe trên đường cụ thể. Ví dụ: chuỗiS WEphương tiện, phương tiện N muốn đi về phía Nam, không gian có nghĩa là không có phương tiện E,Wcó nghĩa là S muốn đi về phía Tây,Ecó nghĩa là phương Tây muốn đi về hướng Đông. - Phần 2 - một khoảng trắng hoặc một chữ cái có nghĩa là một trong những phương tiện khẩn cấp.
- Phần 3 - hai ký tự xác định hai con đường nào có mức độ ưu tiên (ví dụ:
NEcó nghĩa là cả Bắc và Đông đều có mức độ ưu tiên cao hơn cả Nam và Tây). Nếu nó dễ dàng hơn cho bạn, bạn có thể đi những con đường ưu tiên thấp hơn (trong trường hợp đóSW).
Trong tình huống không thể giải quyết, bạn được phép trả về chuỗi một dòng rõ ràng cho người dùng, như unsolvable,no solution và tương tự. Người dùng JavaScript có thể tích hợp sẵn undefined.
Đây là một môn đánh gôn, vì vậy câu trả lời ngắn nhất bằng byte sẽ thắng.
Luật lệ giao thông
Xin lưu ý rằng một số quy tắc có thể không tuân theo quy tắc giao thông quốc gia của bạn. Một số trong số họ đã được đơn giản hóa để làm cho thách thức dễ dàng hơn. Không sử dụng câu hỏi này như một hướng dẫn cho hệ thống giao thông thực tế.
- Đối với thử thách, bạn chỉ được phép sử dụng lưu lượng bên phải.
- Giao lộ giao thông bao gồm chính xác bốn con đường gặp nhau tại một điểm. Họ được đánh dấu
N(như đối với "Bắc"),S,W,E. Những chữ cái này nên được sử dụng thay choxvàytrong ví dụ đầu ra ở trên.
- Trên mỗi con đường có nhiều nhất một chiếc xe. Nó không được đảm bảo rằng có một chiếc xe trên mỗi con đường. Mỗi chiếc xe có thể lái theo bất kỳ hướng nào trong bốn hướng, tức là. rẽ trái, rẽ phải, đi thẳng hoặc rẽ .
- Nếu đường đi của hai phương tiện không giao nhau (chúng không va chạm), chúng có thể đi cùng một lúc. Đường dẫn không va chạm, nếu hai phương tiện (danh sách có thể không đầy đủ, nhưng điều này là cố ý, chỉ để cung cấp cho bạn một đầu mối):
- đến từ hai hướng ngược nhau và cả hai đi thẳng, hoặc ít nhất một trong số họ rẽ phải,
- đến từ hai hướng ngược nhau và cả hai rẽ trái,
- đến từ các hướng ngược nhau và một trong số chúng quay theo hướng bất kỳ hoặc quay đầu, trong khi hướng còn lại quay đầu,
- đến từ các hướng trực giao, hướng bên trái rẽ phải và hướng còn lại không quay đầu
Một số ví dụ về các đường dẫn không va chạm dưới đây. Xin lưu ý rằng trên bản vẽ thứ ba, bất kỳ đường dẫn nào của N sẽ va chạm với đường dẫn của E, ngay cả khi N thực hiện quay đầu xe.
- Nếu hai đường dẫn va chạm, cần phải sử dụng các quy tắc khác. Nếu hai phương tiện đi trên cùng một con đường ưu tiên (xem bên dưới), quyền ưu tiên được trao cho phương tiện:
- xuất phát từ con đường phía bên phải, nếu chúng đến từ các hướng trực giao
- rẽ phải nếu rẽ trái
- đi thẳng hoặc rẽ phải nếu người kia quay đầu xe.
Trong cả hai ví dụ dưới đây, xe E có quyền vượt xe S.
Trong ví dụ dưới đây trước tiên đi W, sau đó N, sau đó E và cuối cùng đi S.
Đối với trường hợp cụ thể này, đầu ra của chương trình của bạn phải là:
1. W->S
2. N->S
3. E->S
4. S->S
Tất cả các trình điều khiển sử dụng tín hiệu rẽ và biết nơi tất cả những người khác muốn đến (để đơn giản, chúng tôi cho rằng có thể phân biệt giữa rẽ trái và rẽ U).
Đôi khi các con đường được đưa ra các dấu hiệu ưu tiên, điều quan trọng hơn là các quy tắc ở trên. Đường có mức độ ưu tiên cao hơn có dấu hiệu ưu tiên ( hình ảnh dấu hiệu ưu tiên ). Nếu đường ưu tiên không đi thẳng, cũng có các dấu hiệu bổ sung được sử dụng, như đường này . Các đường có mức độ ưu tiên thấp hơn có biển báo hiệu suất hoặc biển báo dừng (chúng tương đương). Không có hoặc chính xác hai con đường khác nhau sẽ có mức độ ưu tiên cao hơn. Người dùng chương trình của bạn sẽ có thể nhập những con đường nào có mức độ ưu tiên cao hơn (hoặc thấp hơn).
- Một chiếc xe xuất phát từ đường có mức độ ưu tiên cao hơn có quyền vượt qua một chiếc xe đến từ đường có mức độ ưu tiên thấp hơn, ngay cả khi nó ở bên trái.
- Nếu đường đi của hai phương tiện đến từ các con đường có cùng mức độ ưu tiên va chạm, các quy tắc phía bên phải đang hoạt động.
Trong ví dụ dưới đây, đường S và W có biển báo ưu tiên, điều đó có nghĩa là các phương tiện trên N và E sẽ cho chúng đường đi. Xe S được ưu tiên hơn xe W, vì nó ở phía bên phải, nên đi trước. Sau đó đi W, vì nó nằm trên đường có mức độ ưu tiên cao hơn E. Xe N có quyền đi từ E, vì nó ở bên phải. Khi cuối cùng đi E.
Đối với trường hợp cụ thể này, đầu ra của chương trình của bạn phải là:
1. S->W
2. W->N
3. N->S
4. E->W
- Có thể một (và không còn nữa) là phương tiện khẩn cấp , được ưu tiên bất kể nó đến từ hướng nào hoặc đi đến đâu, và nó có dấu hiệu gì (nó luôn đi trước). Chương trình nên cho phép người dùng đi vào, phương tiện nào là phương tiện khẩn cấp. Xét rằng trong ví dụ cuối N là phương tiện khẩn cấp, N đi trước, sau đó là S, W và là E. cuối cùng.
Đối với trường hợp cụ thể này với một phương tiện khẩn cấp tại N, đầu ra của chương trình của bạn phải là:
1. N->S
2. S->W
3. W->N
4. E->W
- Nếu hai phương tiện được phép đi cùng một lúc (đường đi của chúng không va chạm và chúng không phải nhường đường cho các phương tiện khác), chương trình của bạn sẽ tìm ra điều này và trả lại chúng có cùng số thứ tự
Trong ví dụ dưới đây, đường dẫn của N và E cũng như E và S hoặc W và E không va chạm. Vì S phải nhường đường cho N và W nhường đường cho S, S không thể đi cùng lúc với E, v.v ... N và E có thể. Vì vậy, lúc đầu N và E đi cùng nhau, hơn đi S và W là lần cuối.
Đầu ra thích hợp của chương trình của bạn phải là:
1. N->W
1. E->E
2. S->W
3. W->N
Bạn có thể tự do chọn thứ tự các dòng
1(N->W / E->Etương đương vớiE->E / N->W)
- Đôi khi giao thông có thể dẫn đến tình huống không thể giải quyết, điều đó không cho phép bất kỳ phương tiện nào đi. Trong cuộc sống thực, nó được giải quyết khi một trong những người lái xe tự nguyện từ chức. Ở đây, chương trình của bạn sẽ xuất ra
unsolvable, v.v., như đã đề cập trong phần đầu tiên của câu hỏi.Dưới đây là một ví dụ về tình huống không thể giải quyết. E nên nhường đường cho W, W nên nhường đường cho S và S nên nhường đường cho E.











