Программирование на Go
Попрыгун
Ограничение времени 20 секунд
Ограничение памяти 640.0 Мб
Ввод стандартный ввод или main.go
Вывод стандартный вывод или output.txt
Кузнечик прыгает по длинной линейке влево и вправо, точно приземляясь на риски с сантиметрами. Кузнечик может прыгнуть не более чем на 5см. На риске 20см лежит зёрнышко. Помогите кузнечику его съесть.
Реализуйте структуру
type Grasshopper struct {} // знает своё местоположение на линейке
Которая реализует интерфейс
type Jumper interface {
WhereAmI() int // выводит текущее положение кузнечика на линейке
Jump() (int, error) // кузнечик прыгает к зерну. Выводит новое положение кузнечика, или ошибку, если он уже ест зерно
}
и конструктор для структуры:
func PlaceJumper(place, target int) Jumper {}
Пример
Ввод Вывод
package main
import "fmt"
const (
place = 0
target = 3
)
func main() {
g := PlaceJumper(place, target)
fmt.Println(g.WhereAmI())
for {
currPlace, err := g.Jump()
if err != nil {
break
}
fmt.Println(currPlace)
}
}
0
3
Примечания
Необходимо написать файл в пакете main без функции main(), с перечисленными в условии функциями и структурой.
Обратите внимание, что для изменения структуры внутри функции, она должна передаваться по ссылке, а не по значению (символ *). Например: func (g *Grasshopper) Jump() (int, error) {
Кузнечик так и не смог добраться до зёрнышка, и помер от голода :(