Đưa ra một chuỗi đại diện cho một loạt các tín hiệu tay máy bay , viết một chức năng hoặc chương trình để tính toán vị trí cuối cùng của một chiếc máy bay theo các tín hiệu này.
NB: tọa độ trong thách thức này được thể hiện như một cặp tọa độ Descartes, cộng với một tiêu đề theo hướng la bàn: (x, y, h)
nơi x
là tọa độ x, y
là y phối hợp, và h
là một trong những N
, E
, S
, hoặc W
.
Bạn bắt đầu với một chiếc máy bay ở (0, 0, N)
trên một lưới tưởng tượng, với động cơ tắt. Đầu vào của bạn là một chuỗi chứa các cặp ký tự được phân tách bằng dấu phẩy, trong đó mỗi cặp đại diện cho một tín hiệu sắp xếp theo thứ tự. Bạn phải lần lượt theo từng tín hiệu sắp xếp theo thứ tự và xuất ra tọa độ (x, y, h)
dưới dạng vị trí cuối cùng của máy bay.
Nếu một tín hiệu yêu cầu máy bay của bạn di chuyển, giả sử nó di chuyển một đơn vị theo hướng yêu cầu cho mỗi tín hiệu của loại mà nó nhận được. Nếu tín hiệu yêu cầu máy bay của bạn quay, giả sử nó quay 90 độ theo hướng yêu cầu cho từng tín hiệu của loại mà nó nhận được.
Một chiếc máy bay không thể di chuyển nếu động cơ của nó tắt. Nếu động cơ máy bay của bạn tắt và bạn nhận được tín hiệu chuyển động / rẽ, không áp dụng chuyển động / rẽ.
Tín hiệu
Mỗi tín hiệu sắp xếp được thể hiện bằng một cặp ký tự. Đầu tiên của cặp đại diện cho vị trí của cánh tay trái của nguyên soái, theo quan điểm của máy bay , và cánh tay phải thứ hai từ cùng một POV. Biểu đồ tiện dụng này của các tín hiệu có thể giúp đỡ.
o/ — START ENGINES (no movement, no turn)
-/ — CUT ENGINES (no movement, no turn)
-~ — TURN LEFT (no movement, left turn)
~- — TURN RIGHT (no movement, right turn)
~~ — COME FORWARD (forward movement, no turn)
:: — MOVE BACK (backward movement, no turn)
/\ — NORMAL STOP (no movement, no turn)
Đây không phải là danh sách đầy đủ các tín hiệu sắp xếp, nhưng đó là tất cả những gì bạn cần để hỗ trợ.
Đầu vào
Đầu vào là một chuỗi được phân tách bằng dấu phẩy chứa các cặp ký tự. Chuỗi này sẽ luôn hợp lệ - bạn không phải xác thực đầu vào.
Đầu ra
Đầu ra là một tập hợp tọa độ như mô tả ở trên. Bạn có thể trả lại giá trị này ở bất kỳ định dạng thuận tiện nào - nếu ngôn ngữ của bạn hỗ trợ nhiều giá trị trả về, bạn có thể sử dụng giá trị đó; cách khác, bạn có thể sử dụng một chuỗi (dấu ngoặc bao quanh tọa độ là không bắt buộc), mảng, tuple, danh sách hoặc bất cứ điều gì khác mà bạn thấy thuận tiện. Nguyên tắc duy nhất là nó phải chứa x
, y
vàh
các giá trị, theo thứ tự đó.
Các trường hợp thử nghiệm
Input — Output
o/,~~,~~,~-,:: — (-1, 2, E)
::,~-,o/,/\,~~,-~,~~,~~,~~ — (-3, 1, W)
o/,::,-/,~~,o/,~-,~~,~~,~- — (2, -1, S)
o/,~-,~-,::,::,~-,~~,-~ — (-1, 2, S)
~-,~-,o/,::,::,-/,~~,-~ — (0, -2, N)