TL; DR: Đưa ra một mảng ký tự và robot ở vị trí bắt đầu của mảng, viết một thuật toán có thể đọc một chuỗi bằng các chuyển động (
F
cho "đi tiếp",R
cho "xoay 90 độ sang phải" vàL
cho "xoay 90 độ bên trái ") và tính toán vị trí kết thúc của robot. Thêm chi tiết trong văn bản đầy đủ.
Chúng tôi có ở nhà một thiết bị lập trình rất đơn giản cho trẻ em: một chiếc xe nhỏ có nút bấm để làm cho chiếc xe đi về phía trước, rẽ trái 90 độ hoặc rẽ phải 90 độ. Một cái gì đó tương tự như thế này:
Chúng tôi cũng có một tấm thảm xốp với các chữ cái như thế này:
Mục đích của tất cả những điều này là để dạy cho trẻ em cả bảng chữ cái và sự thô sơ của lập trình, tất cả cùng một lúc.
Các thách thức
Giả sử chúng ta đã sắp xếp ngẫu nhiên thảm xốp của chúng tôi như thế này:
+---+---+---+---+---+---+---+
| E | R | L | B | I | X | N |
+---+---+---+---+---+---+---+
| O | A | Q | Y | C | T | G |
+---+---+---+---+---+---+---+
| F | W | H | P | D | Z | S |
+---+---+---+---+---+---+---+
| K | V | U | M | J |
+---+---+---+---+---+
| |
+---+
Giả sử chúng ta cũng đã sửa đổi chiếc xe để khi chúng ta lập trình lệnh "đi tiếp", chiếc xe sẽ đi về phía trước chính xác kích thước của một hình vuông trong chiếu. Vì vậy, nếu chiếc xe ở trong U
quảng trường và đi về phía bắc, nó dừng lại chính xác trong P
hình vuông.
Tất cả các hướng dẫn được đưa ra cho chiếc xe trước khi nó bắt đầu di chuyển, và đó là:
F
: Xe đi tiếp vào quảng trường tiếp theo.R
: Xe quay 90 độ ngay tại vị trí của nó (không di chuyển thêm).L
: Xe quay trái 90 độ ở vị trí của nó (không di chuyển thêm).
Sau khi được hướng dẫn, bạn có thể nhấn nút "GO" và gửi xe đến một vị trí nhất định vì nó sẽ tuân theo mọi chỉ dẫn theo thứ tự nhất định. Vì vậy, bạn có thể bảo đứa trẻ chèn các hướng dẫn cần thiết cho chiếc xe để đi đến một lá thư nhất định.
Bạn phải viết chương trình / chức năng ngắn nhất xử lý một string
(tham số đầu vào) với một bộ hướng dẫn và tính toán chữ cái mà xe dừng lại (đầu ra string
).
Chi tiết:
- Chiếc xe luôn bắt đầu ở ô vuông trống ở phía dưới, và hướng về phía bắc (về phía
U
hình vuông). - Chuỗi đầu vào sẽ chỉ chứa các chữ cái
F
,R
,L
vàG
(đối với nút "đi"). Bạn có thể sử dụng chữ cái viết thường cho chiếu và hướng dẫn, nếu bạn thích như vậy. - Thuật toán phải tuân theo mọi hướng dẫn trong chuỗi trước lần đầu tiên
G
(mọi hướng dẫn sau đó bị bỏ qua vì phương tiện đã bắt đầu di chuyển). - Nếu xe đi ra khỏi thảm tại bất kỳ thời điểm nào (ngay cả khi chuỗi đầu vào chưa được xử lý hoàn toàn), thuật toán phải trả về chuỗi
Out of mat
. - Nếu không, thuật toán phải trả lại chữ cái mà chiếc xe đã dừng lại. Điểm bắt đầu được tính là một
char (hoặc một chuỗi rỗng).
Ví dụ:
Input: FFG
Output: P
Input: FRFRFG
Output: Out of mat
Input: RRFFG
Output: Out of mat
Input: FFFRFFLFG
Output: X
Input: FFFRFFLF
Output: <-- Nothing or a whitespace (the robot has not started moving)
Input: FFFRRFFFG
Output: <-- Nothing or a whitespace (the robot has returned to the starting point)
Input: RRRRRLFFFLFFRFRFGFFRRGRFF
Output: L (Everything after the first G is ignored)
Đây là môn đánh gôn , vì vậy có thể chương trình ngắn nhất cho mỗi ngôn ngữ sẽ giành chiến thắng!
@
vị trí bắt đầu và khoảng trắng nằm ngoài mat, vì vậy cấu hình này sẽ làERLBIXN\nOAQYCTG\nFWHPDZS\n KVUMJ \n @
(với các khoảng cách khác nhau, SE làm rối tung nó)