Amacınız, verilen 2B noktasının X, verilen A, B, C köşeleriyle üçgen alanı içinde olup olmadığını belirlemektir.
Test noktası X'in koordinatlarında ve üçgenin köşelerinde (toplamda 8 koordinat olmak üzere) alan ve nokta bu üçgenin içinde yer alıyorsa True, dışında ise False döndüren bir işlev yazın.
Kenar davaları için endişelenme. Nokta üçgenin sınırındaysa (kenar veya tepe) veya üçgen aslında bir çizgi parçasıysa, kodunuz çökme de dahil olmak üzere herhangi bir şeyi yapabilir. Ayrıca sayısal stabilite veya kayan nokta hassasiyeti konusunda endişelenmeyin.
Kodunuz adlandırılmış bir fonksiyon olmalıdır. Kod parçacıkları kabul edilmeyecek.
En az karakter kazanır.
Giriş:
Koordinatları temsil eden sekiz gerçek sayı. Sayılar aralıkta olacak (-1,1)
.
Tam giriş formatı esnektir. Örneğin, sekiz sayı, sekiz sayı listesi, her biri bir demet tarafından verilen dört nokta listesi, 2 * 4 matris, dört karmaşık sayı, iki x-koordinatı listesi ve y koordinatı alabilir. ve bunun gibi.
Girdi yalnızca ek kapsayıcı olmayan bazı kaptaki sayılar olmalıdır. Girdiyi herhangi bir ön işleme yapmak için kullanamazsınız, ya da artan y koordinatlarında verilen noktaların belirtilmesi gibi girdi üzerinde herhangi bir kısıtlama gerektirmezsiniz. Girişiniz herhangi bir sekiz koordinat için izin vermelidir (kodunuz daha önce bahsedilen son durumlarda keyfi davranabilir).
Lütfen giriş biçiminizi belirtin.
Çıktı:
İlgili Boole True
/ False
, karşılık gelen sayı 1
/ 0
veya dilinizdeki analoglar.
Test durumları
Girdilerde [X,A,B,C]
dört tupe, önce test noktası, ardından üç üçgen köşeleri içeren bir liste verilir . Onları çıktıları olması gerekenler True
ve olması gerekenler olarak gruplandırdım False
.
True
örneklerini:
[(-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
örneklerini:
[(-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)]