@EvilWays

Как научиться быстро считать логические выражения?

Как программист, часто сталкиваюсь с логическими выражениями. Как только нужно написать что-то типа A || B & (C || D) , начинаю долго вычислять что же получится на выходе. Как научиться решать такие задачи максимально эффективно?
  • Вопрос задан
  • 252 просмотра
Решения вопроса 2
tsarevfs
@tsarevfs
C++ developer
Разбивайте сложное на простые части. A || B & (C || D) придумаем более практический пример (эквивалентный вашему).
if (!file.exist || (file.type != DIRECTORY)  & (file.creationDate < lastGoodDate || file.size > maxSize))
{
   printErrorMessage();
}

Такое сложно написать и прочитать. Более длинный, зато более понятный вариант:
bool isBadFile(file)
{
   if (!file.exist)
      return true; 

   if (file.type == DIRECTORY)
      return fasle; //skip directories

   bool isTooOld = file.creationDate < lastGoodDate;
   bool isTooBig = file.size > maxSize;

   return isTooBig || isTooOld
}

if (isBadFile(file))
{
   printErrorMessage();
}
Ответ написан
@D3lphi
Собственно, практика, практика и еще раз практика. Открываем ЕГЭ по информатике: логические уравнения или, еще лучше, системы логических уравнений. Учимся их решать. После этого, пример, который вы привели, состоящий только из логического сложения и умножения, покажется вам детским лепетом.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
stweet
@stweet
Java, Php, Js
Избегайте подобных решений, переписывайте, пишите ясный, прозрачный код, отстреливайте тех, кто пишет как индус.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы