Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2006.10.08;
Скачать: [xml.tar.bz2];

Вниз

Опять задачка :-)   Найти похожие ветки 

 
Колдун ©   (2006-09-13 22:37) [0]

Странно как-то: неужели так просто:

Упростить:

f(x;y;z) = not ( not(x)  or y or z and x and not(y) )

Получится x and not(y) and  (not(z) or not(x) or y) ?


 
default ©   (2006-09-13 22:39) [1]

в чём вопрос?
протестируй, благо вариантов входных данных всего 8


 
Колдун ©   (2006-09-13 22:43) [2]

вопрос в том, верно ли я сделал


 
default ©   (2006-09-13 22:44) [3]

протестируй, я навскидку не могу сказать да и всматриваться лень если честно


 
Колдун ©   (2006-09-13 22:45) [4]

Лень-матушка.


 
guav ©   (2006-09-13 22:49) [5]

> x and not(y) and  (not(z) or not(x)or y )

подчёркнутое явно лишнее, т.к. противоречит жирному . всматриваться подробнее лень.


> Лень-матушка.

Тогда не упрощай.


 
Колдун ©   (2006-09-13 22:50) [6]

1. Может, поможешь с решением?
2. Это я про дефолта=)


 
guav ©   (2006-09-13 22:58) [7]

x and not y and  not z вроде


 
Alx2 ©   (2006-09-13 23:00) [8]

>guav ©   (13.09.06 22:58) [7]

Ага. Это минимум.


 
default ©   (2006-09-13 23:06) [9]

у меня вышло
not (x and not(y))
это если операции слева направа выполняются


 
Alx2 ©   (2006-09-13 23:12) [10]

>default ©   (13.09.06 23:06) [9]

Это записать короче можно: not (x) or y
Но оно не эквивалентно [0]


 
default ©   (2006-09-13 23:14) [11]

Alx2 ©   (13.09.06 23:12) [10]
операции слева направо идут или учитывается приоритет and над or?


 
Alx2 ©   (2006-09-13 23:17) [12]

>default ©

C приоритетом, кажется.


 
guav ©   (2006-09-13 23:22) [13]

кстати, даже [7] не эквивлентно 0. т.к. возможен сайд-эффект при оценивании x и y :-)


 
Mike Petrichenko   (2006-09-13 23:22) [14]


> guav ©   (13.09.06 22:58) [7]
> x and not y and  not z вроде

x and not y and z


 
Alx2 ©   (2006-09-13 23:26) [15]

>Mike Petrichenko   (13.09.06 23:22) [14]
x and not y and not z


 
default ©   (2006-09-13 23:29) [16]

Alx2 ©   (13.09.06 23:17) [12]
я не учитывал приоритет


 
Alx2 ©   (2006-09-13 23:31) [17]

>default ©   (13.09.06 23:29) [16]
Тогда
not(x) or y or not(z)
:)


 
Pavia ©   (2006-09-13 23:33) [18]

Неа
x and y and not(z)


 
palva ©   (2006-09-13 23:36) [19]


> guav ©   (13.09.06 22:58) [7]
> x and not y and  not z вроде

Голосую "за".


 
Pavia ©   (2006-09-13 23:37) [20]

x and not (y or z )


 
Alx2 ©   (2006-09-13 23:40) [21]

Выражение
not ( not(x)  or y or z and x and not(y) )
принимает значение true
при x = true, y = false, z=false.
Во всех остальных случаях принимает значение false.
Отсюда результат (ДНФ): x and not (y) and not (z)

C безприоритетным:
not ((((not(x)  or y) or z) and x ) and not(y) )
принимает false при
x = true y = false z=true
отсюда результат (КНФ): not (x ) or (y) or not(z)


 
default ©   (2006-09-13 23:41) [22]

Alx2 ©   (13.09.06 23:31) [17]
быть может, перепроверять не буду - лень
думал типа если x ложь в скобке всегда будет нуль значит в итоге 1
если х истина...
z остался неудел


 
guav ©   (2006-09-13 23:41) [23]

