Mục tiêu của bạn là xác định xem một điểm 2D X đã cho có nằm trong diện tích của tam giác với các đỉnh A, B, C đã cho hay không.
Viết hàm lấy tọa độ của điểm kiểm tra X và ba đỉnh tam giác (sao cho tổng 8 tọa độ) và trả về True nếu điểm nằm bên trong tam giác đó và Sai nếu nằm bên ngoài.
Đừng lo lắng về các trường hợp cạnh. Nếu điểm nằm trên đường biên của tam giác (cạnh hoặc đỉnh) hoặc tam giác thực sự là một đoạn thẳng, mã của bạn có thể làm bất cứ điều gì, bao gồm cả sự cố. Cũng đừng lo lắng về độ ổn định số hoặc độ chính xác của dấu phẩy động.
Mã của bạn phải là một hàm được đặt tên. Đoạn mã sẽ không được chấp nhận.
Ít nhân vật nhất chiến thắng.
Đầu vào:
Tám số thực biểu thị tọa độ. Các con số sẽ nằm trong phạm vi (-1,1)
.
Các định dạng đầu vào chính xác là linh hoạt. Ví dụ, bạn có thể lấy tám số, một danh sách tám số, một danh sách bốn điểm được đưa ra bởi một tuple, ma trận 2 * 4, bốn số phức, hai danh sách tọa độ x và tọa độ y, vân vân
Đầu vào chỉ cần là các số trong một số container, không có dữ liệu bổ sung. Bạn không thể sử dụng đầu vào để thực hiện bất kỳ quá trình tiền xử lý nào, bạn cũng không thể yêu cầu bất kỳ ràng buộc nào đối với đầu vào, chẳng hạn như yêu cầu các điểm được đưa ra theo tọa độ y tăng dần. Đầu vào của bạn phải cho phép tám tọa độ bất kỳ (mặc dù mã của bạn có thể hoạt động tùy ý trong các trường hợp cạnh được đề cập trước đó).
Vui lòng cho biết định dạng đầu vào của bạn.
Đầu ra:
Hoặc Boolean tương ứng True
/ False
, số tương ứng 1
/ 0
hoặc tương tự trong ngôn ngữ của bạn.
Các trường hợp thử nghiệm
Các đầu vào được đưa ra một danh sách [X,A,B,C]
gồm bốn bộ dữ liệu, điểm kiểm tra đầu tiên, sau đó là ba đỉnh tam giác. Tôi đã nhóm chúng thành những người có đầu ra nên True
và những người nên có False
.
True
trường hợp:
[(-0.31961, -0.12646), (0.38478, 0.37419), (-0.30613, -0.59754), (-0.85548, 0.6633)]
[(-0.87427, -0.00831), (0.78829, 0.60409), (-0.90904, -0.13856), (-0.80685, 0.48468)]
[(0.28997, -0.03668), (-0.28362, 0.42831), (0.39332, -0.07474), (-0.48694, -0.10497)]
[(-0.07783, 0.04415), (-0.34355, -0.07161), (0.59105, -0.93145), (0.29402, 0.90334)]
[(0.36107, 0.05389), (0.27103, 0.47754), (-0.00341, -0.79472), (0.82549, -0.29028)]
[(-0.01655, -0.20437), (-0.36194, -0.90281), (-0.26515, -0.4172), (0.36181, 0.51683)]
[(-0.12198, -0.45897), (-0.35128, -0.85405), (0.84566, 0.99364), (0.13767, 0.78618)]
[(-0.03847, -0.81531), (-0.18704, -0.33282), (-0.95717, -0.6337), (0.10976, -0.88374)]
[(0.07904, -0.06245), (0.95181, -0.84223), (-0.75583, -0.34406), (0.16785, 0.87519)]
[(-0.33485, 0.53875), (-0.25173, 0.51317), (-0.62441, -0.90698), (-0.47925, 0.74832)]
False
trường hợp:
[(-0.99103, 0.43842), (0.78128, -0.10985), (-0.84714, -0.20558), (-0.08925, -0.78608)]
[(0.15087, -0.56212), (-0.87374, -0.3787), (0.86403, 0.60374), (0.01392, 0.84362)]
[(0.1114, 0.66496), (-0.92633, 0.27408), (0.92439, 0.43692), (0.8298, -0.29647)]
[(0.87786, -0.8594), (-0.42283, -0.97999), (0.58659, -0.327), (-0.22656, 0.80896)]
[(0.43525, -0.8923), (0.86119, 0.78278), (-0.01348, 0.98093), (-0.56244, -0.75129)]
[(-0.73365, 0.28332), (0.63263, 0.17177), (-0.38398, -0.43497), (-0.31123, 0.73168)]
[(-0.57694, -0.87713), (-0.93622, 0.89397), (0.93117, 0.40775), (0.2323, -0.30718)]
[(0.91059, 0.75966), (0.60118, 0.73186), (0.32178, 0.88296), (-0.90087, -0.26367)]
[(0.3463, -0.89397), (0.99108, 0.13557), (0.50122, -0.8724), (0.43385, 0.00167)]
[(0.88121, 0.36469), (-0.29829, 0.21429), (0.31395, 0.2734), (0.43267, -0.78192)]