[rules-users] Re: accumulate over multiple types
Geoffrey De Smet
ge0ffrey.spam at gmail.com
Sun Jul 29 03:58:07 EDT 2007
Edson Tirelli wrote:
>
> Geoffrey,
>
> I don't think you need multiple patterns for this specific use case:
>
> rule "multipleQueensHorizontal"
> when
> Queen($id : id, $y : y)
> Number( $multipleQueensHorizontal : intValue )
> from accumulate( $q : Queen(id > $id, y == $y), count($q) );
> then
> // do something
> end
This would result in the number of (higher id) queens which are at the
same horizontal position for a certain queen.
But I need the sum of that for all queens.
For example for these rows:
AB_D_F
__C___
____E_
This would give me:
A: 3
B: 2
C: 0
D: 1
E: 0
F: 0
That's all correct, but I need the sum of that:
multipleQueensHorizontal: 6
After that I 'd like to use that for a sum of multipleQueensHorizontal,
multipleQueensDiagonalUp and multipleQueensDiagonalDown (vertical is
always 0 due to my moves and start position) which gives me the score
(the only thing that I really need).
I could of course do a logicalAssert of a number per queen and then
accumulate those, kinda what I did with the
WorkaroundMultiplePatternAccumulate object.
But it looks like accumulate is improving my performance already, great
work :) Or could it be because I am now using rules with assertLogical()
instead of query's?
>
> Am I misunderstanding your use case?
>
> []s
> Edson
With kind regards,
Geoffrey De Smet
>
>
> 2007/7/28, Geoffrey De Smet <ge0ffrey.spam at gmail.com
> <mailto:ge0ffrey.spam at gmail.com>>:
>
> I 'd like to get the number of queens which have the same y.
>
> I used to do this with a query:
> query "multipleQueensHorizontal"
> Queen($id : id, $y : y);
> Queen(id > $id, y == $y);
> end
> And then ask the size() of it.
>
> But now I should be able to do this with the accumulate function:
> $multipleQueensHorizontal : Integer()
> from accumulate(
> $q1 : Queen($id : id, $y : y);
> Queen(id > $id, y == $y);
> , count($q1)
> );
>
> However, I get a parsing error on it:
> Caused by: org.drools.rule.InvalidRulePackage: [31,37]: unknown:31:37
> Unexpected token ';'[33,6]: unknown:33:6 mismatched token:
> [@123,814:814=',',<12>,33:6]; expecting type THEN
>
> Apparently the ; in of "$q1 : Queen($id : id, $y : y);" is inacceptable?
>
> --
> With kind regards,
> Geoffrey De Smet
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org <mailto:rules-users at lists.jboss.org>
> https://lists.jboss.org/mailman/listinfo/rules-users
> <https://lists.jboss.org/mailman/listinfo/rules-users>
>
>
>
>
> --
> Edson Tirelli
> Software Engineer - JBoss Rules Core Developer
> Office: +55 11 3529-6000
> Mobile: +55 11 9287-5646
> JBoss, a division of Red Hat @ www.jboss.com <http://www.jboss.com>
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
More information about the rules-users
mailing list