|
Hi
Try out this algorithm: (done in C)
bool result = (((f == fl) && (d == dl) && (r == rl)) && ((f == true) || (d == true) || (r == true)))
Could be simplified, but that is what it boils down to.
Regards,
R. Erasmus
modified on Wednesday, November 17, 2010 1:56 AM
|
|
|
|
|
Right. That was already provided in the first reply yesterday.
|
|
|
|
|
If it were me I'd ask a lot more questions of whoever gave you this. The first two inputs to Logic appear to have no effect on the result and (if that's true) should be removed. This leaves a four bit table mapping:
false, false, false, false, false
false, false, true, true, true
false, false, true, false, false
true, false, true, true, false
true, true, true, true, true
Which can also be looked at as a bit table
d dl r rl Exp Dec
0 0 0 0 0 00 *
0 0 0 1 ? 01
0 0 1 0 0 02 *
0 0 1 1 1 03 *
0 1 0 0 ? 04
0 1 0 1 ? 05
0 1 1 0 ? 06
0 1 1 1 ? 07
1 0 0 0 ? 08
1 0 0 1 ? 09
1 0 1 0 ? 10
1 0 1 1 0 11 *
1 1 0 0 ? 12
1 1 0 1 ? 13
1 1 1 0 ? 14
1 1 1 1 1 15 *
There doesn't appear to be an obvious pattern, but there are lots of unknowns. I'd be tempted to change Logic to remove the first two parameters and return a bool? (nullable<bool>). I'd then convert d, dl, r and rl into a single byte value and use a switch statement to return the known results, returning null for undefined results. If a pattern later emerges you can do something 'pretty' then.
|
|
|
|
|
why do conversions, why introduce decision statements, if all it takes is some simple boolean expression?
would you also replace multiplications by loops containing an addition?
|
|
|
|
|
Simple because with all the unknowns, 30 secs after the method is finished some "new" result will be expected. Boolean expression are fine when what you are trying to communicate is clear. In this case things don't appear to be 'clear'. Converting isn't necessary, it's just helpful.
Cheers
|
|
|
|
|
It seemed to be clear to everyone else
I know the language. I've read a book. - _Madmatt
|
|
|
|
|
Ok, wow ... ummmm, your welcome?
|
|
|
|
|
have you tried a Karnaugh map?
Frank
|
|
|
|
|
You mean like Member 4190501 suggested over 10 hours ago. If you also read the responses you would see the problem was solved long ago.
I know the language. I've read a book. - _Madmatt
|
|
|
|
|
result = ((f&&f1) || (d&&d1) || (r&&r1)) && (f||f1) && (d||d1) && (r||r1)
|
|
|
|
|
incorrect, none of the test cases have (f||f1) true.
|
|
|
|
|
result = ((f&&f1) || (d&&d1) || (r&r1)) && (f==f1) && (d==d1) && (r==r1);
|
|
|
|
|
Is it simply the number of TRUE arguments passed?
No TRUE args ==> FALSE
even no of TRUE args ==> TRUE
Otherwise ==> FALSE
Tadeusz Westawic
Sum quid sum.
|
|
|
|
|
What are you confused about? Perhaps you are confused that the problem had been solved 18 days ago by people how were not confused.
I know the language. I've read a book. - _Madmatt
|
|
|
|
|
There are unanswered posts of my own that are months old and I would still appreciate any other point of view as long as it is mathematically valid and programmable. Are you saying my post is illegal?
Take off that heavy badge once in a while.
Tadeusz Westawic
Sum quid sum.
|
|
|
|
|
Tadeusz Westawic wrote: There are unanswered posts of my own
There is the difference. This post was answered by several people quite a long time ago.
Tadeusz Westawic wrote: Are you saying my post is illegal?
losen up and perhaps vist more often
I know the language. I've read a book. - _Madmatt
|
|
|
|
|
( ( d && dl ) && ( r && rl ) ) || ( (d && dl) && ( !r && !rl) ) || ( (!d && !dl) && ( r && rl ) )
I wasn't, now I am, then I won't be anymore.
|
|
|
|
|
Only 18 days after everyone else. Glad it wasn't urgentz
I know the language. I've read a book. - _Madmatt
|
|
|
|
|
I didn't even notice that. Man, do I suck...
I wasn't, now I am, then I won't be anymore.
|
|
|
|
|
private void Logic( bool f1, bol f2, bool f3, bool f4, bool f5, bool f6, bool expected)
{
bool result = ((!f1) && (!f2) && f5 && f6 && ( ((!f3) && (!f4)) || ( f3 && f4 )));
System.Diagnostics.Debug.Assert( result == expected, "Does not match expected results" );
}
|
|
|
|
|
yeah I know it was answered a while ago but here is a slightly more elegant algorithm
bool result = (f == fl) && (d == dl) && (r == rl) ? f | d | r : false;
or in a less descriptive form
bool result = f == fl && d == dl && r == rl && f | d | r;
modified on Tuesday, November 9, 2010 6:28 PM
|
|
|
|
|
Such a timely response
I know the language. I've read a book. - _Madmatt
|
|
|
|
|
Well I teach at college so I didn't want to think I was doing your homework for you.
|
|
|
|
|
Robert Croll wrote: Well I teach at college
What course do you teach, procrastination?
I know the language. I've read a book. - _Madmatt
|
|
|
|
|
Can I get back to you on that?
|
|
|
|