(*{{3,4,8},{2,9,16}} 

So,i'll try to explain things better. I have broken up the code, step-by-step. 

Whenever we look for tiles we ALWAYS assume that 0 is an element of it. 

You must also take into consideration that i am a good programer. It is very much possible that my ideas can be implemented in a much better way. Not to mention the fact that one could use languages like c++ which would really decrease the running time. But i cannot do that.

As a start, we only care about prime power divisors for the moment. This file contains calculations for the partition {{3,4,8},{2,9,16}}. It means that we are going to find all non-periodic tilings, such that one of the tiles is divisible by Phi_3, Phi_4, Phi_8, while the other by Phi_2, Phi_9, Phi_16. 

In this first step we find the "universal" tiling complement B. The theory for this  is provided in C-M. 
*)
 
Clear[x];
Expand[Cyclotomic[3,x^(16)]Cyclotomic[4,x^9]Cyclotomic[8,x^9]]

(* The output is 1+(x^16)+(x^18)+(x^32)+(x^34)+(x^36)+(x^50)+(x^52)+(x^54)+(x^68)+(x^70)+(x^86), therefore B={0,16,18,32,34,36,50,52,54,68,70,86};

This B is a tiling complement for ALL TILES which are divisible by Phi_2, Phi_9, Phi_16.
So, in order to find them all, we need to find all the tiling complements of B. This is done in the next step, in the "fill-out procedure."
*)

(*This section alone is the "fill-out procedure. You need to specify a value of "n" and a set 
"B" at the beginning and then run it. It gives you ALL the tiling complements of B in the group Z_n. Try to play with it in different groups. Z_108, Z_120, etc. It runs remarkably fast, as long as the number of tiling complements is not more than a few thousand. It takes longer if it is something like 100000, and takes 2-3 days if it is 1000000. Please use it at your wish. For example it is funny to give n=1000 and a random set B of length 20, and see how quickly it decides whether there are any tilining complements of B. Of course, almost surely B will have no tiling complements, and this procedure will run within 1-2 minutes. 

In this particular case it runs for a few minutes and outputs 3888 tiling complements. They are stored in the set 
"Tile". But it only writes out hte length of Tile, to avoid long-long lists of sets. *) 

Dynamic[{i,g, mark}]
Clear[n,B,R,Tile,A,U,mark,T,g];

n=144;
B={0,16,18,32,34,36,50,52,54,68,70,86};


Tile=Array[0&,1000000];
R=Array[0&,n];
A=Array[200&,{n/Length[B],n,Length[B]}];
U=Array[0&,n/Length[B]];
U[[1]]=B;
mark=Array[1&,n/Length[B]+1];
T=Array[{0}&,n/Length[B]];
g=1;

For[i=1, i>0,
If[Length[U[[i]]]==n,  Tile[[g]]=T[[i]]⋃{};g=g+1;T[[i]]=T[[i-1]];mark[[i]]=1;A[[i]]=Array[200&,{n,Length[B]}];i=i-1,
For[j=1, j≤n,k=100;
If[Not[MemberQ[U[[i]],Mod[j,n]]], k=0;
For[m=1, m≤Length[B],
If[U[[i]]⋂ Mod[(j-B[[m]])+B,n]=={}, k=k+1; A[[i,j,m]]=Mod[j-B[[m]],n]];
m++]];
R[[j]]=k;
j++];
min=Min[R]; 
If[(Not[min==0]),
t=Catch[Do[If[R[[ii]]==min, Throw[ii]],{ii,n}]];
If[mark[[i]]≤Length[B],
For[b=mark[[i]], b<=Length[B],mark[[i]]=b+1;z=0;
If[Not[A[[i,t,b]]==200], U[[i+1]]=U[[i]]⋃Mod[A[[i,t,b]]+B,n]; T[[i+1]]=T[[i]]⋃{A[[i,t,b]]}; b=Length[B]+1;z=1;i=i+1;];
b++];
If[z==0, mark[[i]]=1;A[[i]]=Array[200&,{n,Length[B]}];i=i-1];
, mark[[i]]=1;A[[i]]=Array[200&,{n,Length[B]}];T[[i]]=T[[i-1]];i=i-1];
, mark[[i]]=1;A[[i]]=Array[200&,{n,Length[B]}];T[[i]]=T[[i-1]];i=i-1];
];
];

Tile=Drop[Tile⋃{},1];
Length[Tile]
Tile;

