Paths through the Hypercube  

John R. Hendricks's "pathfinders" where defined to run through hyperragonals, below defines a notation for these and other definable paths through a ndimensional hypercube, an nPoint can be used to fix the starting point of a given path of any type, so this article is only concidering the pathform. 

1agonal  m {<0_{r}1_{s}>} (r = 0.. m1; r != s)  
main nagonal  m {<1_{r}>} (r = 0.. m1)  
sub nagnal  m {<1_{r}1_{s}>} (r = 0.. m1; s = 0.. m1; r != s)  
bent hypernagonal 
m/2 {<v_{i}; i = 0..n1>,<w_{i}; i = 0..n1>} ; with: <v> * <w> = <0> both nVectors elements 1 and 1 only; henche these vectors are orthogonal 

knight jump paths  m {<v_{r}>} (r = 0.. m1; v_{r} != 0)  
bent knight jump paths 
m/2 {<v_{i}; i = 0..n1>,<w_{i}; i = 0..n1>} both nVectors no 0 elements (vectors need not be orthogonal) 

other paths 
{<v_{r}>_{i}} (r = 0.. m1;) (path supposed to be noncircular in less than m steps) 

The number of vectors between the curly brackets is not yet defined (probably m), as suggested above repeated vectors can be indicated by preapending the number of repetitions, this number is multiplied by the "lengthindicator" preappended before the curly brackets. (the mentioned noncircular condition just avoids double counting the same cell element in the same path). 
PathMagicness of Hypercubes  

Stating magicness of paths means stating starting position npoints and a description of paths with nvectors of course the entire set of npoints also defines the paths, using one or the other is a matter of what is convenient Below some samples of quite familiar situations introducing the (pan)Path(...) qualification keyword properly. 

semi magic square {monagonal[!]} 
{ Path([k,0]<0,1>;[0,k]<1,0> ; k=0..m1) } { panPath(<0,1>;<1,0>) } 

magic square {magic} 
{ Path([k,0]<0,1>;[0,k]<1,0>;[0,0]<1,1>;[0,m1]<1,1> ; k=0..m1) }  
panmagic square {panmagic} 
{ Path([k,0]<0,1>;[0,k]<1,0>;[k,0]<1,1>;[k,m1]<1,1> ; k=0..m1) } { panPath(<0,1>;<1,0>;<1,1>;<1,1>) } 

Franklin square {Franklin} 
{ Path([k,0]<0,1>;[0,k]<1,0>;[k,0]<1,1>;[k,m1]<1,1> ; k=0..m1 ; [k,l]{ m/2{<1,1>}, <1,0>, m/2{<1,1>}, <1,0> } ; k=0..m1,l=0,m/2 ; [l,k]{ m/2{<1,1>}, <0,1>, m/2{<1,1>}, <0,1> } ; k=0..m1,l=0,m/2 ) } (note: needs verification) 