Open Tavistock opened 6 years ago
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
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.