|
@@ -0,0 +1,48 @@
|
|
|
|
|
+class Tortoise:
|
|
|
|
|
+ def __init__(self, x=0, y=0, s=1):
|
|
|
|
|
+ self.x = x
|
|
|
|
|
+ self.y = y
|
|
|
|
|
+ self.s = s
|
|
|
|
|
+
|
|
|
|
|
+ def go_up(self):
|
|
|
|
|
+ """Перемещает черепашку вверх на s клеточек."""
|
|
|
|
|
+ self.y += self.s
|
|
|
|
|
+
|
|
|
|
|
+ def go_down(self):
|
|
|
|
|
+ """Перемещает черепашку вниз на s клеточек."""
|
|
|
|
|
+ self.y -= self.s
|
|
|
|
|
+
|
|
|
|
|
+ def go_left(self):
|
|
|
|
|
+ """Перемещает черепашку влево на s клеточек."""
|
|
|
|
|
+ self.x -= self.s
|
|
|
|
|
+
|
|
|
|
|
+ def go_right(self):
|
|
|
|
|
+ """Перемещает черепашку вправо на s клеточек."""
|
|
|
|
|
+ self.x += self.s
|
|
|
|
|
+
|
|
|
|
|
+ def evolve(self):
|
|
|
|
|
+ """Увеличивает шаг на 1."""
|
|
|
|
|
+ self.s += 1
|
|
|
|
|
+
|
|
|
|
|
+ def degrade(self):
|
|
|
|
|
+ """Уменьшает шаг на 1 или выбрасывает ошибку, если шаг ≤ 0."""
|
|
|
|
|
+ if self.s <= 1:
|
|
|
|
|
+ raise ValueError("Шаг не может стать ≤ 0")
|
|
|
|
|
+ self.s -= 1
|
|
|
|
|
+
|
|
|
|
|
+ def count_moves(self, x2, y2):
|
|
|
|
|
+ """Возвращает минимальное количество действий для достижения точки (x2, y2)."""
|
|
|
|
|
+ dx = abs(x2 - self.x)
|
|
|
|
|
+ dy = abs(y2 - self.y)
|
|
|
|
|
+ return max((dx + self.s - 1) // self.s, (dy + self.s - 1) // self.s)
|
|
|
|
|
+
|
|
|
|
|
+# Пример использования
|
|
|
|
|
+tortoise = Tortoise()
|
|
|
|
|
+tortoise.go_up()
|
|
|
|
|
+tortoise.go_right()
|
|
|
|
|
+print(tortoise.x, tortoise.y) # Output: 1 1
|
|
|
|
|
+tortoise.evolve()
|
|
|
|
|
+print(tortoise.s) # Output: 2
|
|
|
|
|
+tortoise.go_up()
|
|
|
|
|
+print(tortoise.y) # Output: 3
|
|
|
|
|
+print(tortoise.count_moves(10, 10)) # Output: 5
|