datascript
datascript copied to clipboard
Rules error
After asking a couple of questions on the datascript slack, @tonsky asked me to make a gist with my error in it. The function (connected x y)
should return a set of all diagonal neighbors of neighbors on a cartesian grid but in cases where the (= x y)
it ignores neighbors that are also (= x y)
.
The gist is at https://gist.github.com/Tavistock/6305de1b890e3a60489544ae139b102f. for background this is for implementing a game of checkers or draughts.
This image shows the degenerate case where the orange highlighted checker is selected and the green squares are it's connected
. Notice that (= x y)
for the checker.
This image shows the correct highlighting when selecting a different piece and using connected
. Notice that (!= x y)
for the checker.
My question is whether there is an error in my code and reasoning, or if this is a problem with Datascript.
I'm not sure, but shouldn't the near
definition use a predicate?
[(near ?i1 ?i2)
[(= (inc ?i1) ?i2)]]
[(near ?i1 ?i2)
[(= (dec ?i1) ?i2)]]
@Harleqin it’s actually fine. Predicate would work if both i1 and i2 are bound, what @Tavistock has is assignment, given the value of i1, calculate and assign value of i2