Knight Dialer
Possible positions:
1 2 3
4 6
7 8 9
0
Adjacency list:
012346789→4,6→6,8→7,9→4,8→0,3,9→0,1,7→2,6→1,3→2,4
Let’s change to letters to make things easier.
a b c
d e
f g h
z
zabcdefgh→d+e→e+g→f+h→d+g→z+c+h→z+a+f→b+e→a+c→b+d
As recursive equations:
ziaibicidieifigihi=di−1+ei−1=ei−1+gi−1=fi−1+hi−1=di−1+gi−1=zi−1+ci−1+hi−1=zi−1+ai−1+fi−1=bi−1+ei−1=ai−1+ci−1=bi−1+di−1
z1=a1=b1=c1=d1=e1=f1=g1=h1=1
For reference, the Fibonnaci numbers are:
F0=0,F1=1,Fi=Fi−1+Fi−2
The solution should be:
Ki=zi+ai+bi+ci+di+ei+fi+gi+hi
What happens if we just substitute the previous term…
Ki=(di−1+ei−1)+(ei−1+gi−1)+(fi−1+hi−1)+(di−1+gi−1)+(zi−1+ci−1+hi−1)+(zi−1+ai−1+fi−1)+(bi−1+ei−1)+(ai−1+ci−1)+(bi−1+di−1)=2ai−1+2bi−1+2ci−1+3di−1+3ei−1+2fi−1+2gi−1+2hi−1+2zi−1=2Ki−1+di−1+ei−1
What happens if we compress the coding?
IMPORTANT: The previous symbols are being redefined here.
1 2 [3]
4 [6]
7 8 [9]
0
z:0a:1b:2c:4d:7e:8→4,4→4,8→7,7→0,1,7→2,4→1,1
Ki=zi+2ai+bi+2ci+2di+ei
z1=a1=b1=c1=d1=e1=1
ziaibicidiei=ci−1+ci−1=2ci−1=ci−1+ei−1=di−1+di−1=2di−1=zi−1+ai−1+di−1=bi−1+ci−1=ai−1+ai−1=2ai−1
If we try substituting our recursions into the solution formula again:
Ki2ci−1ci=(2ci−1)+2(ci−1+ei−1)+(2di−1)+2(zi−1+ai−1+di−1)+2(bi−1+ci−1)+(2ai−1)=2ci−1+2ci−1+2ei−1+2di−1+2zi−1+2ai−1+2di−1+2bi−1+2ci−1+2ai−1=2zi−1+4ai−1+2bi−1+6ci−1+4di−1+2ei−1=(2zi−1+4ai−1+2bi−1+4ci−1+4di−1+2ei−1)+2ci−1=2Ki−1+2ci−1=Ki−2Ki−1=21Ki+1−Ki(eq:2023-04-15–1b)
Can we turn ci−1 into terms of Ki?
ci=zi−1+ai−1+di−1=(zi−1+2ai−1+bi−1+2ci−1+2di−1+ei−1)−ai−1−bi−1−2ci−1−di−1−ei−1=Ki−1−ai−1−bi−1−2ci−1−di−1−ei−1=2ci−2+ci−2+ei−2+bi−2+ci−2=4ci−2+ei−2+bi−2=4(zi−3+ai−3+di−3)+2ai−3+2di−3=4zi−3+4ai−3+4di−3+2ai−3+2di−3=4zi−3+6ai−3+6di−3=4(2ci−4)+6(ci−4+ei−4)+6(bi−4+ci−4)=8ci−4+6ci−4+6ei−4+6bi−4+6ci−4=20ci−4+6ei−4+6bi−4=2(10ci−4+3ei−4+3bi−4)(eq:2023-04-15–2b)(eq:2023-04-15–2d)
Here, we notice we can rearrange (eq:2023-04-15—2d) and use (eq:2023-04-15—2b):
ci=2(12ci−4+3ei−4+3bi−4−2ci−4)=2(3(4ci−4+ei−4+bi−4)−2ci−4)=2(3ci−2−2ci−4)
Using (eq:2023-04-15—1b):
21Ki+1−Ki21Ki−Ki−121KiKi=2(3(21Ki−1−Ki−2)−2(21Ki−3−Ki−4))=3(Ki−1−2Ki−2)−2(Ki−3−2Ki−4)=3(Ki−2−2Ki−3)−2(Ki−4−2Ki−5)=Ki−1+3(Ki−2−2Ki−3)−2(Ki−4−2Ki−5)=2Ki−1+6(Ki−2−2Ki−3)−4(Ki−4−2Ki−5)
If we need the value as Kimodm:
TODO: do the math!