Предположим, что 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) })
}
, который, кажется, возвращает только подмножество правильных результатов. Что я делаю не так? ТИА.
Чтобы немного прояснить ситуацию, мне не нужно «сканировать (x, y)» там. Идея состоит в том, чтобы отсканировать [sic] окрестность Мура данных координат. –