powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Помогите упростить булеву логику.
12 сообщений из 37, страница 2 из 2
Помогите упростить булеву логику.
    #38721042
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAЗабавно то, что в первом посте мы видим не что иное, как запись XOR в виде ДНФ (дизъюнктивная нормальная форма). А вы тут делаете удивленное лицо :)
Да ничего сложного в XOR нету, но когда читаешь вот такой код, невольно хочется убить его автора.

Код: c#
1.
2.
3.
4.
if ((((in.fraction.ll & (((USItype) 1 << F_D_BITOFF) - 1)) != 0) ^ ((((x ^ y) >> I_F_BITS) & 1) == 0)) || ((z ^ x) >> I_F_BITS) & 1)
{
   Console.Write("Ну да, верно, чувак");
}



Хотя, чего может быть непонятного в побайтовых сдвигах и ксорах? Во всём должна быть рациональность. И самое главное - без фанатизма.
...
Рейтинг: 0 / 0
Помогите упростить булеву логику.
    #38721049
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУСамый внятный и правильный код. Ничего сокращать не надо. Легко линейно читается, легко добавляются к указанному коду новые и более сложные конструкции. Оставить как есть и не морочить себе голову.
Правильно! К чёрту эти все операторы!
Код: c#
1.
2.
if (((ob1 == null == true) == (ob2 == null == false)) == (((ob1 == null == false) == (ob2 == null == true)) == false))
                throw new ApplicationException("ля ля");
...
Рейтинг: 0 / 0
Помогите упростить булеву логику.
    #38721072
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныhVosttСогласен на все 100. Чем понятней и проще, тем лучше!
Нюанс в том, что критерии понятности и простоты у каждого свои . Для меня вот лично в данной ситации самый простой и понятный вариант - с XOR'ом.

Запустили как-то в проект продумана, критерием понятности которого является TRUE=0.
...
Рейтинг: 0 / 0
Помогите упростить булеву логику.
    #38721099
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему монады никто не предлагает?
...
Рейтинг: 0 / 0
Помогите упростить булеву логику.
    #38721130
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУskyANAЗабавно то, что в первом посте мы видим не что иное, как запись XOR в виде ДНФ (дизъюнктивная нормальная форма). А вы тут делаете удивленное лицо :)
Да ничего сложного в XOR нету, но когда читаешь вот такой код, невольно хочется убить его автора.

Код: c#
1.
2.
3.
4.
if ((((in.fraction.ll & (((USItype) 1 << F_D_BITOFF) - 1)) != 0) ^ ((((x ^ y) >> I_F_BITS) & 1) == 0)) || ((z ^ x) >> I_F_BITS) & 1)
{
   Console.Write("Ну да, верно, чувак");
}



Хотя, чего может быть непонятного в побайтовых сдвигах и ксорах? Во всём должна быть рациональность. И самое главное - без фанатизма.Не в кассу. Из-за того, что оператор ^ предопределен для целых типов и bool, не надо смешивать логические и побитовые операции в одну кучу.
...
Рейтинг: 0 / 0
Помогите упростить булеву логику.
    #38721203
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAНе в кассу. Из-за того, что оператор ^ предопределен для целых типов и bool, не надо смешивать логические и побитовые операции в одну кучу.
В кассу. Ты понял, что я хотел сказать. Расширять и дополнять линейную логику гораздо проще и быстрее.
...
Рейтинг: 0 / 0
Помогите упростить булеву логику.
    #38721219
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAне надо смешивать логические и побитовые операции в одну кучу
Вот оно, начинается. Это можно смешивать, это нельзя. Неужели ты плохо учился в институте и тебя не научили побитовым операциям? Это ж так просто :)
...
Рейтинг: 0 / 0
Помогите упростить булеву логику.
    #38721224
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как насчет простого библиотечного метода?
Код: c#
1.
2.
if (OnlyOneIsNull(ob1, ob2))
                throw new ApplicationException("ля ля");


По-моему будет самый наглядный вариант, может расширяться как в месте использования, так и в самом методе.
...
Рейтинг: 0 / 0
Помогите упростить булеву логику.
    #38721242
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУskyANAне надо смешивать логические и побитовые операции в одну кучу
Вот оно, начинается. Это можно смешивать, это нельзя. Неужели ты плохо учился в институте и тебя не научили побитовым операциям? Это ж так просто :)Гы... Ну вообще в if можно любое выражение запихнуть и результат сравнить с чем-нить. При чём тут логическое исключающее ИЛИ?
Код: c#
1.
if ((value = x * y / 100 + 15 - a) > 0)
...
Рейтинг: 0 / 0
Помогите упростить булеву логику.
    #38721251
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProКак насчет простого библиотечного метода?
Код: c#
1.
2.
if (OnlyOneIsNull(ob1, ob2))
                throw new ApplicationException("ля ля");


По-моему будет самый наглядный вариант, может расширяться как в месте использования, так и в самом методе.Давайте не будем. ТС захотел упростить конкретную форму, для этой конкретной формы есть конкретная короткая запись. Всё, профит.

Вы ещё предложите System.Diagnostics.Contracts добавить и ContractInvariantMethod
...
Рейтинг: 0 / 0
Помогите упростить булеву логику.
    #38721283
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAМСУпропущено...

Вот оно, начинается. Это можно смешивать, это нельзя. Неужели ты плохо учился в институте и тебя не научили побитовым операциям? Это ж так просто :)Гы... Ну вообще в if можно любое выражение запихнуть и результат сравнить с чем-нить. При чём тут логическое исключающее ИЛИ?
Код: c#
1.
if ((value = x * y / 100 + 15 - a) > 0)



Хех. Побитовый сдвиг тоже можно в любое выражение запихнуть и результат сравнить с чем-нить. Причем тут грибы?

Код: c#
1.
2.
3.
4.
if ((((in.fraction.ll & (((USItype) 1 << F_D_BITOFF) - 1)) != 0) ^ ((((x ^ y) >> I_F_BITS) & 1) == 0)) || ((z ^ x) >> I_F_BITS) & 1)
{
   Console.Write("Ну да, верно, чувак");
}
...
Рейтинг: 0 / 0
Помогите упростить булеву логику.
    #38721410
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ, я к тому, что пихать какие-то вычисления в if, вместо нормального их оформления - это одно. А приведение ДНФ к булевой функции и обратно - это другое.
...
Рейтинг: 0 / 0
12 сообщений из 37, страница 2 из 2
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Помогите упростить булеву логику.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]