π ΠΠ°ΠΊ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, Π»Π΅ΠΆΠ°Ρ Π»ΠΈ ΡΠΎΡΠΊΠΈ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΡΠΌΠΎΠΉ Π² Python?
ΠΠ°ΠΊ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, Π»Π΅ΠΆΠ°Ρ Π»ΠΈ ΡΠΎΡΠΊΠΈ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΡΠΌΠΎΠΉ Π² Python?
ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π° Π½Π° Python, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π²Π°ΠΌ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, Π»Π΅ΠΆΠ°Ρ Π»ΠΈ Π·Π°Π΄Π°Π½Π½ΡΠ΅ ΡΠΎΡΠΊΠΈ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΡΠΌΠΎΠΉ:
def are_points_collinear(points):
x1, y1 = points[0]
x2, y2 = points[1]
x3, y3 = points[2]
return (x2 - x1) * (y3 - y1) == (x3 - x1) * (y2 - y1)
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΏΠ΅ΡΠ΅Π΄Π°Π² ΡΠΏΠΈΡΠΎΠΊ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ ΡΠΎΡΠ΅ΠΊ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°. ΠΠ½Π° Π²Π΅ΡΠ½Π΅Ρ True
, Π΅ΡΠ»ΠΈ Π²ΡΠ΅ ΡΠΎΡΠΊΠΈ Π»Π΅ΠΆΠ°Ρ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΡΠΌΠΎΠΉ, ΠΈ False
, Π΅ΡΠ»ΠΈ Π½Π΅Ρ.
ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ:
points = [(1, 2), (3, 4), (5, 6)]
result = are_points_collinear(points)
print(result) # ΠΡΠ²ΠΎΠ΄: True
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ
ΠΠ°ΠΊ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π»Π΅ΠΆΠ°Ρ Π»ΠΈ ΡΠΎΡΠΊΠΈ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΡΠΌΠΎΠΉ Π² Python
ΠΡΠΎΠ²Π΅ΡΠΊΠ°, Π»Π΅ΠΆΠ°Ρ Π»ΠΈ ΡΠΎΡΠΊΠΈ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΡΠΌΠΎΠΉ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π²Π°ΠΆΠ½ΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ Π² Π³Π΅ΠΎΠΌΠ΅ΡΡΠΈΠΈ. Π Python ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠΉ "ΠΠ΅ΡΠΎΠ΄ΠΎΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅Π»Π΅ΠΉ" Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ.
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΌΡ Π½Π°ΡΠ½Π΅ΠΌ, Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ, ΡΡΠΎ ΡΠΎΡΠΊΠΈ Π² Π΄Π²ΡΡ ΠΌΠ΅ΡΠ½ΠΎΠΉ Π³Π΅ΠΎΠΌΠ΅ΡΡΠΈΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ ΠΊΠ°ΠΊ ΠΏΠ°ΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ (x, y). ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠΎΡΠΊΠΈ (x1, y1), (x2, y2) ΠΈ (x3, y3) Π»Π΅ΠΆΠ°Π»ΠΈ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΡΠΌΠΎΠΉ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΌΠ°ΡΡΠΈΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠ°Π²Π΅Π½ Π½ΡΠ»Ρ:
| x1 y1 1 |
| x2 y2 1 | = 0
| x3 y3 1 |
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π·Π½Π°Π΅ΠΌ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ, Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ, Π»Π΅ΠΆΠ°Ρ Π»ΠΈ ΡΠΎΡΠΊΠΈ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΡΠΌΠΎΠΉ.
def are_points_collinear(points):
x1, y1 = points[0]
x2, y2 = points[1]
x3, y3 = points[2]
determinant = x1 * (y2 - y3) - y1 * (x2 - x3) + (x2 * y3 - y2 * x3)
return determinant == 0
Π€ΡΠ½ΠΊΡΠΈΡ "are_points_collinear" ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ ΡΠΎΡΠ΅ΠΊ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π±ΡΠ»Π΅Π²ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠ΅Π΅, Π»Π΅ΠΆΠ°Ρ Π»ΠΈ ΡΠΎΡΠΊΠΈ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΡΠΌΠΎΠΉ. ΠΠ½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΎΡΠΌΡΠ»Ρ Π΄Π»Ρ ΡΠ°ΡΡΠ΅ΡΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ ΠΈ ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅Ρ Π΅Π³ΠΎ Ρ Π½ΡΠ»Π΅ΠΌ.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΡΠ΅ΠΌ Π½Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ :
points1 = [(1, 1), (2, 2), (3, 3)]
points2 = [(1, 1), (2, 2), (4, 5)]
print(are_points_collinear(points1)) # ΠΠΎΠ»ΠΆΠ½ΠΎ Π²ΡΠ²Π΅ΡΡΠΈ True
print(are_points_collinear(points2)) # ΠΠΎΠ»ΠΆΠ½ΠΎ Π²ΡΠ²Π΅ΡΡΠΈ False
ΠΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π²ΡΡΠ΅, ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ Π²ΡΠ²ΠΎΠ΄:
True
False
ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, Π½Π°ΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, Π»Π΅ΠΆΠ°Ρ Π»ΠΈ ΡΠΎΡΠΊΠΈ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΡΠΌΠΎΠΉ.
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ "ΠΠ΅ΡΠΎΠ΄Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅Π»Π΅ΠΉ" ΠΈ Π΅Π³ΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π² Python ΠΏΠΎΠΌΠΎΠ³ΡΡ Π²Π°ΠΌ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΡΠ΅ΡΠΈΡΡ Π·Π°Π΄Π°ΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΊΠΎΠ»Π»ΠΈΠ½Π΅Π°ΡΠ½ΠΎΡΡΠΈ ΡΠΎΡΠ΅ΠΊ. Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ Π·Π½Π°Π΅ΡΠ΅, ΠΊΠ°ΠΊ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π»Π΅ΠΆΠ°Ρ Π»ΠΈ ΡΠΎΡΠΊΠΈ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΡΠΌΠΎΠΉ Π² Python!