Есть ли способ избавиться от дублирования кода внутри цикла?
Как насчет:
for(int i = 0; i < 2; i++)
{
hare = hare.next();
if (hare == back) return;
}
tortoise = tortoise.next();
Это не значительное улучшениеЛюбые средства.
Правильно ли я считаю, что мне не нужна проверка после того, как черепаха сделала шаг вперед?
Да, как вы правильно рассуждаете,черепаха всегда стоит за зайцем как раз за до движения;таким образом, черепаха всегда покрывает землю, которая была покрыта раньше.
Если бы структура данных была по какой-либо причине видоизменена во время гонки, это, конечно, больше не было бы правдой (но если это так, у вас было бы многобольшие проблемы).
Есть ли другие способы упростить / украсить этот код?
Не то, чтобы я мог придумать.