@EvilWays

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

Как программист, часто сталкиваюсь с логическими выражениями. Как только нужно написать что-то типа A || B & (C || D) , начинаю долго вычислять что же получится на выходе. Как научиться решать такие задачи максимально эффективно?
  • Вопрос задан
  • 249 просмотров
Решения вопроса 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
Избегайте подобных решений, переписывайте, пишите ясный, прозрачный код, отстреливайте тех, кто пишет как индус.
Ответ написан
Ваш ответ на вопрос

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

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