(* The output is 3888. This is how many tiling complements B has in Z_144. 
*)

(* In this step we are going to throw away the periodic sets from Tile. And also, we want to keep only one copy of equivalent tiles (a tile is equivalent to its own translated coppies). We only want to keep the ones in normal form. The normal form i chose here is that the longest interval is thrown in at the beginning.

*)

For[j=1, j≤Length[Tile], P=Tile[[j]];
For[i=2, i<=Length[P], 
If[MemberQ[Tile,Mod[P-P[[i]],n]⋃{}], Tile[[j]]=0;i=Length[P]+1];
i++];
j++]; 
Tile=Drop[Tile⋃{},1];
Length[Tile]
Tile

(*The output is a list of 60 tiles. They are the candidates we have been looking for. They are non-periodic, they are normal form, and they are all divisible by Phi_2, Phi_9, Phi_16. *)

(* This step is a seemingly long code, but it's task is simple. You must give a value "n" and a list of sets "T2" at the beginning as input. What it does: it puts the sets in T2 into equvalence classes according to which cyclotomic polynomials divide them. In this case n=144  and T2=Tile from the previous step. And, we know that Phi_2, Phi_9, Phi_16 always divide each set in T2. Also, by the other condition on C-M we know that Phi_18, Phi_144 also divide each set in T2. 
The output is explained below.
*)

n=144;

T2={{0,27,30,35,60,72,75,83,102,123,131,132},{0,27,39,40,48,69,88,96,99,111,136,141},{0,29,30,37,60,72,77,85,102,125,132,133},{0,29,37,42,48,72,77,85,114,120,125,133},{0,29,40,41,48,71,88,96,101,113,136,143},{0,29,40,48,53,59,88,96,101,125,131,136},{0,30,31,39,60,72,79,87,102,127,132,135},{0,30,33,41,60,72,81,89,102,129,132,137},{0,30,35,42,43,72,83,91,102,114,131,139},{0,30,35,43,60,72,83,91,102,131,132,139},{0,30,37,42,45,72,85,93,102,114,133,141},{0,30,37,45,60,72,85,93,102,132,133,141},{0,30,39,42,47,72,87,95,102,114,135,143},{0,30,39,47,60,72,87,95,102,132,135,143},{0,31,37,40,48,61,88,96,103,109,133,136},{0,31,39,42,48,72,79,87,114,120,127,135},{0,31,39,42,66,72,79,87,114,127,135,138},{0,31,40,48,55,61,88,96,103,127,133,136},{0,33,39,40,48,63,88,96,105,111,135,136},{0,33,40,45,48,57,88,96,105,117,129,136},{0,33,40,48,57,63,88,96,105,129,135,136},{0,33,41,42,48,72,81,89,114,120,129,137},{0,33,41,42,66,72,81,89,114,129,137,138},{0,33,41,48,60,72,81,89,120,129,132,137},{0,35,40,41,48,65,88,96,107,113,136,137},{0,35,40,47,48,59,88,96,107,119,131,136},{0,35,40,48,59,65,88,96,107,131,136,137},{0,35,42,43,48,72,83,91,114,120,131,139},{0,35,42,43,66,72,83,91,114,131,138,139},{0,35,43,48,60,72,83,91,120,131,132,139},{0,37,40,43,48,67,88,96,109,115,136,139},{0,37,40,48,49,61,88,96,109,121,133,136},{0,37,40,48,61,67,88,96,109,133,136,139},{0,37,42,45,48,72,85,93,114,120,133,141},{0,37,42,45,66,72,85,93,114,133,138,141},{0,37,45,48,60,72,85,93,120,132,133,141},{0,39,40,45,48,51,88,96,111,117,123,136},{0,39,40,45,48,69,88,96,111,117,136,141},{0,39,40,48,51,63,88,96,111,123,135,136},{0,39,40,48,63,69,88,96,111,135,136,141},{0,39,42,47,48,72,87,95,114,120,135,143},{0,39,42,47,66,72,87,95,114,135,138,143},{0,39,47,48,60,72,87,95,120,132,135,143},{0,39,47,60,66,72,87,95,132,135,138,143},{0,40,41,47,48,53,88,96,113,119,125,136},{0,40,41,47,48,71,88,96,113,119,136,143},{0,40,41,48,53,65,88,96,113,125,136,137},{0,40,41,48,65,71,88,96,113,136,137,143},{0,40,43,48,49,55,88,96,115,121,127,136},{0,40,43,48,55,67,88,96,115,127,136,139},{0,40,45,48,51,57,88,96,117,123,129,136},{0,40,45,48,57,69,88,96,117,129,136,141},{0,40,47,48,53,59,88,96,119,125,131,136},{0,40,47,48,59,71,88,96,119,131,136,143},{0,40,48,49,55,61,88,96,121,127,133,136},{0,40,48,51,57,63,88,96,123,129,135,136},{0,40,48,53,59,65,88,96,125,131,136,137},{0,40,48,55,61,67,88,96,127,133,136,139},{0,40,48,57,63,69,88,96,129,135,136,141},{0,40,48,59,65,71,88,96,131,136,137,143}};
 
