@SoloFree

Как перестать допускать offbyone error?

Как перестать допускать offbyone error? При реализации алгоритмов иногда ошибаюсь. Может быть есть какие то правила? Секретные китайские техники и приемы?
  • Вопрос задан
  • 162 просмотра
Пригласить эксперта
Ответы на вопрос 2
Эти ошибки, по сути, логические.
Значит, чтобы их не допускать, нужно следить за логикой и смыслом. Главные инструменты, которые могут в этом помочь - декомпозиция на небольшие фрагменты и осмысленное именование переменных и функций. Немудрено ошибиться, если у вас, например, три одинаковых вложенных цикла с переменными i, j и k.
Ответ написан
Комментировать
@AM5800
Мне помогло олимпиадное программирование.
Очень быстро становится очевидно, что выгоднее сразу написать без ошибки, чем потом мучительно ее искать.
В общем, приходилось заставлять себя быть более внимательным с этими индексами. И со временем стало проще.

Но вообще, самый лучший способ избегать offbyone ошибок - это не использовать индексы вообще.
Свертки там всякие. For each вместо for и прочее. И вообще, больше стандартных алгоритмов/функций.

Вот пример для C++: допустим, вам нужно взять последний элемент массива длины n. Тогда индекс этого элемента будет равен n-1. Вот вам и возможность ошибиться. Но если использовать вместо массива vector - то у него уже можно просто взять back().
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы