Dựa trên một ý tưởng được đề xuất bởi Zgarb .
Một tàu vũ trụ đang di chuyển xung quanh lưới 3D thông thường. Các ô của lưới được lập chỉ mục với các số nguyên trong hệ tọa độ tay phải, xyz . Tàu vũ trụ bắt đầu từ điểm gốc, chỉ dọc theo trục x dương , với trục z dương hướng lên trên.
Tàu vũ trụ sẽ bay dọc theo một quỹ đạo được xác định bởi một chuỗi các chuyển động không trống. Mỗi chuyển động là F
( hoặc hướng về ) làm cho tàu vũ trụ di chuyển một ô theo hướng đối diện của nó, hoặc một trong sáu phép quay UDLRlr
. Chúng tương ứng với cao độ, ngáp và lăn như sau:
Cảm ơn Zgarb đã tạo ra sơ đồ.
U
p vàD
thay đổi độ cao của tàu vũ trụ 90 độ (trong đó hướng tương ứng với chuyển động của mũi tàu vũ trụ).L
eft vàR
ight thay đổi ngáp của tàu vũ trụ 90 độ. Họ chỉ là rẽ trái và phải thường xuyên.l
eft vàr
ight là các chuyển động lăn 90 độ, trong đó hướng cho biết cánh nào di chuyển xuống dưới.
Lưu ý rằng những điều này phải luôn được giải thích liên quan đến tàu vũ trụ để các trục có liên quan xoay cùng với nó.
Theo thuật ngữ toán học, tàu vũ trụ ban đầu ở vị trí (0, 0, 0)
, chỉ dọc theo (1, 0, 0)
vectơ, với (0, 0, 1)
hướng lên trên. Các phép quay tương ứng với các ma trận sau được áp dụng cho hệ tọa độ:
U = ( 0 0 -1 D = ( 0 0 1
0 1 0 0 1 0
1 0 0 ) -1 0 0 )
L = ( 0 -1 0 R = ( 0 1 0
1 0 0 -1 0 0
0 0 1 ) 0 0 1 )
l = ( 1 0 0 r = ( 1 0 0
0 0 1 0 0 -1
0 -1 0 ) 0 1 0 )
Bạn nên xuất vị trí cuối cùng của tàu vũ trụ dưới dạng ba số nguyên x , y , z . Đầu ra có thể là ba số nguyên riêng biệt hoặc một danh sách hoặc chuỗi chứa chúng. Họ có thể theo bất kỳ thứ tự nhất quán miễn là bạn chỉ định nó.
Bạn có thể viết chương trình hoặc hàm, lấy đầu vào qua STDIN (hoặc thay thế gần nhất), đối số dòng lệnh hoặc đối số hàm và xuất kết quả qua tham số STDOUT (hoặc thay thế gần nhất), tham số trả về hàm hoặc tham số hàm (out).
Luật golf tiêu chuẩn được áp dụng.
Các trường hợp thử nghiệm
F => (1, 0, 0)
FDDF => (0, 0, 0)
FDDDF => (1, 0, 1)
LrDDlURRrr => (0, 0, 0)
UFLrRFLRLR => (1, 0, 1)
FFrlFULULF => (3, 0, -1)
LLFRLFDFFD => (-2, 0, -2)
FrrLFLFrDLRFrLLFrFrRRFFFLRlFFLFFRFFLFlFFFlUFDFDrFF => (1, 5, 7)
FUrRLDDlUDDlFlFFFDFrDrLrlUUrFlFFllRLlLlFFLrUFlRlFF => (8, 2, 2)
FFLrlFLRFFFRFrFFFRFFRrFFFDDLFFURlrRFFFlrRFFlDlFFFU => (1, 2, -2)
FLULFLFDURDUFFFLUlFlUFLFRrlDRFFFLFUFrFllFULUFFDRFF => (-3, -2, -3)
Ví dụ làm việc
Dưới đây là các bước trung gian của UFLrRFLRLR
trường hợp thử nghiệm. Ở đây, tất cả các tọa độ trung gian và vectơ chỉ hướng được đưa ra trong hệ tọa độ toàn cầu ban đầu (trái ngược với một cục bộ của tàu vũ trụ):
Cmd. Position Forward Up
( 0, 0, 0) ( 1, 0, 0) ( 0, 0, 1)
U ( 0, 0, 0) ( 0, 0, 1) (-1, 0, 0)
F ( 0, 0, 1) ( 0, 0, 1) (-1, 0, 0)
L ( 0, 0, 1) ( 0, 1, 0) (-1, 0, 0)
r ( 0, 0, 1) ( 0, 1, 0) ( 0, 0, 1)
R ( 0, 0, 1) ( 1, 0, 0) ( 0, 0, 1)
F ( 1, 0, 1) ( 1, 0, 0) ( 0, 0, 1)
L ( 1, 0, 1) ( 0, 1, 0) ( 0, 0, 1)
R ( 1, 0, 1) ( 1, 0, 0) ( 0, 0, 1)
L ( 1, 0, 1) ( 0, 1, 0) ( 0, 0, 1)
R ( 1, 0, 1) ( 1, 0, 0) ( 0, 0, 1)