Вот решение. m
- ваш уклон, а c
- ваш перехват. Хитрость заключается в том, чтобы просто проверить расстояние от линии до точки x и y. Если расстояние достаточно близко, вы можете нарисовать свой символ (*
). Чем больше пороговое значение для расстояния, тем толще окажется линия.
import math
def intercept(px, py, m, c):
# Find distance between point (px, py) and line (y=mx+c)
dist = abs(m*px - py + c) / math.sqrt( m*m + 1)
if dist <= 0.5:
return True
else:
return False
rows=20
cols=20
m = 0.25
c = 0
for row in range(rows):
y = rows - row - 1
for col in range(cols):
x = col
if intercept(x, y, m, c):
print("*", end="")
else:
print(" ", end="")
print("")
Выход для m = 1
Выход для m = 0,4
Так как я делал это в ноутбуке jupyter, он не был моноширинным шрифтом, следовательно, m = 1 не идеальный наклон 45 градусов, но если вы попробуете это в своем терминале или любом моноширинном выходе, он должен работать так, как ожидалось.