Dynamic[{j,v,vvv,vvvv}]


Clear[H];

Length[T2]

H=Array[0&,{Length[T2],n}];
MF=Array[0&,100];
MT=Array[0&,100];

For[j=1, j≤Length[T2], 
For[k=1, k≤n,
If[MemberQ[T2[[j]],Mod[k,n]],H[[j,k]]=1];
k++];
j++];

MF[[1]]=H[[1]];
MT[[1]]=T2[[1]];

cont=1;
v=1;
For[j=2, j≤Length[T2], cont=1;
For[c=1,c≤v,
For[k=1, k≤n,
If[(Not[Chop[Fourier[MF[[c]]]][[k]]==Chop[Fourier[H[[j]]]][[k]]])∧(Chop[Fourier[MF[[c]]]][[k]]==0∨Chop[Fourier[H[[j]]]][[k]]==0), 
k=n+1;cont=cont+1];
k++];
If[cont≤c, c=v+1];
c++];
If[cont==v+1, MF[[v+1]]=H[[j]];MT[[v+1]]=T2[[j]]; v=v+1];
j++]; 


MT=Drop[MT⋃{},1];
MF=Drop[MF⋃{},1];
Length[MF]



MT

(*{{3,8,16},{2,4,9}};*)

(* Next, we see what those Fourier-zero sets are. *)

J=MF;
F1=Array[1&,{Length[J],n}];

For[i=1,i<=Length[J],
For[j=1,j≤n,
If[Chop[Fourier[J[[i]]]][[j]]==0, F1[[i,j]]=0];
j++];
i++];

F1;


FF1=Array[0&,{Length[F1],n}];

For[i=1,i≤Length[F1],
For[j=1,j≤n,
If[F1[[i,j]]==0, FF1[[i,j]]=j];
j++];
i++];

For[j=1,j≤Length[FF1],
FF1[[j]]=Drop[FF1[[j]]⋃{},1];
j++];
FF1;


FF=FF1-1;

For[m=1,m≤Length[FF1],
For[j=1,j≤Length[FF1[[m]]],
FF[[m,j]]=GCD[FF[[m,j]],n];
j++];
m++];
FF;
For[j=1,j≤Length[FF],
FF[[j]]=FF[[j]]⋃{};
j++];
FF;

FT=n/FF
CFT=Array[0&,Length[FT]];
For[j=1,j≤Length[FT],
CFT[[j]]=Complement[Divisors[n],FT[[j]]];
j++];
CFT

(*The output is the following:
60; the length of T2.

2; the number of equivalence clasess found;

{{0,27,30,35,60,72,75,83,102,123,131,132},{0,33,40,45,48,57,88,96,105,117,129,136}}; these are one representative from each class;  

{{144,36,18,16,9,2},{144,18,16,9,2}}; these are the cyclotomic divisors of the classes, but beware: the programming is stupid here, so that you cannot be sure that 
{0,27,30,35,60,72,75,83,102,123,131,132} is divisible by Phi_{144,36,18,16,9,2}. The order maybe interchanged so that possibly it is divisible by Phi_{144,18,16,9,2}. It is also the same in other files!I don't really care about this for the moment.

{{1,3,4,6,8,12,24,48,72},{1,3,4,6,8,12,24,36,48,72}}; the remaining divisors of n for each class. It could happen that from the remaining divisors of n we conclude that some class produces automatically periodic tiling complements. This is explaied fairly clearly in the paper at Step 4. But in this case we cannot make such conclusions. 
*)

(* Next we actually select whihch sets belong to which equivalence class. T2 is the same as above. The output is explained below. *)

Length[T2]

