Предположим, fn scan(int, int) -> int
.
Когда используешь
fn count(x: int, y: int) -> int
{
scan(x - 1, y - 1) + scan(x - 1, y) + scan(x - 1, y + 1) + scan(x, y - 1)
+ scan(x, y + 1) + scan(x + 1, y - 1) + scan(x + 1, y) + scan(x + 1, y + 1)
}
Я получаю правильные результаты. Я пытаюсь получить те же результаты, fold
используя функцию scan
в заданных диапазонах значений; однако я не могу понять это правильно. Моя текущая попытка
fn count_fold(x: int, y: int) -> int
{
std::iter::range_inclusive(-1, 1).zip(std::iter::range_inclusive(-1, 1)).fold(0, |a, (i, j)| { a + scan(x + i, y + j) })
}
который, кажется, возвращает только подмножество правильных результатов. Что я делаю не так? ТИА.