• Задача
  • Решение
  • Обсуждение

Кольцевой буфер поступлений на «Полке»

Для учёта последних восьми поступлений на «Полку» нужен кольцевой буфер фиксированного размера. Реализуйте методы Ring: Add добавляет значение и при переполнении перезаписывает старейшее, Sum возвращает сумму накопленных значений.

GolangРешение
func (r *Ring) Add(v int) {
	r.buf[r.head] = v
	r.head = (r.head + 1) % len(r.buf)
	if r.head == 0 {
		r.full = true
	}
}

func (r *Ring) Sum() int {
	total := 0
	for _, v := range r.buf {
		total += v
	}
	return total
}

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

00:00:00
Наш сайт собирает куки. Чтобы тебе было удобнее им пользоваться. Нажимая на кнопку, ты даёшь разрешение собирать куки