- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
void __fastcall TForm1::Button1Click(TObject *Sender)
{
bool Valid = true;
bool f1;
bool f2;
unsigned step = 0;
for( bool x1=false; x1<2; x1++ )
for( bool x2=false; x2<2; x2++ )
for( bool x3=false; x3<2; x3++ )
for( bool x4=false; x4<2; x4++ )
for( bool x5=false; x5<2; x5++ )
for( bool x6=false; x6<2; x6++ )
for( bool x7=false; x7<2; x7++ )
for( bool x8=false; x8<2; x8++ )
for( bool x9=false; x9<2; x9++ )
for( bool x10=false; x10<2; x10++ )
for( bool x11=false; x11<2; x11++ )
for( bool x12=false; x12<2; x12++ )
for( bool x13=false; x13<2; x13++ )
for( bool x14=false; x14<2; x14++ )
for( bool x15=false; x15<2; x15++ )
{
step++;
f1 = ( x1 && x2 || x3 && x4 || x5 && x6 && x7 || x8 && x9 && x10 ) && ( !x11 || x12 && x13 || x14 && x15 );
f2 = (!(!x1 || !x2) || !(!x3 || !x4) || !(!x5 || !x6 || !x7) || !(!x8 || !x9 || !x10)) && ( !(!x14 || !x15) || !x11 || !(!x12 || !x13) );
if ( f1 != f2 ) Valid = false; break;
}
if( Valid ) Application->MessageBox( "Функции идентичны", "Функции идентичны", MB_OK );
else Application->MessageBox( "NOT Valid", IntToStr(step).c_str(), MB_OK );
}
Проверка идентичности логических функций путем перебора аргументов.
Говногость 19.05.2010 13:54 # −1
absolut 19.05.2010 13:56 # 0
guest 19.05.2010 20:07 # +11
Когда такую сигнатуру видишь - содержимое обычно не удивляет
guest 19.05.2010 14:17 # 0
nil 19.05.2010 16:08 # +3
PS. Буквально давеча думал, кому может понадобиться библиотека boolstuff:)
TarasB 19.05.2010 20:29 # −5
Soul_re@ver 19.05.2010 20:47 # +3
nil 21.05.2010 11:19 # +1
TarasB 19.05.2010 21:28 # 0
absolut 19.05.2010 21:41 # 0
TarasB 19.05.2010 22:09 # −2
3.14159265 20.05.2010 11:36 # −1
вместо 15 переменных можно было завести ОДНУ 16-битную и использовать ОДИН цикл.
guest 20.05.2010 11:53 # −2
guest 20.05.2010 12:42 # 0
Или вытащить вычисление выражений в отдельные функции, и передать им значения отдельных битов как аргументы. Тогда запись подлиннее будет, но зато без лишних сущностей и промежуточных шагов.
3.14159265 20.05.2010 13:31 # 0
(к примеру создать массив или написать функцию для получения бита по индексу)
а вот если у вас будет 128-разр число? 128 вложеных циклов?
вы китаец?
guest 20.05.2010 17:47 # +2
3.14159265 20.05.2010 18:23 # 0
а если цикл на 15 итераций, то вы 15 раз пишете его содержимое?
если есть возможность решить задачу в 5 строк, а она решается в 20 - это
>>разумноe соотношениt результат/затраченные усилия.
TarasB 20.05.2010 18:53 # 0
guest 20.05.2010 19:56 # 0
TarasB 20.05.2010 20:55 # 0
guest 20.05.2010 21:27 # 0
TarasB 20.05.2010 22:26 # +1
3.14159265 21.05.2010 12:59 # 0
ану-ка покажите решение в 0 строк :^)
TarasB 21.05.2010 15:40 # +7
3.14159265 21.05.2010 18:06 # +2
кэп ваш код нерабочий
guest 21.05.2010 20:05 # +1
Фейлите, товарищъ.
Вы ursus?
nil 23.05.2010 11:12 # +1
У меня нормально, все правильно сделал!
TarasB 23.05.2010 15:34 # 0
Если ты не можешь решить эту задачу в уме, то иди гуляй.
guest 23.05.2010 17:03 # 0
TarasB 23.05.2010 22:09 # +3
guest 20.05.2010 19:53 # 0
3.14159265 21.05.2010 12:33 # 0
мне бы просто было влом копипастить
и менять индексы у х-ов
Кстати копи-паста - это корень многих ошибок ибо провтыкать чего то легко а потом полчаса искать это.
>>быстрое (в смысле затраченных усилий) решение
ну я уже не знаю как объяснить, что приведенное выше решение таковым никак не является ибо что-то вроде
for( int x=0 x1<2^15; x1++ ){
f1 = ( getB(x,1) && getB(x,2) итд..
f1 = ( getB(x,1) || getB(x,2) итд..
if ( f1 != f2 ) Valid = false; break;
}
//не спорю - говнофункция, но это чисто для примеpa
bool getb(int i,int b){
return ((i & 2^(b-1))>0);
}
гораздо быстрее написать
TarasB 20.05.2010 17:57 # 0
TarasB 20.05.2010 17:56 # −3
b1 = step & 0001h
b2 = step & 0002h
b3 = step & 0004h
итд.
Один хуй.
3.14159265 20.05.2010 18:27 # 0
>>можно преобразовать счетчик в массив из bool - короткая запись обращения к элементу и короткое преобразование.
>>к примеру создать массив или написать функцию для получения бита по индексу
Кэп поясняет что будет выглядеть так x[1], x[2] итд
или getBit(1) getBit(2) итд
>>b1 = step & 0001h
>>b2 = step & 0002h
это говноподход
guest 21.05.2010 20:05 # +3
Odin 03.11.2018 17:17 # 0
За что?
Мистер Хэнки 20.05.2010 07:10 # 0
guest 21.05.2010 15:02 # +2
"for ( bool var = false", надо будет запомнить, просто гениально!
nil 23.05.2010 11:13 # 0
absolut 23.05.2010 22:39 # 0
Но в целом, вероятно, надо было:
for( bool x1=false; x1<=true; x1++ )
Хотя конечно инкремент булевых переменных и не рекомендуется стандартом. А вот декремент для bool вообще запрещен.
guest 23.05.2010 23:41 # 0
absolut 24.05.2010 00:06 # 0
guest 24.05.2010 08:41 # 0
Говорю, почему это запретили в стандарте? Какие были-бы последствия, если бы не запретили?
Что если я попытаюсь декрементировать булевскую переменную? Получу ошибку компиляции? Что-то типа семантик еррор?
absolut 24.05.2010 09:04 # 0
guest 24.05.2010 09:53 # 0
Надрочили "стандартов" на полторы тыщи листов и сами не знаете что для чего и зачем оно...
nil 24.05.2010 10:12 # 0
nil 24.05.2010 08:38 # +1
Чтобы как у Виннипуха: «если он есть, то его сразу нет». Два значения и баста. А то мое true, которое 2, труевее твоего, которое 1. В два раза труевее.
PS. Правда всегда одна, это сказал фараон. Так-то!
guest 24.05.2010 09:11 # +1
И не нужно жутких арифметических действий.
absolut 24.05.2010 09:21 # 0
guest 25.05.2010 08:53 # 0
Зато мы теперь знаем, как получить чередующуюся последовательность false-true-false-...
guest 21.05.2010 20:07 # +3
Человек, придумавщий это, достоин уважения.
SemaReal 03.03.2018 00:12 # 0
и де моргана пусть докажет
вдруг все что я знал -- не правда?!
И если можно то чуть по-больше чем 15, а то надо точно проверить
3.14159265 03.03.2018 00:23 # +1
CHayT 03.03.2018 01:08 # 0
SemaReal 03.03.2018 01:10 # +2
зы: я только сейчас задумался: а coq же это питух
inho 03.03.2018 00:20 # 0
SemaReal 03.03.2018 00:22 # 0
Ты с дельфи/паскалем не перепутал?
и это не вижалси, это билдер борладновый судя по вот этим вот T
inho 03.03.2018 09:58 # 0
g0_1494034731324 03.03.2018 10:05 # 0