H=Array[0&,{Length[T2],144}];
MF=Array[0&,Length[T2]];
MT=Array[0&,Length[T2]];
For[j=1, j≤Length[T2], 
For[k=1, k≤144,
If[MemberQ[T2[[j]],Mod[k,144]],H[[j,k]]=1];
k++];
j++];
 
v=1;
For[j=2, j≤Length[T2],
For[k=1, k≤144,
If[(Not[Chop[Fourier[H[[1]]]][[k]]==Chop[Fourier[H[[j]]]][[k]]])∧(Chop[Fourier[H[[1]]]][[k]]==0∨Chop[Fourier[H[[j]]]][[k]]==0), MF[[v]]=H[[j]];MT[[v]]=T2[[j]]; v=v+1; k=145];
k++];
j++]; 


MT=Drop[MT⋃{},1]
MF=Drop[MF⋃{},1];
Length[MF]

MMF=Array[0&,Length[T2]];
MMT=Array[0&,Length[T2]];
vvv=1;

For[j=2, j≤Length[MF],
For[k=1, k≤144,
If[(Not[Chop[Fourier[MF[[1]]]][[k]]==Chop[Fourier[MF[[j]]]][[k]]])∧(Chop[Fourier[MF[[1]]]][[k]]==0∨Chop[Fourier[MF[[j]]]][[k]]==0), MMF[[vvv]]=MF[[j]];MMT[[vvv]]=MT[[j]]; vvv=vvv+1; k=145];
k++];
j++]; 

MMT=Drop[MMT⋃{},1];
MMF=Drop[MMF⋃{},1];
Length[MMF]
Complement[T2,MT]

(* The output is the following:

60: the length of T2;

{{0,33,40,45,48,57,88,96,105,117,129,136},{0,33,41,48,60,72,81,89,120,129,132,137},{0,35,40,47,48,59,88,96,107,119,131,136},{0,35,43,48,60,72,83,91,120,131,132,139},{0,37,40,48,49,61,88,96,109,121,133,136},{0,37,45,48,60,72,85,93,120,132,133,141},{0,39,40,48,51,63,88,96,111,123,135,136},{0,39,47,48,60,72,87,95,120,132,135,143},{0,40,41,48,53,65,88,96,113,125,136,137},{0,40,43,48,55,67,88,96,115,127,136,139},{0,40,45,48,57,69,88,96,117,129,136,141},{0,40,47,48,59,71,88,96,119,131,136,143}}: it is the list of sets which are NOT in the same class as {0,27,30,35,60,72,75,83,102,123,131,132}.

12: the length of the list above, i.e. the number of sets contained in the list.

0: this is just crosscheking. It is the number of sets which are not in the same class as either {0,27,30,35,60,72,75,83,102,123,131,132} or {0,33,40,45,48,57,88,96,105,117,129,136}. There are no such sets of course, as we know that there is no third equivalence class. 

{{0,27,30,35,60,72,75,83,102,123,131,132},{0,27,39,40,48,69,88,96,99,111,136,141},{0,29,30,37,60,72,77,85,102,125,132,133},{0,29,37,42,48,72,77,85,114,120,125,133},{0,29,40,41,48,71,88,96,101,113,136,143},{0,29,40,48,53,59,88,96,101,125,131,136},{0,30,31,39,60,72,79,87,102,127,132,135},{0,30,33,41,60,72,81,89,102,129,132,137},{0,30,35,42,43,72,83,91,102,114,131,139},{0,30,35,43,60,72,83,91,102,131,132,139},{0,30,37,42,45,72,85,93,102,114,133,141},{0,30,37,45,60,72,85,93,102,132,133,141},{0,30,39,42,47,72,87,95,102,114,135,143},{0,30,39,47,60,72,87,95,102,132,135,143},{0,31,37,40,48,61,88,96,103,109,133,136},{0,31,39,42,48,72,79,87,114,120,127,135},{0,31,39,42,66,72,79,87,114,127,135,138},{0,31,40,48,55,61,88,96,103,127,133,136},{0,33,39,40,48,63,88,96,105,111,135,136},{0,33,40,48,57,63,88,96,105,129,135,136},{0,33,41,42,48,72,81,89,114,120,129,137},{0,33,41,42,66,72,81,89,114,129,137,138},{0,35,40,41,48,65,88,96,107,113,136,137},{0,35,40,48,59,65,88,96,107,131,136,137},{0,35,42,43,48,72,83,91,114,120,131,139},{0,35,42,43,66,72,83,91,114,131,138,139},{0,37,40,43,48,67,88,96,109,115,136,139},{0,37,40,48,61,67,88,96,109,133,136,139},{0,37,42,45,48,72,85,93,114,120,133,141},{0,37,42,45,66,72,85,93,114,133,138,141},{0,39,40,45,48,51,88,96,111,117,123,136},{0,39,40,45,48,69,88,96,111,117,136,141},{0,39,40,48,63,69,88,96,111,135,136,141},{0,39,42,47,48,72,87,95,114,120,135,143},{0,39,42,47,66,72,87,95,114,135,138,143},{0,39,47,60,66,72,87,95,132,135,138,143},{0,40,41,47,48,53,88,96,113,119,125,136},{0,40,41,47,48,71,88,96,113,119,136,143},{0,40,41,48,65,71,88,96,113,136,137,143},{0,40,43,48,49,55,88,96,115,121,127,136},{0,40,45,48,51,57,88,96,117,123,129,136},{0,40,47,48,53,59,88,96,119,125,131,136},{0,40,48,49,55,61,88,96,121,127,133,136},{0,40,48,51,57,63,88,96,123,129,135,136},{0,40,48,53,59,65,88,96,125,131,136,137},{0,40,48,55,61,67,88,96,127,133,136,139},{0,40,48,57,63,69,88,96,129,135,136,141},{0,40,48,59,65,71,88,96,131,136,137,143}}: the rest of T2, i.e. the 48 vectors in the same equivalence class as {0,27,30,35,60,72,75,83,102,123,131,132}.
*)

