Thời gian để đào lên ghi chú lượng giác cũ của bạn từ trường trung học! Thách thức là giải quyết các cạnh và góc của các tam giác khác nhau. Và theo thông lệ trong môn đánh gôn, mã làm việc nhỏ nhất sẽ thắng.
Đây không phải là một vấn đề tầm thường; triển khai tham chiếu của tôi trong python hiện chỉ còn 838 837 ký tự, nhưng tôi chắc chắn bạn sẽ có thể giải pháp chơi golf nhỏ hơn nhiều.
Ngoài ra, nếu bạn bị mắc kẹt, phần này trên Wikipedia sẽ giúp bạn đi: Tam giác: Tính toán các cạnh và góc .
Đầu vào
Hình tam giác sau đây cho thấy tên của các cạnh và góc được sử dụng trong thử thách này. Lưu ý rằng các cạnh là chữ thường và các góc là chữ hoa.
Đầu vào được đưa ra dưới dạng sáu giá trị được phân tách bằng dấu cách, trên stdin
hoặc dưới dạng đối số dòng lệnh (lựa chọn của bạn). Sáu giá trị tương ứng với các cạnh a, b, c
và các góc A, B, C
. Các mặt chưa biết được đưa ra dưới dạng dấu hỏi ( ?
). Cả hai góc đầu vào và đầu ra phải được tính bằng radian. Bạn có thể cho rằng các giá trị đầu vào là chính xác (bạn không phải xác nhận bất cứ điều gì). Bạn cũng có thể giả định rằng tam giác đầu vào không suy biến, và tất cả các cạnh và góc đều khác nhau.
Ví dụ đầu vào sau đây cho bạn biết bên đó a
là 8
, bên b
là 12
và góc A
là 0.5
radian:
8 12 ? 0.5 ? ?
Đầu ra
Đầu ra được đưa ra ở cùng định dạng với đầu vào - sáu số được phân tách bằng dấu cách stdout
. Ngoại lệ duy nhất là khi không thể giải tam giác đầu vào - thì chuỗi "No solution"
phải được ghi vào stdout
. Nếu hai giải pháp là có thể, cả hai đều xuất ra với một dòng mới giữa chúng.
Sau đây là đầu ra cho đầu vào trên:
8.0 12.0 16.0899264342 0.5 0.802561439714 1.83903121388
8.0 12.0 4.97205505116 0.5 2.33903121388 0.302561439714
Đầu ra không bắt buộc phải có nhiều độ chính xác, nhưng ít nhất một vài số thập phân là bắt buộc.
Quy tắc
- Đầu vào được đọc từ
stdin
hoặc đối số dòng lệnh - Đầu ra được ghi vào
stdout
- Nếu hai giải pháp có thể với đầu vào đã cho, đầu ra cả hai
- Nếu có quá ít thông tin để có được một hoặc hai giải pháp rõ ràng, hãy coi đó là một
"No solution"
trường hợp - Không có mã tích hợp hoặc có sẵn nào có thể được sử dụng (tất nhiên bạn có thể sử dụng các hàm lượng giác, nhưng không phải là "
solveTriangle
" hoặc như vậy) - Mã ngắn nhất sẽ thắng
Các trường hợp thử nghiệm
Trong 3 4 5 ? ? ?
Ngoài 3.0 4.0 5.0 0.643501108793 0.927295218002 1.57079630572
Trong ? 4 ? 0.64 0.92 1.57
Ngoài 3.00248479301 4.0 5.02764025486 0.64 0.92 1.57
Trong ? ? 5 ? 0.92 ?
Ngoài No solution
Trong ? ? 5 ? 0.92 1.57
Ngoài 3.03226857833 3.97800936148 5.0 0.65159265359 0.92 1.57
Trong 8 12 ? 0.5 ? ?
Ra (hai giải pháp)
8.0 12.0 16.0899264342 0.5 0.802561439714 1.83903121388
8.0 12.0 4.97205505116 0.5 2.33903121388 0.302561439714
Trong 8 12 ? ? .5 ?
Ngoài 8.0 12.0 18.3912222133 0.325325285223 0.5 2.31626736837