Попрыгун Ограничение времени 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) {
Ограничение времени 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) {