(* We have concluded so far, that there are 60 non-periodic candidates in normal form, divisible by Phi_{2,9,16}, and they fall into two classes: {{144,36,18,16,9,2},{144,18,16,9,2}}. And we sorted them into these two equivalence classes, on of them containing 12 sets, the other 48.

So, next we run the fill-out procedure for a representative of each class. First we run it for {0,33,40,45,48,57,88,96,105,117,129,136}.
*)

Dynamic[{i,g, mark}]
Clear[n,B,R,Tile,A,U,mark,T,g];

n=144;
B={0,33,40,45,48,57,88,96,105,117,129,136};


Tile=Array[0&,1000000];
R=Array[0&,n];
A=Array[200&,{n/Length[B],n,Length[B]}];
U=Array[0&,n/Length[B]];
U[[1]]=B;
mark=Array[1&,n/Length[B]+1];
T=Array[{0}&,n/Length[B]];
g=1;

For[i=1, i>0,
If[Length[U[[i]]]==n,  Tile[[g]]=T[[i]]⋃{};g=g+1;T[[i]]=T[[i-1]];mark[[i]]=1;A[[i]]=Array[200&,{n,Length[B]}];i=i-1,
For[j=1, j≤n,k=100;
If[Not[MemberQ[U[[i]],Mod[j,n]]], k=0;
For[m=1, m≤Length[B],
If[U[[i]]⋂ Mod[(j-B[[m]])+B,n]=={}, k=k+1; A[[i,j,m]]=Mod[j-B[[m]],n]];
m++]];
R[[j]]=k;
j++];
min=Min[R]; 
If[(Not[min==0]),
t=Catch[Do[If[R[[ii]]==min, Throw[ii]],{ii,n}]];
If[mark[[i]]≤Length[B],
For[b=mark[[i]], b<=Length[B],mark[[i]]=b+1;z=0;
If[Not[A[[i,t,b]]==200], U[[i+1]]=U[[i]]⋃Mod[A[[i,t,b]]+B,n]; T[[i+1]]=T[[i]]⋃{A[[i,t,b]]}; b=Length[B]+1;z=1;i=i+1;];
b++];
If[z==0, mark[[i]]=1;A[[i]]=Array[200&,{n,Length[B]}];i=i-1];
, mark[[i]]=1;A[[i]]=Array[200&,{n,Length[B]}];T[[i]]=T[[i-1]];i=i-1];
, mark[[i]]=1;A[[i]]=Array[200&,{n,Length[B]}];T[[i]]=T[[i-1]];i=i-1];
];
];

Tile=Drop[Tile⋃{},1];
Length[Tile]
Tile;

(*There are 1944 tiling complements.
*)

(*Now we select the non-periodic ones, in normal form. *)

