ShiftFrom(1)==51 % 0 (-1) +--+ ShiftTo(51)==1 % 0 (1)
ShiftFrom(2)==48 % 0 (-1) +--+ ShiftTo(48)==2 % 0 (1)
ShiftFrom(3)==45 % 0 (-1) +--+ ShiftTo(45)==3 % 0 (1)
ShiftFrom(4)==42 % 0 (-1) +--+ ShiftTo(42)==4 % 0 (1)
ShiftFrom(5)==39 % 0 (-1) +--+ ShiftTo(39)==5 % 0 (1)
ShiftFrom(6)==NaN
ShiftFrom(7)==NaN
ShiftFrom(8)==NaN
ShiftFrom(9)==NaN
ShiftFrom(10)==36 % 0 (-1) +--+ ShiftTo(36)==10 % 0 (1)
ShiftFrom(11)==33 % 0 (-1) +--+ ShiftTo(33)==11 % 0 (1)
ShiftFrom(12)==30 % 0 (-1) +--+ ShiftTo(30)==12 % 0 (1)
ShiftFrom(13)==27 % 0 (-1) +--+ ShiftTo(27)==13 % 0 (1)
ShiftFrom(14)==24 % 0 (-1) +--+ ShiftTo(24)==14 % 0 (1)
ShiftFrom(15)==21 % 0 (-1) +--+ ShiftTo(21)==15 % 0 (1)
ShiftFrom(16)==NaN
ShiftFrom(17)==NaN
ShiftFrom(18)==NaN
ShiftFrom(19)==NaN
ShiftFrom(20)==3 % 0 (-1) +--+ ShiftTo(3)==20 % 0 (-1)
ShiftFrom(21)==6 % 0 (-1) +--+ ShiftTo(6)==21 % 0 (-1)
ShiftFrom(22)==9 % 0 (-1) +--+ ShiftTo(9)==22 % 0 (-1)
ShiftFrom(23)==12 % 0 (-1) +--+ ShiftTo(12)==23 % 0 (-1)
ShiftFrom(24)==15 % 0 (-1) +--+ ShiftTo(15)==24 % 0 (-1)
ShiftFrom(25)==18 % 0 (-1) +--+ ShiftTo(18)==25 % 0 (-1)
FromMap : (1 25 3 51
1=51,2=48,3=45,4=42,5=39,6=XXX,7=XXX,8=XXX,9=XXX,10=36,11=33,12=30,13=27,14=24,15=21,16=XXX,17=XXX,18=XXX,19=XXX,20=3
21=6,22=9,23=12,24=15,25=18,26=XXX,
Test locateInFrom
Range 3 to 51
20,27;
Reversed
1,5;10,15;25,20;
Range 4 to 50
21,27;
Reversed
1,5;10,15;25,21;
Range 5 to 49
21,27;
Reversed
1,5;10,15;25,21;
Range 6 to 48
21,27;
Reversed
2,5;10,15;25,21;
Range 7 to 47
22,27;
Reversed
2,5;10,15;25,22;
Range 8 to 46
22,27;
Reversed
2,5;10,15;25,22;
Range 9 to 45
22,27;
Reversed
3,5;10,15;25,22;
Range 10 to 44
23,27;
Reversed
3,5;10,15;25,23;
Range 11 to 43
23,27;
Reversed
3,5;10,15;25,23;
Range 12 to 42
23,27;
Reversed
4,5;10,15;25,23;
Range 13 to 41
24,27;
Reversed
4,5;10,15;25,24;
Range 14 to 40
24,27;
Reversed
4,5;10,15;25,24;
Range 15 to 39
24,27;
Reversed
5,5;10,15;25,24;
Range 16 to 38
25,27;
Reversed
5,5;10,15;25,25;
Range 17 to 37
25,27;
Reversed
5,5;10,15;25,25;
Range 18 to 36
25,26;
Reversed
10,15;25,25;
Range 19 to 35
15,10;
Reversed
10,15;
Range 20 to 34
15,10;
Reversed
10,15;
Range 21 to 33
15,11;
Reversed
11,15;
Range 22 to 32
14,11;
Reversed
11,14;
Range 23 to 31
14,11;
Reversed
11,14;
Range 24 to 30
14,12;
Reversed
12,14;
Range 25 to 29
13,12;
Reversed
12,13;
Range 26 to 28
13,12;
Reversed
12,13;
Range 27 to 27
13,13;
Reversed
13,13;
ToMap : (1 51 1 25
1=20,2=20,3=20,4=21,5=21,6=21,7=22,8=22,9=22,10=23,11=23,12=23,13=24,14=24,15=24,16=25,17=25,18=25,19=15,20=15
21=15,22=14,23=14,24=14,25=13,26=13,27=13,28=12,29=12,30=12,31=11,32=11,33=11,34=10,35=10,36=10,37=5,38=5,39=5,40=4
41=4,42=4,43=3,44=3,45=3,46=2,47=2,48=2,49=1,50=1,51=1,52=XXX,
Test locateInTo
Range 1 to 25
51,16;
Reversed
18,49;
Range 2 to 24
48,13;
Reversed
15,46;
Range 3 to 23
45,10;
Reversed
12,43;
Range 4 to 22
42,7;
Reversed
9,40;
Range 5 to 21
39,4;
Reversed
6,37;
Range 6 to 20
No range!
Reversed
No range!
Range 7 to 19
No range!
Reversed
No range!
Range 8 to 18
No range!
Reversed
No range!
Range 9 to 17
No range!
Reversed
No range!
Range 10 to 16
No range!
Reversed
No range!
Range 11 to 15
33,19;
Reversed
21,31;
Range 12 to 14
30,22;
Reversed
24,28;
Range 13 to 13
27,25;
Reversed
27,25;
ShiftFrom(1)==NaN
ShiftFrom(2)==1 % 0 (1) +--+ ShiftTo(1)==2 % 0 (1)
ShiftFrom(3)==NaN
ShiftFrom(4)==NaN
ShiftFrom(5)==NaN
ShiftFrom(6)==1 % 1 (1) +--+ ShiftTo(1)==2 % 0 (1)
ShiftFrom(7)==1 % 2 (1) +--+ ShiftTo(1)==2 % 0 (1)
ShiftFrom(8)==2 % 0 (1) +--+ ShiftTo(2)==8 % 0 (1)
ShiftFrom(9)==NaN
ShiftFrom(10)==NaN
ShiftFrom(11)==NaN
ShiftFrom(12)==2 % 1 (1) +--+ ShiftTo(2)==8 % 0 (1)
ShiftFrom(13)==2 % 2 (1) +--+ ShiftTo(2)==8 % 0 (1)
ShiftFrom(14)==3 % 0 (1) +--+ ShiftTo(3)==14 % 0 (1)
ShiftFrom(15)==3 % 1 (1) +--+ ShiftTo(3)==14 % 0 (1)
ShiftFrom(16)==3 % 2 (1) +--+ ShiftTo(3)==14 % 0 (1)
ShiftFrom(17)==NaN
ShiftFrom(18)==NaN
ShiftFrom(19)==NaN
ShiftFrom(20)==NaN
ShiftFrom(21)==NaN
ShiftFrom(22)==NaN
ShiftFrom(23)==NaN
ShiftFrom(24)==NaN
ShiftFrom(25)==NaN
FromMap : (2 16 1 3
1=1,2=XXX,3=XXX,4=XXX,5=1,6=1,7=2,8=XXX,9=XXX,10=XXX,11=2,12=2,13=3,14=3,15=3,16=XXX,
Test locateInFrom
Range 1 to 3
2,2;6,8;12,16;
Reversed
14,12;
Range 2 to 2
8,8;12,13;
Reversed
8,8;12,13;
ToMap : (1 3 2 14
1=2,2=8,3=14,4=XXX,
Test locateInTo
Range 2 to 14
1,3;
Reversed
3,1;
Range 3 to 13
No range!
Reversed
No range!
Range 4 to 12
No range!
Reversed
No range!
Range 5 to 11
No range!
Reversed
No range!
Range 6 to 10
No range!
Reversed
No range!
Range 7 to 9
No range!
Reversed
No range!
Range 8 to 8
2,2;
Reversed
2,2;