Для учёта последних восьми поступлений на «Полку» нужен кольцевой буфер фиксированного размера. Реализуйте методы 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
}