Câu hỏi này hơi khó hơn phiên bản nghệ thuật ASCII. Không có nghệ thuật, và bây giờ bạn có thể làm một số số học dấu phẩy động!
Các thách thức
USS StackExchange đang đi qua trường trọng lực của hành tinh cg-00DLEF thì một vụ nổ thiên văn xảy ra trên tàu. Là giám đốc lập trình của con tàu, công việc của bạn là mô phỏng quỹ đạo của con tàu để dự đoán liệu bạn có bị buộc phải hạ cánh trong hệ mặt trời của cg-00DELF hay không. Trong vụ nổ, tàu của bạn bị hư hại nặng. Do DEEEPRAROM * miễn phí có giới hạn * của tàu vũ trụ, bạn phải viết chương trình của mình càng ít ký tự càng tốt.
* Tự động truy cập ngẫu nhiên có thể xóa bằng điện tử Có thể lập trình truy cập ngẫu nhiên Chỉ đọc bộ nhớ
Mô phỏng
Giống như phiên bản nghệ thuật ASCII, sẽ có ý tưởng về các bước thời gian. Trong phiên bản khác, một bước thời gian là một khoảng thời gian tương đối lớn: con tàu có thể di chuyển vượt quá trọng lực của một hành tinh trong một bước thời gian duy nhất. Ở đây, bước thời gian là một đơn vị thời gian nhỏ hơn nhiều do khoảng cách lớn hơn liên quan. Tuy nhiên, một sự khác biệt chính là sự không tồn tại của các tế bào. Vị trí và vận tốc hiện tại của tàu vũ trụ sẽ là các số điểm nổi, cùng với các lực hấp dẫn liên quan. Một thay đổi khác là thực tế là các hành tinh hiện có kích thước lớn hơn nhiều.
Sẽ có tới ba hành tinh trong mô phỏng. Cả ba sẽ có một vị trí, bán kính và trọng lực cụ thể. Trọng lực cho mỗi hành tinh là một vectơ tác động một lực trực tiếp vào trung tâm của hành tinh. Công thức để tìm ra sức mạnh của vectơ này là (Gravity)/(Distance**2)
, trong đó khoảng cách là khoảng cách chính xác từ con tàu đến trung tâm của hành tinh. Điều này có nghĩa là không có giới hạn về nơi mà trọng lực có thể đạt tới.
Tại bất kỳ thời điểm cụ thể nào, tàu vũ trụ có vận tốc, đó là khoảng cách và góc mà nó di chuyển từ bước trước đến giờ. Con tàu cũng có đà. Khoảng cách mà nó sẽ di chuyển giữa bước thời gian hiện tại và bước tiếp theo là tổng vận tốc hiện tại của nó được thêm vào tất cả các vectơ trọng lực tại vị trí của nó. Điều này trở thành vận tốc mới của tàu vũ trụ.
Mỗi mô phỏng có giới hạn thời gian là 10000 bước thời gian. Nếu tàu vũ trụ di chuyển bên trong một hành tinh (nó gần trung tâm hành tinh hơn bán kính của hành tinh), thì nó đâm vào hành tinh đó. Nếu tàu vũ trụ không đâm vào bất kỳ hành tinh nào vào cuối mô phỏng, thì nó được cho là đã thoát khỏi lực hấp dẫn. Không chắc là con tàu có thể được căn chỉnh hoàn hảo đến mức nó có thể ở trong quỹ đạo trong 10000 bước thời gian trong khi gặp sự cố ở bước thời gian 10001.
Đầu vào
Đầu vào sẽ là bốn dòng đến STDIN. Mỗi dòng bao gồm bốn số được phân cách bằng dấu phẩy. Đây là định dạng của các số:
ShipLocX,ShipLocY,ShipVelX,ShipVelY
Planet1LocX,Planet1LocY,Planet1Gravity,Planet1Radius
Planet2LocX,Planet2LocY,Planet2Gravity,Planet2Radius
Planet3LocX,Planet3LocY,Planet3Gravity,Planet3Radius
Nếu có ít hơn ba hành tinh, thì các dòng còn lại sẽ chứa đầy số không cho tất cả các giá trị. Đây là một ví dụ đầu vào:
60,0,0,10
0,0,4000,50
100,100,4000,50
0,0,0,0
Điều này có nghĩa là tàu vũ trụ nằm ở (60,0) và đang đi thẳng "lên / bắc" với tốc độ 10 đơn vị / bước thời gian. Có hai hành tinh, một ở (0,0) và một ở (100,100). Cả hai đều có trọng lực 4000 và bán kính 50. Mặc dù tất cả chúng đều là số nguyên, nhưng chúng sẽ không phải luôn luôn là số nguyên.
Đầu ra
Đầu ra sẽ là một từ duy nhất cho STDOUT để cho biết tàu vũ trụ có bị rơi hay không. Nếu tàu gặp nạn, in crash
. Nếu không, in escape
. Đây là đầu ra dự kiến cho đầu vào trên:
crash
Bạn có thể tự hỏi những gì đã xảy ra. Dưới đây là một bài viết của Pastebin có nhật ký chuyến bay chi tiết cho tàu vũ trụ. Những con số không tốt lắm trong việc giúp mọi người hình dung sự kiện vì vậy đây là điều đã xảy ra: Tàu vũ trụ tìm cách thoát khỏi lực hấp dẫn của hành tinh thứ nhất (về phía tây) với sự trợ giúp của trọng lực của hành tinh thứ hai (về phía đông bắc). Nó di chuyển về phía bắc và sau đó đi nhẹ về phía tây của hành tinh thứ hai, hầu như không thấy nó. Sau đó, nó uốn quanh phía bắc của hành tinh và đâm vào phía đông của hành tinh thứ hai.
Một số trường hợp nữa để kiểm tra
60,0,10,-10
0,0,2000,50
100,100,1357.9,47.5
0,0,0,0
thoát (do luật bình phương nghịch đảo, 2000 không có nhiều trọng lực nếu bạn ở cách xa 60 đơn vị)
0,0,0,0
100,100,20000,140
-50,-50,50,50
-100,-100,50,50
tai nạn (hành tinh đầu tiên cực kỳ lớn và cực kỳ gần)
0,0,0,0
0,0,0,0
0,0,0,0
0,0,0,0
thoát (đây là trường hợp cạnh: không có hành tinh nào và cách giải thích đơn giản sẽ gợi ý rằng tàu vũ trụ nằm trực tiếp trên đỉnh các hành tinh)
Quy tắc, hạn chế và ghi chú
Đây là mã golf. Quy tắc golf tiêu chuẩn áp dụng. Chương trình của bạn chỉ nên được viết bằng các ký tự ASCII có thể in được. Bạn không thể truy cập bất kỳ loại cơ sở dữ liệu bên ngoài. Bạn có thể viết các mục bằng bất kỳ ngôn ngữ nào (ngoài ngôn ngữ chuyên dùng để giải quyết thách thức này).
Kết thúc truyền