L16Task2.py 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. class Tortoise:
  2. def __init__(self, x=0, y=0, s=1):
  3. self.x = x
  4. self.y = y
  5. self.s = s
  6. def go_up(self):
  7. """Перемещает черепашку вверх на s клеточек."""
  8. self.y += self.s
  9. def go_down(self):
  10. """Перемещает черепашку вниз на s клеточек."""
  11. self.y -= self.s
  12. def go_left(self):
  13. """Перемещает черепашку влево на s клеточек."""
  14. self.x -= self.s
  15. def go_right(self):
  16. """Перемещает черепашку вправо на s клеточек."""
  17. self.x += self.s
  18. def evolve(self):
  19. """Увеличивает шаг на 1."""
  20. self.s += 1
  21. def degrade(self):
  22. """Уменьшает шаг на 1 или выбрасывает ошибку, если шаг ≤ 0."""
  23. if self.s <= 1:
  24. raise ValueError("Шаг не может стать ≤ 0")
  25. self.s -= 1
  26. def count_moves(self, x2, y2):
  27. """Возвращает минимальное количество действий для достижения точки (x2, y2)."""
  28. dx = abs(x2 - self.x)
  29. dy = abs(y2 - self.y)
  30. return max((dx + self.s - 1) // self.s, (dy + self.s - 1) // self.s)
  31. # Пример использования
  32. tortoise = Tortoise()
  33. tortoise.go_up()
  34. tortoise.go_right()
  35. print(tortoise.x, tortoise.y) # Output: 1 1
  36. tortoise.evolve()
  37. print(tortoise.s) # Output: 2
  38. tortoise.go_up()
  39. print(tortoise.y) # Output: 3
  40. print(tortoise.count_moves(10, 10)) # Output: 5