For[j=1, j≤Length[Tile], P=Tile[[j]];
For[i=2, i<=Length[P], 
If[MemberQ[Tile,Mod[P-P[[i]],n]⋃{}], Tile[[j]]=0;i=Length[P]+1];
i++];
j++]; 
Tile=Drop[Tile⋃{},1];
Length[Tile]
Tile

(*There are 162 such complements. So, we conclude that the set B={0,33,40,45,48,57,88,96,105,117,129,136} has 162 non-periodic tiling complements in normal form. Clearly, all the sets in the same equivalence class with B will have the same tiling complements. So, we conclude that this 162 sets all tile with each set of the class {{0,33,40,45,48,57,88,96,105,117,129,136},{0,33,41,48,60,72,81,89,120,129,132,137},{0,35,40,47,48,59,88,96,107,119,131,136},{0,35,43,48,60,72,83,91,120,131,132,139},{0,37,40,48,49,61,88,96,109,121,133,136},{0,37,45,48,60,72,85,93,120,132,133,141},{0,39,40,48,51,63,88,96,111,123,135,136},{0,39,47,48,60,72,87,95,120,132,135,143},{0,40,41,48,53,65,88,96,113,125,136,137},{0,40,43,48,55,67,88,96,115,127,136,139},{0,40,45,48,57,69,88,96,117,129,136,141},{0,40,47,48,59,71,88,96,119,131,136,143}}.
 *)

(*Now we list the tiling complements for the representative of the other equivalence class, B={0,27,30,35,60,72,75,83,102,123,131,132}.
  *)

Dynamic[{i,g, mark}]
Clear[n,B,R,Tile,A,U,mark,T,g];

n=144;
B={0,27,30,35,60,72,75,83,102,123,131,132};


Tile=Array[0&,1000000];
R=Array[0&,n];
A=Array[200&,{n/Length[B],n,Length[B]}];
U=Array[0&,n/Length[B]];
U[[1]]=B;
mark=Array[1&,n/Length[B]+1];
T=Array[{0}&,n/Length[B]];
g=1;

For[i=1, i>0,
If[Length[U[[i]]]==n,  Tile[[g]]=T[[i]]⋃{};g=g+1;T[[i]]=T[[i-1]];mark[[i]]=1;A[[i]]=Array[200&,{n,Length[B]}];i=i-1,
For[j=1, j≤n,k=100;
If[Not[MemberQ[U[[i]],Mod[j,n]]], k=0;
For[m=1, m≤Length[B],
If[U[[i]]⋂ Mod[(j-B[[m]])+B,n]=={}, k=k+1; A[[i,j,m]]=Mod[j-B[[m]],n]];
m++]];
R[[j]]=k;
j++];
min=Min[R]; 
If[(Not[min==0]),
t=Catch[Do[If[R[[ii]]==min, Throw[ii]],{ii,n}]];
If[mark[[i]]≤Length[B],
For[b=mark[[i]], b<=Length[B],mark[[i]]=b+1;z=0;
If[Not[A[[i,t,b]]==200], U[[i+1]]=U[[i]]⋃Mod[A[[i,t,b]]+B,n]; T[[i+1]]=T[[i]]⋃{A[[i,t,b]]}; b=Length[B]+1;z=1;i=i+1;];
b++];
If[z==0, mark[[i]]=1;A[[i]]=Array[200&,{n,Length[B]}];i=i-1];
, mark[[i]]=1;A[[i]]=Array[200&,{n,Length[B]}];T[[i]]=T[[i-1]];i=i-1];
, mark[[i]]=1;A[[i]]=Array[200&,{n,Length[B]}];T[[i]]=T[[i-1]];i=i-1];
];
];

Tile=Drop[Tile⋃{},1];
Length[Tile]
Tile;

(*Now we select the non-periodic ones, in normal form. *)

For[j=1, j≤Length[Tile], P=Tile[[j]];
For[i=2, i<=Length[P], 
If[MemberQ[Tile,Mod[P-P[[i]],n]⋃{}], Tile[[j]]=0;i=Length[P]+1];
i++];
j++]; 
Tile=Drop[Tile⋃{},1];
Length[Tile]
Tile