procedure Test(F: TF; S: string);
var I: Integer; T: DWORD; Valid: Boolean;
begin
 Valid := (N0_a(X, Y, Z) = F(X, Y, Z));
 T := GetTickCount();
 for I := 0 to 20000000 do
   F(X, Y, Z);
 T := GetTickCount() - T;
 Form1.Memo1.Lines.Add(Format(
   "%s :  Valid:%s Ticks: %d", [S, BoolToStr(Valid, True), T]));
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 Test(N0_a, "N0_a");
 Test(N0_b, "N0_b");
 Test(N7, "N7");
 Test(N9, "N9");
 Test(N14, "N14");
 Test(N15, "N15");
 Test(N17, "N17");
 Test(N18, "N18");
end;

Memo1
N0_a :  Valid:True Ticks: 281
N0_b :  Valid:True Ticks: 188
N7 :  Valid:True Ticks: 250
N9 :  Valid:False Ticks: 172
N14 :  Valid:False Ticks: 203
N15 :  Valid:True Ticks: 172
N17 :  Valid:False Ticks: 156
N18 :  Valid:False Ticks: 219


 
Alx2 ©   (2006-09-13 23:45) [24]

>guav ©   (13.09.06 23:41) [23]

Еще [20] - верный и самый шустрый, кажется


 
default ©   (2006-09-13 23:45) [25]

Alx2 ©   (13.09.06 23:40) [21]
да, невнимательность
лабуда всё это:) рутина)


 
DiamondShark ©   (2006-09-13 23:45) [26]

ну, уже голосовать пошли ;)

а ведь фунция для упрощения в уме.

легко видеть, что для x=false функция обращается  в false, а для x=true функция от x не зависит.

осталось протабулировать 4 значения.

легко видеть, что для y=true функция обращается  в false, а для y=false функция от y не зависит.

осталось два варианта: x=true, y=false, z in [true, false], из которых функция обращается в true только при z=false, откуда автоматически получается

x and not(y) and not(z)

задачка на 30 секунд.


 
default ©   (2006-09-13 23:47) [27]

DiamondShark ©   (13.09.06 23:45) [26]
это есть рутина:) не интересно


 
guav ©   (2006-09-13 23:49) [28]


> [24] Alx2 ©   (13.09.06 23:45)


var
 X: Cardinal = $0000FFFF;
 Y: Cardinal = $00FF00FF;
 Z: Cardinal = $0F0F0F0F;


function N20(X, Y, Z: Cardinal): Cardinal;
begin
 Result :=x and not (y or z )
end;


N0_a :  Valid:True Ticks: 203
N0_b :  Valid:True Ticks: 203
N7 :  Valid:True Ticks: 187
N9 :  Valid:False Ticks: 172
N14 :  Valid:False Ticks: 172
N15 :  Valid:True Ticks: 172
N17 :  Valid:False Ticks: 172
N18 :  Valid:False Ticks: 156
N20 :  Valid:True Ticks: 188


 
palva ©   (2006-09-13 23:54) [29]

> задачка на 30 секунд.
Тупо раскрываем скобки и приводим подобные (подобных не оказалось). Четыре строчки на клочке туалетной бумаги.


 
Колдун ©   (2006-09-14 10:32) [30]

1. Решение идёт без ДНФ, только с помощью законов алгебры логики.
2. В таком случае можете его расписать?


 
palva ©   (2006-09-14 11:57) [31]


> Колдун ©   (14.09.06 10:32) [30]
> 2. В таком случае можете его расписать?

f(x;y;z) = not ( not(x)  or y or z and x and not(y) ) = // убираем первый not
x and not y and not(z and x and not y) = // убираем not перед скобками
x and not y and (not z or not x or y) = // раскрываем скобки. Члены ДНФ я выделяю скобками
(x and not y and not z) or (x and not y and not x) or (x and not y and y) = // вторая и третья скобки равны false. Остается первая
x and not y and not z



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2006.10.08;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.52 MB
Время: 0.042 c
15-1158229400
VitV
2006-09-14 14:23
2006.10.08
Книги Кэнту


1-1156424740
Orxan
2006-08-24 17:05
2006.10.08
Unicod ы не идут в Word


2-1158057913
megabyte-ceercop
2006-09-12 14:45
2006.10.08
Параметры командной строки.


3-1154686580
APXi
2006-08-04 14:16
2006.10.08
Как реализовать табличную часть?


11-1134493681
azsd
2005-12-13 20:08
2006.10.08
koledb with oracle - count() function





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский