Как обрабатывать условия, записанные в 2D массиве - PullRequest
2 голосов
/ 30 сентября 2019

Рассмотрим этот двумерный массив:

  A B C D E
A 1 0 0 0 0
B 0 1 1 0 0
C 0 1 1 0 0
D 0 0 0 1 1
E 0 0 1 1 1

Это означает, что A может быть отображено с помощью A, но sureshot не может быть отображено с помощью B, C, D или E.

Точно так же B может быть сопоставлен с B и C, но не с A, D и E.

Здесь может означать, что он может быть сопоставлен или не быть.

Теперь я должен написать код на С ++, чтобы убедиться, что это отображение выполнено, и утверждать, что оно не выполняется.

Я написал код if if об этом, подобный этому (скелет). Я проверяю условия, при которых B не должен точно совпадать с выстрелом.

if (checking_for_B) {
  if (B is mapped with A || B is mapped with D || B is mapped with E) {
    assert();
  }
}

Точно так же я должен был бы написать условие if для A, B, C, D и E. Я не доволен этим подходом. Если бы вы были мной, что бы вы, люди, писали.

Заранее спасибо.

1 Ответ

4 голосов
/ 30 сентября 2019

Я бы попытался решить вашу проблему, превратив буквы в индексы строк и столбцов, и проверил бы, разрешена ли эта комбинация.

Тогда вам не нужно проверять «для___», а затем «проверять_ для_Б» и т. Д. Просто что-то вроде

if (my_map[row_letter_index][column_letter_index])
{
    // All okay, allow
}
else
{
    // Not allowed, report or abort or throw exception or anything else
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...