(*There are 6 such sets. These are the non-periodic and 
normal-form tiling complements of B={0,27,30,35,60,72,75,83,102,123,131,132}.
This is a subset of the previous 162 sets. 
(Remark: Thus we found out that it has less cyclotomic divisors, so that B={0,27,30,35,60,72,75,83,102,123,131,132} corresponds to Phi_{144,18,16,9,2}, while B={0,33,40,45,48,57,88,96,105,117,129,136} corresponds to Phi_{144,36,18,16,9,2}.)

Therefore this 6 sets tile with each of the 48 sets in the equivalence class of B, i.e.

{{0,27,30,35,60,72,75,83,102,123,131,132},{0,27,39,40,48,69,88,96,99,111,136,141},{0,29,30,37,60,72,77,85,102,125,132,133},{0,29,37,42,48,72,77,85,114,120,125,133},{0,29,40,41,48,71,88,96,101,113,136,143},{0,29,40,48,53,59,88,96,101,125,131,136},{0,30,31,39,60,72,79,87,102,127,132,135},{0,30,33,41,60,72,81,89,102,129,132,137},{0,30,35,42,43,72,83,91,102,114,131,139},{0,30,35,43,60,72,83,91,102,131,132,139},{0,30,37,42,45,72,85,93,102,114,133,141},{0,30,37,45,60,72,85,93,102,132,133,141},{0,30,39,42,47,72,87,95,102,114,135,143},{0,30,39,47,60,72,87,95,102,132,135,143},{0,31,37,40,48,61,88,96,103,109,133,136},{0,31,39,42,48,72,79,87,114,120,127,135},{0,31,39,42,66,72,79,87,114,127,135,138},{0,31,40,48,55,61,88,96,103,127,133,136},{0,33,39,40,48,63,88,96,105,111,135,136},{0,33,40,48,57,63,88,96,105,129,135,136},{0,33,41,42,48,72,81,89,114,120,129,137},{0,33,41,42,66,72,81,89,114,129,137,138},{0,35,40,41,48,65,88,96,107,113,136,137},{0,35,40,48,59,65,88,96,107,131,136,137},{0,35,42,43,48,72,83,91,114,120,131,139},{0,35,42,43,66,72,83,91,114,131,138,139},{0,37,40,43,48,67,88,96,109,115,136,139},{0,37,40,48,61,67,88,96,109,133,136,139},{0,37,42,45,48,72,85,93,114,120,133,141},{0,37,42,45,66,72,85,93,114,133,138,141},{0,39,40,45,48,51,88,96,111,117,123,136},{0,39,40,45,48,69,88,96,111,117,136,141},{0,39,40,48,63,69,88,96,111,135,136,141},{0,39,42,47,48,72,87,95,114,120,135,143},{0,39,42,47,66,72,87,95,114,135,138,143},{0,39,47,60,66,72,87,95,132,135,138,143},{0,40,41,47,48,53,88,96,113,119,125,136},{0,40,41,47,48,71,88,96,113,119,136,143},{0,40,41,48,65,71,88,96,113,136,137,143},{0,40,43,48,49,55,88,96,115,121,127,136},{0,40,45,48,51,57,88,96,117,123,129,136},{0,40,47,48,53,59,88,96,119,125,131,136},{0,40,48,49,55,61,88,96,121,127,133,136},{0,40,48,51,57,63,88,96,123,129,135,136},{0,40,48,53,59,65,88,96,125,131,136,137},{0,40,48,55,61,67,88,96,127,133,136,139},{0,40,48,57,63,69,88,96,129,135,136,141},{0,40,48,59,65,71,88,96,131,136,137,143}}.
 *)

(* Therefore we have a full classification for this case. 

The whole thing should run within half an hour. You may think it is impresively quick. But in fact some of the procedures are really slow, and it is just a matter of luck that there are only a few tiling complements every time, so that the program runs quickly. If you try to run the same routines for other partitions of SA's then you will see that they take hours, or days, and eventually there are cases when you would not finish in a year. That is why i improved the programming routines for some other cases. The other commented file that i sent you earlier actually contain quicker algorithms. But the steps are the same, only the programming uses simple tricks to increase speed of calculation.  
Now you should go back to that file, to see what those tricks are. 
(For example: not evaluating a full Fourier transform each time, because it is slow. Instead, evaluate only some relevant values of it. The other trick is: if LCM is not 144, then we end up with a lot of tiling complements right at the beginning; therefore the fill-out procedure runs slowly. But we actually know from C-M that all these tiling complements look like a certain set modulo LCM, and each element shifted by multiples of LCM (the LCM in the other file is 48). Therefore we run the fill-out procedure in Z_48, it runs very quickly, and then we shift each element by multiples of LCMin each possible ways to generate all tiling complements.)  
*)