## ## ## Decodes the Golay 12,6,6 code using S(5,6,12) ## and the MINIMOG ## ## This package uses GUAVA ## ## Example commands to start using this program: ## ##LogTo("/home/wdj/gapstuff/hexads.log"); #for unix ##LogTo("c:/gap/logfiles/hexads.log"); #for windows ##RequirePackage("guava"); ##Read("/home/wdj/gapstuff/golay12.g"); #for unix ##Read("c:/gap/gapfiles/golay12.g"); #for windows ## ##wdj,12-2001 ######################################################3 ## ## The Golay code 12,6,6 ## #r1 :=[0, 0, 2, 2, 1, 1, 0, 0, 1, 1, 0, 0];; #r2 :=[0, 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1];; #r3 :=[0, 2, 2, 0, 1, 0, 0, 1, 1, 0, 0, 1];; #r4 :=[0, 2, 0, 2, 2, 0, 2, 2, 0, 0, 0, 1];; #r5 :=[0, 0, 2, 0, 0, 1, 1, 0, 1, 0, 1, 1];; #r6 :=[1, 0, 2, 0, 2, 0, 0, 2, 0, 0, 1, 1];; #G:=[r1,r2,r3,r4,r5,r6];; #C12:=GeneratorMatCode(G,GF(3));; #wt6_codewords_wt( C12, 6);; #wt9_codewords:=codewords_wt( C12, 9);; #wt12_codewords_wt( C12, 12);; ## ######################################################### ## ## Examples ## ## decoding a random wt 12 codeword with 2 errors ## #c:=Random(wt12_codewords); #n1:=Random([1..12]); #n2:=Random([1..12]); #if n1=n2 and n1<12 then n2:=n1+1; fi; #if n1=n2 and n1=12 then n2:=n1-1; fi; #e:=[]; #for i in [1..12] do # if i in [n1,n2] then e[i]:=1; else e[i]:=0; fi; #od; #r:=(e+c) mod 3; #decode(r); ## ## ## decoding a random wt 9 codeword with 2 errors ## #c:=Random(wt9_codewords); #n1:=Random([1..12]); #n2:=Random([1..12]); #if n1=n2 and n1<12 then n2:=n1+1; fi; #if n1=n2 and n1=12 then n2:=n1-1; fi; #e:=[]; #for i in [1..12] do # if i in [n1,n2] then e[i]:=1; else e[i]:=0; fi; #od; #r:=(e+c) mod 3; #decode(r); ## ## ## decoding a random wt 6 codeword with 2 errors ## #c:=Random(wt6_codewords); #n1:=Random([1..12]); #n2:=Random([1..12]); #if n1=n2 and n1<12 then n2:=n1+1; fi; #if n1=n2 and n1=12 then n2:=n1-1; fi; #e:=[]; #for i in [1..12] do # if i in [n1,n2] then e[i]:=1; else e[i]:=0; fi; #od; #r:=(e+c) mod 3; #decode(r); ## ########################################################### minimog_shuffle:=[[6,3,0,9],[5,2,7,10],[4,1,8,11]];; #hexads in the S(5,6,12) with shuffle labeling #obtained from: #for x in hexad_codewords do Add(S2,support_word(x)); od; S2; hexads:=[ [ 0, 9, 5, 2, 4, 1 ], [ 0, 9, 7, 10, 8, 11 ], [ 3, 0, 5, 10, 4, 11 ], [ 3, 9, 5, 7, 10, 11 ], [ 0, 2, 7, 4, 8, 11 ], [ 6, 0, 5, 10, 8, 11 ], [ 3, 9, 5, 2, 1, 8 ], [ 3, 0, 5, 4, 1, 8 ], [ 9, 5, 10, 4, 1, 8 ], [ 6, 9, 7, 4, 8, 11 ], [ 6, 0, 9, 2, 7, 4 ], [ 6, 5, 2, 10, 1, 8 ], [ 5, 2, 10, 4, 1, 11 ], [ 0, 5, 7, 4, 1, 11 ], [ 6, 9, 5, 7, 10, 8 ], [ 6, 0, 9, 5, 7, 11 ], [ 3, 9, 2, 10, 1, 11 ], [ 0, 2, 7, 10, 4, 1 ], [ 3, 0, 9, 5, 7, 1 ], [ 0, 9, 2, 10, 4, 11 ], [ 6, 0, 9, 5, 1, 8 ], [ 6, 0, 7, 10, 4, 11 ], [ 6, 5, 2, 10, 1, 8 ], [ 6, 9, 5, 2, 4, 8 ], [ 0, 5, 7, 10, 1, 8 ], [ 6, 9, 5, 7, 4, 1 ], [ 0, 5, 2, 10, 4, 8 ], [ 6, 0, 9, 10, 4, 8 ], [ 6, 9, 2, 7, 10, 11 ], [ 0, 9, 2, 10, 1, 8 ], [ 3, 9, 10, 4, 8, 11 ], [ 9, 5, 2, 7, 10, 1 ], [ 6, 0, 9, 2, 7, 4 ], [ 6, 3, 0, 9, 5, 4 ], [ 6, 0, 9, 7, 10, 1 ], [ 6, 5, 4, 1, 8, 11 ], [ 6, 3, 9, 4, 1, 8 ], [ 3, 9, 5, 2, 10, 4 ], [ 6, 3, 0, 5, 7, 10 ], [ 5, 2, 7, 4, 1, 8 ], [ 6, 0, 9, 2, 8, 11 ], [ 3, 9, 5, 2, 10, 4 ], [ 0, 9, 7, 4, 1, 8 ], [ 9, 2, 4, 1, 8, 11 ], [ 3, 0, 5, 2, 7, 4 ], [ 9, 5, 7, 1, 8, 11 ], [ 6, 5, 7, 10, 1, 11 ], [ 3, 5, 2, 7, 10, 8 ], [ 6, 0, 2, 10, 1, 11 ], [ 3, 0, 2, 4, 1, 11 ], [ 6, 3, 10, 4, 1, 11 ], [ 3, 0, 9, 10, 4, 1 ], [ 6, 3, 2, 1, 8, 11 ], [ 6, 0, 5, 2, 7, 1 ], [ 6, 3, 9, 5, 2, 7 ], [ 0, 9, 2, 10, 4, 11 ], [ 3, 0, 5, 2, 10, 1 ], [ 3, 5, 2, 4, 8, 11 ], [ 9, 5, 10, 4, 1, 8 ], [ 6, 3, 0, 9, 2, 1 ], [ 9, 5, 2, 7, 4, 11 ], [ 6, 3, 0, 5, 2, 8 ], [ 3, 9, 2, 7, 8, 11 ], [ 9, 5, 2, 10, 8, 11 ], [ 6, 0, 5, 10, 4, 1 ], [ 3, 0, 7, 10, 1, 11 ], [ 3, 9, 5, 4, 1, 11 ], [ 3, 9, 5, 2, 1, 8 ], [ 3, 2, 7, 10, 4, 11 ], [ 0, 5, 2, 7, 10, 11 ], [ 6, 9, 10, 1, 8, 11 ], [ 3, 5, 7, 10, 4, 1 ], [ 6, 0, 5, 7, 4, 8 ], [ 3, 5, 2, 7, 10, 8 ], [ 0, 10, 4, 1, 8, 11 ], [ 6, 3, 9, 7, 10, 4 ], [ 6, 3, 0, 4, 8, 11 ], [ 6, 0, 2, 4, 1, 8 ], [ 6, 7, 10, 4, 1, 8 ], [ 6, 3, 2, 7, 4, 8 ], [ 3, 0, 2, 4, 1, 11 ], [ 6, 3, 9, 5, 10, 1 ], [ 3, 7, 4, 1, 8, 11 ], [ 6, 9, 5, 2, 1, 11 ], [ 6, 9, 2, 7, 1, 8 ], [ 3, 0, 7, 10, 4, 8 ], [ 6, 3, 0, 9, 10, 11 ], [ 6, 5, 2, 7, 10, 4 ], [ 6, 3, 0, 5, 1, 11 ], [ 0, 9, 5, 2, 4, 1 ], [ 0, 5, 7, 4, 1, 11 ], [ 6, 5, 2, 7, 8, 11 ], [ 6, 0, 9, 2, 8, 11 ], [ 3, 9, 5, 4, 1, 11 ], [ 6, 3, 0, 2, 10, 4 ], [ 6, 3, 0, 10, 1, 8 ], [ 3, 5, 10, 1, 8, 11 ], [ 6, 0, 9, 5, 2, 10 ], [ 6, 0, 2, 4, 1, 8 ], [ 6, 3, 9, 7, 1, 11 ], [ 0, 2, 7, 10, 4, 1 ], [ 6, 3, 2, 7, 4, 8 ], [ 6, 3, 5, 7, 1, 8 ], [ 6, 3, 5, 10, 4, 8 ], [ 9, 5, 2, 7, 10, 1 ], [ 3, 0, 2, 7, 1, 8 ], [ 6, 3, 9, 5, 10, 1 ], [ 3, 9, 2, 7, 4, 1 ], [ 3, 0, 9, 7, 4, 11 ], [ 3, 0, 7, 10, 4, 8 ], [ 5, 2, 7, 4, 1, 8 ], [ 3, 0, 5, 2, 7, 4 ], [ 6, 9, 5, 10, 4, 11 ], [ 3, 9, 2, 7, 4, 1 ], [ 3, 9, 5, 7, 4, 8 ], [ 3, 2, 7, 10, 4, 11 ], [ 6, 3, 0, 9, 2, 1 ], [ 6, 3, 5, 2, 10, 11 ], [ 3, 5, 2, 7, 1, 11 ], [ 6, 0, 7, 1, 8, 11 ], [ 6, 3, 9, 7, 1, 11 ], [ 6, 9, 2, 10, 4, 1 ], [ 0, 9, 5, 10, 1, 11 ], [ 6, 3, 5, 2, 4, 1 ], [ 6, 3, 9, 7, 10, 4 ], [ 6, 0, 9, 4, 1, 11 ], [ 6, 9, 5, 2, 4, 8 ], [ 6, 3, 10, 4, 1, 11 ], [ 6, 0, 5, 2, 7, 1 ], [ 3, 5, 2, 4, 8, 11 ], [ 6, 9, 2, 7, 10, 11 ], [ 3, 0, 2, 10, 8, 11 ], [ 6, 2, 10, 4, 8, 11 ], [ 9, 5, 7, 1, 8, 11 ], [ 6, 0, 2, 7, 10, 8 ], [ 9, 2, 7, 10, 4, 8 ], [ 6, 3, 0, 5, 2, 8 ], [ 3, 0, 9, 1, 8, 11 ], [ 9, 5, 2, 10, 8, 11 ], [ 6, 0, 5, 2, 4, 11 ], [ 0, 5, 2, 1, 8, 11 ], [ 6, 3, 0, 5, 7, 10 ], [ 6, 3, 0, 7, 4, 1 ], [ 3, 0, 5, 4, 1, 8 ], [ 6, 3, 9, 2, 10, 8 ], [ 6, 3, 9, 4, 1, 8 ], [ 3, 9, 2, 10, 1, 11 ], [ 3, 0, 9, 2, 4, 8 ], [ 3, 9, 2, 7, 8, 11 ], [ 6, 9, 7, 4, 8, 11 ], [ 3, 0, 9, 1, 8, 11 ], [ 0, 2, 7, 4, 8, 11 ], [ 6, 5, 4, 1, 8, 11 ], [ 0, 9, 5, 2, 7, 8 ], [ 6, 3, 2, 7, 10, 1 ], [ 6, 3, 9, 2, 4, 11 ], [ 6, 0, 5, 2, 4, 11 ], [ 6, 3, 9, 5, 2, 7 ], [ 3, 0, 2, 7, 1, 8 ], [ 6, 0, 9, 5, 1, 8 ], [ 6, 0, 7, 10, 4, 11 ], [ 6, 3, 0, 10, 1, 8 ], [ 6, 3, 7, 10, 8, 11 ], [ 6, 3, 0, 9, 7, 8 ], [ 6, 3, 0, 4, 8, 11 ], [ 0, 5, 2, 10, 4, 8 ], [ 3, 5, 7, 10, 4, 1 ], [ 0, 9, 5, 7, 10, 4 ], [ 6, 2, 7, 4, 1, 11 ], [ 2, 7, 10, 1, 8, 11 ], [ 6, 3, 5, 10, 4, 8 ], [ 6, 3, 0, 7, 4, 1 ], [ 3, 5, 2, 7, 1, 11 ], [ 0, 5, 2, 1, 8, 11 ], [ 6, 0, 9, 10, 4, 8 ], [ 3, 0, 5, 7, 8, 11 ], [ 9, 7, 10, 4, 1, 11 ], [ 3, 0, 9, 5, 2, 11 ], [ 0, 9, 5, 4, 8, 11 ], [ 3, 0, 9, 10, 4, 1 ], [ 2, 7, 10, 1, 8, 11 ], [ 0, 9, 7, 10, 8, 11 ], [ 3, 0, 9, 5, 7, 1 ], [ 9, 7, 10, 4, 1, 11 ], [ 3, 0, 9, 5, 2, 11 ], [ 5, 7, 10, 4, 8, 11 ], [ 6, 0, 2, 10, 1, 11 ], [ 6, 3, 0, 9, 5, 4 ], [ 3, 7, 4, 1, 8, 11 ], [ 0, 9, 5, 10, 1, 11 ], [ 6, 9, 10, 1, 8, 11 ], [ 0, 5, 2, 7, 10, 11 ], [ 6, 3, 2, 7, 10, 1 ], [ 3, 9, 10, 4, 8, 11 ], [ 0, 9, 5, 7, 10, 4 ], [ 6, 3, 5, 7, 4, 11 ], [ 9, 2, 7, 10, 4, 8 ], [ 6, 3, 7, 10, 8, 11 ], [ 3, 0, 2, 10, 8, 11 ], [ 6, 9, 2, 7, 1, 8 ], [ 6, 3, 9, 2, 10, 8 ], [ 3, 5, 10, 1, 8, 11 ], [ 0, 9, 2, 7, 1, 11 ], [ 6, 3, 0, 2, 7, 11 ], [ 6, 0, 5, 10, 8, 11 ], [ 6, 0, 5, 7, 4, 8 ], [ 6, 3, 9, 5, 8, 11 ], [ 0, 5, 7, 10, 1, 8 ], [ 6, 9, 5, 7, 4, 1 ], [ 9, 2, 4, 1, 8, 11 ], [ 0, 9, 5, 2, 7, 8 ], [ 6, 3, 5, 2, 4, 1 ], [ 6, 9, 5, 7, 10, 8 ], [ 6, 2, 10, 4, 8, 11 ], [ 6, 5, 7, 10, 1, 11 ], [ 6, 2, 7, 4, 1, 11 ], [ 3, 0, 9, 7, 4, 11 ], [ 0, 9, 5, 4, 8, 11 ], [ 3, 9, 7, 10, 1, 8 ], [ 3, 0, 9, 2, 7, 10 ], [ 6, 0, 9, 5, 7, 11 ], [ 6, 0, 9, 5, 2, 10 ], [ 3, 0, 5, 2, 10, 1 ], [ 6, 3, 0, 5, 1, 11 ], [ 9, 5, 2, 7, 4, 11 ], [ 3, 0, 5, 10, 4, 11 ], [ 6, 0, 9, 4, 1, 11 ], [ 5, 7, 10, 4, 8, 11 ], [ 6, 3, 5, 7, 4, 11 ], [ 6, 0, 7, 1, 8, 11 ], [ 6, 0, 2, 7, 10, 8 ], [ 3, 2, 10, 4, 1, 8 ], [ 0, 10, 4, 1, 8, 11 ], [ 0, 9, 7, 4, 1, 8 ], [ 6, 3, 0, 9, 7, 8 ], [ 6, 5, 2, 7, 8, 11 ], [ 3, 9, 7, 10, 1, 8 ], [ 6, 9, 2, 10, 4, 1 ], [ 5, 2, 10, 4, 1, 11 ], [ 6, 5, 2, 7, 10, 4 ], [ 6, 9, 5, 10, 4, 11 ], [ 3, 0, 9, 5, 10, 8 ], [ 3, 2, 10, 4, 1, 8 ], [ 3, 0, 9, 2, 7, 10 ], [ 6, 9, 5, 2, 1, 11 ], [ 3, 0, 7, 10, 1, 11 ], [ 6, 3, 5, 2, 10, 11 ], [ 6, 3, 5, 7, 1, 8 ], [ 0, 9, 2, 7, 1, 11 ], [ 0, 9, 2, 10, 1, 8 ], [ 3, 9, 5, 7, 10, 11 ], [ 3, 9, 5, 7, 4, 8 ], [ 6, 3, 9, 5, 8, 11 ], [ 6, 3, 2, 1, 8, 11 ], [ 3, 0, 5, 7, 8, 11 ], [ 6, 7, 10, 4, 1, 8 ], [ 6, 0, 5, 10, 4, 1 ], [ 6, 3, 0, 2, 7, 11 ], [ 3, 0, 9, 2, 4, 8 ], [ 6, 3, 0, 2, 10, 4 ], [ 6, 3, 0, 9, 10, 11 ], [ 6, 0, 9, 7, 10, 1 ], [ 6, 3, 9, 2, 4, 11 ], [ 3, 0, 9, 5, 10, 8 ], [ 0, 1, 2, 4, 5, 9 ], [ 0, 7, 8, 9, 10, 11 ], [ 0, 3, 4, 5, 10, 11 ], [ 3, 5, 7, 9, 10, 11 ], [ 0, 2, 4, 7, 8, 11 ], [ 0, 5, 6, 8, 10, 11 ], [ 1, 2, 3, 5, 8, 9 ], [ 0, 1, 3, 4, 5, 8 ], [ 1, 4, 5, 8, 9, 10 ], [ 4, 6, 7, 8, 9, 11 ], [ 0, 2, 4, 6, 7, 9 ], [ 1, 2, 5, 6, 8, 10 ], [ 1, 2, 4, 5, 10, 11 ], [ 0, 1, 4, 5, 7, 11 ], [ 5, 6, 7, 8, 9, 10 ], [ 0, 5, 6, 7, 9, 11 ], [ 1, 2, 3, 9, 10, 11 ], [ 0, 1, 2, 4, 7, 10 ], [ 0, 1, 3, 5, 7, 9 ], [ 0, 2, 4, 9, 10, 11 ], [ 0, 1, 5, 6, 8, 9 ], [ 0, 4, 6, 7, 10, 11 ], [ 1, 2, 5, 6, 8, 10 ], [ 2, 4, 5, 6, 8, 9 ], [ 0, 1, 5, 7, 8, 10 ], [ 1, 4, 5, 6, 7, 9 ], [ 0, 2, 4, 5, 8, 10 ], [ 0, 4, 6, 8, 9, 10 ], [ 2, 6, 7, 9, 10, 11 ], [ 0, 1, 2, 8, 9, 10 ], [ 3, 4, 8, 9, 10, 11 ], [ 1, 2, 5, 7, 9, 10 ], [ 0, 2, 4, 6, 7, 9 ], [ 0, 3, 4, 5, 6, 9 ], [ 0, 1, 6, 7, 9, 10 ], [ 1, 4, 5, 6, 8, 11 ], [ 1, 3, 4, 6, 8, 9 ], [ 2, 3, 4, 5, 9, 10 ], [ 0, 3, 5, 6, 7, 10 ], [ 1, 2, 4, 5, 7, 8 ], [ 0, 2, 6, 8, 9, 11 ], [ 2, 3, 4, 5, 9, 10 ], [ 0, 1, 4, 7, 8, 9 ], [ 1, 2, 4, 8, 9, 11 ], [ 0, 2, 3, 4, 5, 7 ], [ 1, 5, 7, 8, 9, 11 ], [ 1, 5, 6, 7, 10, 11 ], [ 2, 3, 5, 7, 8, 10 ], [ 0, 1, 2, 6, 10, 11 ], [ 0, 1, 2, 3, 4, 11 ], [ 1, 3, 4, 6, 10, 11 ], [ 0, 1, 3, 4, 9, 10 ], [ 1, 2, 3, 6, 8, 11 ], [ 0, 1, 2, 5, 6, 7 ], [ 2, 3, 5, 6, 7, 9 ], [ 0, 2, 4, 9, 10, 11 ], [ 0, 1, 2, 3, 5, 10 ], [ 2, 3, 4, 5, 8, 11 ], [ 1, 4, 5, 8, 9, 10 ], [ 0, 1, 2, 3, 6, 9 ], [ 2, 4, 5, 7, 9, 11 ], [ 0, 2, 3, 5, 6, 8 ], [ 2, 3, 7, 8, 9, 11 ], [ 2, 5, 8, 9, 10, 11 ], [ 0, 1, 4, 5, 6, 10 ], [ 0, 1, 3, 7, 10, 11 ], [ 1, 3, 4, 5, 9, 11 ], [ 1, 2, 3, 5, 8, 9 ], [ 2, 3, 4, 7, 10, 11 ], [ 0, 2, 5, 7, 10, 11 ], [ 1, 6, 8, 9, 10, 11 ], [ 1, 3, 4, 5, 7, 10 ], [ 0, 4, 5, 6, 7, 8 ], [ 2, 3, 5, 7, 8, 10 ], [ 0, 1, 4, 8, 10, 11 ], [ 3, 4, 6, 7, 9, 10 ], [ 0, 3, 4, 6, 8, 11 ], [ 0, 1, 2, 4, 6, 8 ], [ 1, 4, 6, 7, 8, 10 ], [ 2, 3, 4, 6, 7, 8 ], [ 0, 1, 2, 3, 4, 11 ], [ 1, 3, 5, 6, 9, 10 ], [ 1, 3, 4, 7, 8, 11 ], [ 1, 2, 5, 6, 9, 11 ], [ 1, 2, 6, 7, 8, 9 ], [ 0, 3, 4, 7, 8, 10 ], [ 0, 3, 6, 9, 10, 11 ], [ 2, 4, 5, 6, 7, 10 ], [ 0, 1, 3, 5, 6, 11 ], [ 0, 1, 2, 4, 5, 9 ], [ 0, 1, 4, 5, 7, 11 ], [ 2, 5, 6, 7, 8, 11 ], [ 0, 2, 6, 8, 9, 11 ], [ 1, 3, 4, 5, 9, 11 ], [ 0, 2, 3, 4, 6, 10 ], [ 0, 1, 3, 6, 8, 10 ], [ 1, 3, 5, 8, 10, 11 ], [ 0, 2, 5, 6, 9, 10 ], [ 0, 1, 2, 4, 6, 8 ], [ 1, 3, 6, 7, 9, 11 ], [ 0, 1, 2, 4, 7, 10 ], [ 2, 3, 4, 6, 7, 8 ], [ 1, 3, 5, 6, 7, 8 ], [ 3, 4, 5, 6, 8, 10 ], [ 1, 2, 5, 7, 9, 10 ], [ 0, 1, 2, 3, 7, 8 ], [ 1, 3, 5, 6, 9, 10 ], [ 1, 2, 3, 4, 7, 9 ], [ 0, 3, 4, 7, 9, 11 ], [ 0, 3, 4, 7, 8, 10 ], [ 1, 2, 4, 5, 7, 8 ], [ 0, 2, 3, 4, 5, 7 ], [ 4, 5, 6, 9, 10, 11 ], [ 1, 2, 3, 4, 7, 9 ], [ 3, 4, 5, 7, 8, 9 ], [ 2, 3, 4, 7, 10, 11 ], [ 0, 1, 2, 3, 6, 9 ], [ 2, 3, 5, 6, 10, 11 ], [ 1, 2, 3, 5, 7, 11 ], [ 0, 1, 6, 7, 8, 11 ], [ 1, 3, 6, 7, 9, 11 ], [ 1, 2, 4, 6, 9, 10 ], [ 0, 1, 5, 9, 10, 11 ], [ 1, 2, 3, 4, 5, 6 ], [ 3, 4, 6, 7, 9, 10 ], [ 0, 1, 4, 6, 9, 11 ], [ 2, 4, 5, 6, 8, 9 ], [ 1, 3, 4, 6, 10, 11 ], [ 0, 1, 2, 5, 6, 7 ], [ 2, 3, 4, 5, 8, 11 ], [ 2, 6, 7, 9, 10, 11 ], [ 0, 2, 3, 8, 10, 11 ], [ 2, 4, 6, 8, 10, 11 ], [ 1, 5, 7, 8, 9, 11 ], [ 0, 2, 6, 7, 8, 10 ], [ 2, 4, 7, 8, 9, 10 ], [ 0, 2, 3, 5, 6, 8 ], [ 0, 1, 3, 8, 9, 11 ], [ 2, 5, 8, 9, 10, 11 ], [ 0, 2, 4, 5, 6, 11 ], [ 0, 1, 2, 5, 8, 11 ], [ 0, 3, 5, 6, 7, 10 ], [ 0, 1, 3, 4, 6, 7 ], [ 0, 1, 3, 4, 5, 8 ], [ 2, 3, 6, 8, 9, 10 ], [ 1, 3, 4, 6, 8, 9 ], [ 1, 2, 3, 9, 10, 11 ], [ 0, 2, 3, 4, 8, 9 ], [ 2, 3, 7, 8, 9, 11 ], [ 4, 6, 7, 8, 9, 11 ], [ 0, 1, 3, 8, 9, 11 ], [ 0, 2, 4, 7, 8, 11 ], [ 1, 4, 5, 6, 8, 11 ], [ 0, 2, 5, 7, 8, 9 ], [ 1, 2, 3, 6, 7, 10 ], [ 2, 3, 4, 6, 9, 11 ], [ 0, 2, 4, 5, 6, 11 ], [ 2, 3, 5, 6, 7, 9 ], [ 0, 1, 2, 3, 7, 8 ], [ 0, 1, 5, 6, 8, 9 ], [ 0, 4, 6, 7, 10, 11 ], [ 0, 1, 3, 6, 8, 10 ], [ 3, 6, 7, 8, 10, 11 ], [ 0, 3, 6, 7, 8, 9 ], [ 0, 3, 4, 6, 8, 11 ], [ 0, 2, 4, 5, 8, 10 ], [ 1, 3, 4, 5, 7, 10 ], [ 0, 4, 5, 7, 9, 10 ], [ 1, 2, 4, 6, 7, 11 ], [ 1, 2, 7, 8, 10, 11 ], [ 3, 4, 5, 6, 8, 10 ], [ 0, 1, 3, 4, 6, 7 ], [ 1, 2, 3, 5, 7, 11 ], [ 0, 1, 2, 5, 8, 11 ], [ 0, 4, 6, 8, 9, 10 ], [ 0, 3, 5, 7, 8, 11 ], [ 1, 4, 7, 9, 10, 11 ], [ 0, 2, 3, 5, 9, 11 ], [ 0, 4, 5, 8, 9, 11 ], [ 0, 1, 3, 4, 9, 10 ], [ 1, 2, 7, 8, 10, 11 ], [ 0, 7, 8, 9, 10, 11 ], [ 0, 1, 3, 5, 7, 9 ], [ 1, 4, 7, 9, 10, 11 ], [ 0, 2, 3, 5, 9, 11 ], [ 4, 5, 7, 8, 10, 11 ], [ 0, 1, 2, 6, 10, 11 ], [ 0, 3, 4, 5, 6, 9 ], [ 1, 3, 4, 7, 8, 11 ], [ 0, 1, 5, 9, 10, 11 ], [ 1, 6, 8, 9, 10, 11 ], [ 0, 2, 5, 7, 10, 11 ], [ 1, 2, 3, 6, 7, 10 ], [ 3, 4, 8, 9, 10, 11 ], [ 0, 4, 5, 7, 9, 10 ], [ 3, 4, 5, 6, 7, 11 ], [ 2, 4, 7, 8, 9, 10 ], [ 3, 6, 7, 8, 10, 11 ], [ 0, 2, 3, 8, 10, 11 ], [ 1, 2, 6, 7, 8, 9 ], [ 2, 3, 6, 8, 9, 10 ], [ 1, 3, 5, 8, 10, 11 ], [ 0, 1, 2, 7, 9, 11 ], [ 0, 2, 3, 6, 7, 11 ], [ 0, 5, 6, 8, 10, 11 ], [ 0, 4, 5, 6, 7, 8 ], [ 3, 5, 6, 8, 9, 11 ], [ 0, 1, 5, 7, 8, 10 ], [ 1, 4, 5, 6, 7, 9 ], [ 1, 2, 4, 8, 9, 11 ], [ 0, 2, 5, 7, 8, 9 ], [ 1, 2, 3, 4, 5, 6 ], [ 5, 6, 7, 8, 9, 10 ], [ 2, 4, 6, 8, 10, 11 ], [ 1, 5, 6, 7, 10, 11 ], [ 1, 2, 4, 6, 7, 11 ], [ 0, 3, 4, 7, 9, 11 ], [ 0, 4, 5, 8, 9, 11 ], [ 1, 3, 7, 8, 9, 10 ], [ 0, 2, 3, 7, 9, 10 ], [ 0, 5, 6, 7, 9, 11 ], [ 0, 2, 5, 6, 9, 10 ], [ 0, 1, 2, 3, 5, 10 ], [ 0, 1, 3, 5, 6, 11 ], [ 2, 4, 5, 7, 9, 11 ], [ 0, 3, 4, 5, 10, 11 ], [ 0, 1, 4, 6, 9, 11 ], [ 4, 5, 7, 8, 10, 11 ], [ 3, 4, 5, 6, 7, 11 ], [ 0, 1, 6, 7, 8, 11 ], [ 0, 2, 6, 7, 8, 10 ], [ 1, 2, 3, 4, 8, 10 ], [ 0, 1, 4, 8, 10, 11 ], [ 0, 1, 4, 7, 8, 9 ], [ 0, 3, 6, 7, 8, 9 ], [ 2, 5, 6, 7, 8, 11 ], [ 1, 3, 7, 8, 9, 10 ], [ 1, 2, 4, 6, 9, 10 ], [ 1, 2, 4, 5, 10, 11 ], [ 2, 4, 5, 6, 7, 10 ], [ 4, 5, 6, 9, 10, 11 ], [ 0, 3, 5, 8, 9, 10 ], [ 1, 2, 3, 4, 8, 10 ], [ 0, 2, 3, 7, 9, 10 ], [ 1, 2, 5, 6, 9, 11 ], [ 0, 1, 3, 7, 10, 11 ], [ 2, 3, 5, 6, 10, 11 ], [ 1, 3, 5, 6, 7, 8 ], [ 0, 1, 2, 7, 9, 11 ], [ 0, 1, 2, 8, 9, 10 ], [ 3, 5, 7, 9, 10, 11 ], [ 3, 4, 5, 7, 8, 9 ], [ 3, 5, 6, 8, 9, 11 ], [ 1, 2, 3, 6, 8, 11 ], [ 0, 3, 5, 7, 8, 11 ], [ 1, 4, 6, 7, 8, 10 ], [ 0, 1, 4, 5, 6, 10 ], [ 0, 2, 3, 6, 7, 11 ], [ 0, 2, 3, 4, 8, 9 ], [ 0, 2, 3, 4, 6, 10 ], [ 0, 3, 6, 9, 10, 11 ], [ 0, 1, 6, 7, 9, 10 ], [ 2, 3, 4, 6, 9, 11 ], [ 0, 3, 5, 8, 9, 10 ] ]; wt12_codewords:= [ [ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2 ], [ 1, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 1 ], [ 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 2, 1 ], [ 1, 1, 2, 1, 1, 2, 1, 1, 2, 1, 1, 2 ], [ 1, 1, 2, 1, 2, 1, 1, 2, 1, 2, 1, 1 ], [ 1, 1, 2, 2, 1, 1, 2, 2, 1, 1, 2, 2 ], [ 1, 2, 1, 1, 1, 1, 1, 2, 2, 1, 2, 1 ], [ 1, 2, 1, 1, 2, 1, 2, 1, 1, 1, 1, 2 ], [ 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2 ], [ 1, 2, 2, 1, 1, 2, 2, 1, 1, 2, 2, 1 ], [ 1, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2 ], [ 1, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1 ], [ 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2 ], [ 2, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1 ], [ 2, 1, 1, 2, 2, 1, 1, 2, 2, 1, 1, 2 ], [ 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1 ], [ 2, 1, 2, 2, 1, 2, 1, 2, 2, 2, 2, 1 ], [ 2, 1, 2, 2, 2, 2, 2, 1, 1, 2, 1, 2 ], [ 2, 2, 1, 1, 2, 2, 1, 1, 2, 2, 1, 1 ], [ 2, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2, 2 ], [ 2, 2, 1, 2, 2, 1, 2, 2, 1, 2, 2, 1 ], [ 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 1, 2 ], [ 2, 2, 2, 1, 2, 2, 1, 2, 1, 1, 2, 2 ], [ 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1 ] ];; hexad_codewords:=[[0, 0, 2, 2, 1, 1, 0, 0, 1, 1, 0, 0], [0, 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1], [0, 2, 2, 0, 1, 0, 0, 1, 1, 0, 0, 1], [0, 2, 0, 2, 2, 0, 2, 2, 0, 0, 0, 1], [0, 0, 2, 0, 0, 1, 1, 0, 1, 0, 1, 1], [1, 0, 2, 0, 2, 0, 0, 2, 0, 0, 1, 1], [0, 2, 0, 2, 2, 1, 0, 0, 0, 2, 2, 0], [0, 2, 1, 0, 1, 0, 0, 0, 2, 1, 2, 0], [0, 0, 0, 1, 1, 0, 0, 1, 1, 2, 2, 0], [2, 0, 0, 1, 0, 0, 1, 0, 1, 0, 2, 2], [1, 0, 1, 2, 0, 2, 1, 0, 1, 0, 0, 0], [1, 0, 0, 0, 1, 1, 0, 2, 0, 1, 2, 0], [0, 0, 0, 0, 1, 2, 0, 1, 2, 1, 0, 2], [0, 0, 1, 0, 1, 0, 1, 0, 1, 2, 0, 2], [1, 0, 0, 2, 2, 0, 1, 1, 0, 0, 2, 0], [1, 0, 1, 1, 2, 0, 2, 0, 0, 0, 0, 2], [0, 1, 0, 2, 0, 1, 0, 2, 0, 1, 0, 2], [0, 0, 1, 0, 0, 1, 1, 2, 2, 1, 0, 0], [0, 1, 1, 2, 2, 0, 1, 0, 0, 1, 0, 0], [0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 2], [1, 0, 1, 2, 1, 0, 0, 0, 0, 2, 1, 0], [2, 0, 1, 0, 0, 0, 2, 2, 1, 0, 0, 1], [1, 0, 0, 0, 1, 1, 0, 2, 0, 1, 2, 0], [1, 0, 0, 1, 2, 1, 0, 0, 1, 0, 1, 0], [0, 0, 1, 0, 2, 0, 2, 2, 0, 2, 2, 0], [2, 0, 0, 2, 2, 0, 2, 0, 1, 2, 0, 0], [0, 0, 1, 0, 1, 2, 0, 2, 1, 0, 1, 0], [2, 0, 2, 2, 0, 0, 0, 1, 1, 0, 1, 0], [2, 0, 0, 2, 0, 2, 2, 1, 0, 0, 0, 2], [0, 0, 2, 1, 0, 1, 0, 2, 0, 2, 1, 0], [0, 1, 0, 1, 0, 0, 0, 2, 1, 0, 1, 1], [0, 0, 0, 1, 2, 1, 2, 1, 0, 1, 0, 0], [1, 0, 1, 2, 0, 2, 1, 0, 1, 0, 0, 0], [1, 2, 2, 2, 2, 0, 0, 0, 2, 0, 0, 0], [2, 0, 1, 1, 0, 0, 1, 1, 0, 2, 0, 0], [2, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1], [1, 1, 0, 2, 0, 0, 0, 0, 1, 1, 2, 0], [0, 1, 0, 2, 2, 2, 0, 1, 1, 0, 0, 0], [1, 2, 1, 0, 1, 0, 1, 2, 0, 0, 0, 0], [0, 0, 0, 0, 1, 1, 2, 0, 2, 2, 1, 0], [2, 0, 1, 1, 0, 2, 0, 0, 0, 0, 1, 1], [0, 2, 0, 1, 1, 1, 0, 2, 2, 0, 0, 0], [0, 0, 1, 1, 0, 0, 2, 0, 1, 1, 1, 0], [0, 0, 0, 1, 0, 1, 0, 0, 2, 1, 2, 1], [0, 1, 2, 0, 1, 2, 1, 0, 2, 0, 0, 0], [0, 0, 0, 1, 2, 0, 1, 0, 0, 2, 1, 1], [1, 0, 0, 0, 1, 0, 2, 1, 0, 2, 0, 1], [0, 1, 0, 0, 2, 1, 1, 2, 0, 0, 1, 0], [2, 0, 2, 0, 0, 1, 0, 1, 0, 1, 0, 1], [0, 2, 2, 0, 0, 1, 0, 0, 2, 2, 0, 2], [1, 2, 0, 0, 0, 0, 0, 2, 2, 1, 0, 1], [0, 1, 2, 1, 0, 0, 0, 1, 2, 1, 0, 0], [2, 2, 0, 0, 0, 2, 0, 0, 0, 1, 2, 2], [1, 0, 2, 0, 2, 1, 1, 0, 0, 2, 0, 0], [1, 1, 0, 2, 1, 1, 2, 0, 0, 0, 0, 0], [0, 0, 2, 2, 0, 2, 0, 2, 2, 0, 0, 1], [0, 2, 2, 0, 2, 2, 0, 2, 0, 1, 0, 0], [0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 2, 2], [0, 0, 0, 1, 1, 0, 0, 1, 1, 2, 2, 0], [1, 2, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0], [0, 0, 0, 1, 1, 2, 2, 0, 1, 0, 0, 1], [1, 1, 1, 0, 2, 2, 0, 0, 0, 0, 2, 0], [0, 1, 0, 2, 0, 2, 1, 0, 0, 0, 2, 1], [0, 0, 0, 1, 2, 2, 0, 2, 0, 0, 2, 2], [1, 0, 1, 0, 2, 0, 0, 1, 1, 1, 0, 0], [0, 1, 2, 0, 0, 0, 1, 2, 0, 2, 0, 1], [0, 2, 0, 1, 2, 0, 0, 0, 1, 1, 0, 2], [0, 1, 0, 1, 1, 2, 0, 0, 0, 1, 1, 0], [0, 1, 0, 0, 0, 1, 2, 1, 2, 0, 0, 1], [0, 0, 1, 0, 2, 2, 1, 1, 0, 0, 0, 1], [2, 0, 0, 2, 0, 0, 0, 2, 0, 2, 2, 1], [0, 1, 0, 0, 1, 0, 2, 2, 1, 1, 0, 0], [2, 0, 1, 0, 2, 0, 1, 0, 2, 0, 1, 0], [0, 1, 0, 0, 2, 1, 1, 2, 0, 0, 1, 0], [0, 0, 1, 0, 0, 0, 0, 1, 2, 2, 1, 1], [1, 2, 0, 1, 0, 0, 2, 1, 1, 0, 0, 0], [1, 2, 1, 0, 0, 0, 0, 0, 1, 0, 1, 2], [2, 0, 1, 0, 0, 1, 0, 0, 1, 2, 2, 0], [1, 0, 0, 0, 0, 0, 1, 2, 1, 2, 1, 0], [2, 1, 0, 0, 0, 2, 2, 0, 1, 0, 1, 0], [0, 1, 1, 0, 0, 2, 0, 0, 1, 1, 0, 1], [2, 2, 0, 2, 1, 0, 0, 1, 0, 1, 0, 0], [0, 1, 0, 0, 0, 0, 1, 0, 2, 1, 1, 2], [1, 0, 0, 2, 2, 2, 0, 0, 0, 1, 0, 1], [2, 0, 0, 2, 0, 1, 1, 0, 0, 1, 1, 0], [0, 2, 2, 0, 0, 0, 2, 2, 2, 0, 1, 0], [1, 1, 1, 2, 0, 0, 0, 1, 0, 0, 0, 1], [1, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0], [1, 1, 2, 0, 1, 0, 0, 0, 0, 1, 0, 2], [0, 0, 2, 2, 1, 1, 0, 0, 1, 1, 0, 0], [0, 0, 1, 0, 1, 0, 1, 0, 1, 2, 0, 2], [1, 0, 0, 0, 1, 2, 1, 0, 0, 0, 1, 2], [2, 0, 1, 1, 0, 2, 0, 0, 0, 0, 1, 1], [0, 1, 0, 2, 1, 0, 0, 0, 2, 2, 0, 1], [1, 1, 2, 0, 0, 1, 0, 2, 1, 0, 0, 0], [2, 1, 1, 0, 0, 0, 0, 2, 0, 1, 1, 0], [0, 1, 0, 0, 2, 0, 0, 1, 0, 1, 2, 1], [1, 0, 2, 1, 1, 2, 0, 1, 0, 0, 0, 0], [1, 0, 2, 0, 0, 2, 0, 0, 2, 1, 1, 0], [2, 1, 0, 1, 0, 0, 2, 0, 0, 1, 0, 1], [0, 0, 1, 0, 0, 1, 1, 2, 2, 1, 0, 0], [1, 2, 0, 0, 0, 1, 1, 0, 2, 0, 2, 0], [1, 2, 0, 0, 2, 0, 2, 0, 0, 1, 1, 0], [1, 1, 0, 0, 1, 0, 0, 1, 2, 0, 1, 0], [0, 0, 0, 1, 2, 1, 2, 1, 0, 1, 0, 0], [0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0], [1, 1, 0, 1, 2, 0, 0, 2, 0, 2, 0, 0], [0, 2, 0, 2, 0, 2, 2, 0, 2, 1, 0, 0], [0, 2, 1, 1, 0, 0, 1, 0, 2, 0, 0, 1], [0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 2, 0], [0, 0, 0, 0, 2, 2, 1, 0, 1, 1, 2, 0], [0, 2, 1, 0, 2, 1, 2, 0, 1, 0, 0, 0], [1, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0, 2], [0, 1, 0, 1, 0, 1, 1, 0, 1, 2, 0, 0], [0, 2, 0, 2, 1, 0, 1, 0, 1, 0, 1, 0], [0, 1, 0, 0, 0, 1, 2, 1, 2, 0, 0, 1], [2, 1, 2, 2, 0, 2, 0, 0, 0, 2, 0, 0], [1, 2, 0, 0, 2, 1, 0, 1, 0, 0, 0, 2], [0, 2, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1], [1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 2, 1], [2, 1, 0, 1, 0, 0, 2, 0, 0, 1, 0, 1], [2, 0, 0, 1, 0, 2, 0, 2, 1, 1, 0, 0], [0, 0, 2, 2, 2, 0, 0, 1, 0, 2, 0, 2], [1, 2, 0, 0, 1, 2, 0, 0, 1, 2, 0, 0], [1, 2, 0, 1, 0, 0, 2, 1, 1, 0, 0, 0], [1, 0, 2, 1, 0, 0, 0, 0, 1, 2, 0, 1], [2, 0, 0, 2, 1, 2, 0, 0, 2, 0, 2, 0], [2, 1, 0, 0, 0, 0, 0, 1, 1, 2, 0, 2], [2, 0, 1, 0, 1, 2, 2, 0, 0, 1, 0, 0], [0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 2, 2], [1, 0, 0, 1, 0, 1, 1, 2, 0, 0, 0, 1], [0, 2, 1, 0, 0, 1, 0, 2, 0, 0, 2, 1], [1, 0, 0, 0, 0, 2, 0, 1, 1, 0, 2, 1], [0, 0, 0, 1, 2, 0, 1, 0, 0, 2, 1, 1], [2, 0, 2, 0, 0, 2, 1, 2, 0, 0, 2, 0], [0, 0, 0, 1, 0, 2, 1, 1, 2, 0, 1, 0], [2, 2, 2, 0, 1, 1, 0, 0, 0, 0, 1, 0], [0, 2, 2, 2, 0, 0, 0, 0, 0, 1, 1, 1], [0, 0, 0, 2, 1, 1, 0, 1, 0, 0, 1, 1], [1, 0, 1, 0, 1, 1, 0, 0, 2, 0, 0, 1], [0, 0, 1, 0, 2, 1, 0, 0, 0, 1, 1, 2], [1, 2, 1, 0, 1, 0, 1, 2, 0, 0, 0, 0], [1, 1, 1, 0, 0, 0, 2, 0, 2, 2, 0, 0], [0, 1, 2, 0, 2, 0, 0, 0, 1, 2, 1, 0], [2, 1, 0, 1, 0, 1, 0, 1, 0, 0, 2, 0], [1, 1, 0, 2, 0, 0, 0, 0, 1, 1, 2, 0], [0, 2, 0, 1, 0, 2, 0, 1, 0, 2, 0, 1], [0, 1, 1, 2, 0, 1, 0, 0, 2, 0, 1, 0], [0, 2, 0, 1, 0, 1, 2, 0, 0, 0, 1, 2], [1, 0, 0, 2, 0, 0, 2, 0, 2, 0, 1, 1], [0, 1, 1, 1, 0, 0, 0, 0, 0, 2, 2, 2], [0, 0, 1, 0, 0, 2, 2, 0, 2, 0, 2, 2], [1, 0, 0, 0, 2, 0, 0, 0, 2, 2, 2, 2], [0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 1, 0], [1, 1, 0, 0, 0, 2, 1, 1, 0, 1, 0, 0], [2, 2, 0, 2, 0, 1, 0, 0, 1, 0, 0, 1], [2, 0, 2, 0, 2, 2, 0, 0, 1, 0, 0, 2], [1, 1, 0, 2, 1, 1, 2, 0, 0, 0, 0, 0], [0, 1, 2, 0, 0, 1, 2, 0, 0, 1, 2, 0], [1, 0, 1, 2, 1, 0, 0, 0, 0, 2, 1, 0], [1, 0, 2, 0, 0, 0, 1, 1, 2, 0, 0, 2], [2, 1, 1, 0, 0, 0, 0, 2, 0, 1, 1, 0], [2, 2, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1], [1, 1, 2, 1, 0, 0, 1, 0, 0, 0, 1, 0], [1, 2, 1, 0, 0, 0, 0, 0, 1, 0, 1, 2], [0, 0, 1, 0, 1, 2, 0, 2, 1, 0, 1, 0], [0, 1, 0, 0, 1, 0, 2, 2, 1, 1, 0, 0], [0, 0, 2, 1, 2, 0, 1, 2, 1, 0, 0, 0], [1, 0, 0, 0, 0, 1, 2, 0, 1, 1, 0, 2], [0, 0, 0, 0, 0, 1, 1, 1, 0, 2, 2, 2], [2, 2, 0, 0, 2, 0, 0, 2, 1, 0, 2, 0], [2, 2, 2, 0, 0, 0, 1, 0, 1, 1, 0, 0], [0, 1, 0, 0, 2, 2, 2, 0, 0, 2, 0, 2], [0, 0, 1, 0, 2, 1, 0, 0, 0, 1, 1, 2], [1, 0, 1, 1, 0, 0, 0, 2, 2, 0, 2, 0], [0, 2, 2, 0, 2, 0, 1, 0, 0, 0, 2, 2], [0, 0, 0, 2, 0, 0, 1, 1, 1, 1, 0, 1], [0, 1, 2, 1, 2, 1, 0, 0, 0, 0, 0, 1], [0, 0, 1, 2, 2, 0, 0, 0, 1, 0, 2, 1], [0, 1, 2, 1, 0, 0, 0, 1, 2, 1, 0, 0], [0, 0, 0, 0, 0, 2, 2, 2, 0, 1, 1, 1], [0, 0, 1, 2, 0, 0, 1, 2, 0, 0, 1, 2], [0, 1, 1, 2, 2, 0, 1, 0, 0, 1, 0, 0], [0, 0, 0, 1, 0, 0, 2, 2, 2, 2, 0, 2], [0, 1, 2, 1, 2, 1, 0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 2, 0, 2, 1, 1, 0, 1, 2], [2, 0, 2, 0, 0, 1, 0, 1, 0, 1, 0, 1], [2, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0], [0, 1, 0, 0, 0, 0, 1, 0, 2, 1, 1, 2], [0, 0, 1, 1, 1, 0, 0, 2, 0, 1, 0, 1], [1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 2], [0, 0, 1, 0, 2, 2, 1, 1, 0, 0, 0, 1], [2, 2, 0, 0, 0, 1, 2, 2, 0, 2, 0, 0], [0, 2, 0, 2, 0, 0, 0, 1, 2, 0, 2, 2], [0, 0, 1, 2, 1, 0, 2, 1, 2, 0, 0, 0], [1, 1, 0, 0, 2, 0, 1, 0, 1, 0, 0, 1], [0, 0, 0, 1, 0, 2, 1, 1, 2, 0, 1, 0], [2, 2, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1], [0, 1, 2, 0, 0, 2, 0, 1, 0, 0, 1, 2], [2, 0, 0, 2, 0, 1, 1, 0, 0, 1, 1, 0], [2, 1, 0, 1, 0, 1, 0, 1, 0, 0, 2, 0], [0, 1, 0, 0, 2, 0, 0, 1, 0, 1, 2, 1], [0, 0, 1, 2, 0, 1, 2, 0, 0, 2, 0, 1], [2, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 2], [2, 0, 1, 0, 1, 0, 0, 1, 0, 0, 2, 2], [1, 0, 2, 0, 1, 0, 2, 0, 1, 0, 2, 0], [1, 2, 0, 1, 1, 0, 0, 0, 0, 0, 2, 1], [0, 0, 2, 0, 1, 0, 1, 1, 0, 1, 1, 0], [1, 0, 0, 1, 1, 0, 1, 0, 2, 1, 0, 0], [0, 0, 0, 1, 0, 1, 0, 0, 2, 1, 2, 1], [0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 2, 0], [2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0], [2, 0, 0, 1, 1, 0, 2, 2, 0, 0, 1, 0], [1, 0, 0, 0, 0, 2, 0, 1, 1, 0, 2, 1], [1, 0, 0, 0, 1, 0, 2, 1, 0, 2, 0, 1], [1, 0, 0, 0, 0, 1, 2, 0, 1, 1, 0, 2], [0, 2, 1, 1, 0, 0, 1, 0, 2, 0, 0, 1], [0, 0, 2, 1, 1, 0, 0, 0, 2, 0, 1, 2], [0, 1, 0, 2, 0, 0, 2, 1, 0, 2, 1, 0], [0, 1, 1, 1, 0, 2, 2, 2, 0, 0, 0, 0], [2, 0, 2, 2, 1, 0, 1, 0, 0, 0, 0, 1], [1, 0, 2, 1, 1, 2, 0, 1, 0, 0, 0, 0], [0, 1, 1, 0, 1, 1, 0, 1, 0, 2, 0, 0], [1, 1, 2, 0, 1, 0, 0, 0, 0, 1, 0, 2], [0, 0, 0, 1, 1, 2, 2, 0, 1, 0, 0, 1], [0, 2, 2, 0, 1, 0, 0, 1, 1, 0, 0, 1], [1, 0, 2, 1, 0, 0, 0, 0, 1, 2, 0, 1], [0, 0, 0, 0, 1, 0, 1, 2, 2, 0, 2, 1], [2, 2, 0, 0, 1, 0, 2, 0, 2, 0, 0, 2], [2, 0, 2, 0, 0, 0, 2, 0, 0, 2, 1, 2], [1, 0, 1, 0, 0, 1, 2, 1, 0, 0, 1, 0], [0, 1, 0, 0, 0, 2, 0, 2, 2, 2, 2, 0], [0, 0, 1, 0, 0, 0, 0, 1, 2, 2, 1, 1], [0, 0, 2, 2, 0, 0, 1, 0, 2, 2, 2, 0], [2, 2, 1, 2, 0, 0, 2, 0, 0, 0, 2, 0], [1, 0, 0, 0, 1, 2, 1, 0, 0, 0, 1, 2], [0, 2, 0, 1, 0, 0, 1, 2, 0, 1, 2, 0], [1, 0, 0, 2, 0, 1, 0, 1, 2, 2, 0, 0], [0, 0, 0, 0, 2, 1, 0, 2, 1, 2, 0, 1], [2, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0], [2, 0, 0, 1, 2, 0, 0, 1, 2, 0, 0, 1], [0, 2, 1, 1, 2, 0, 0, 1, 0, 0, 1, 0], [0, 2, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0], [0, 2, 2, 2, 0, 1, 1, 1, 0, 0, 0, 0], [2, 0, 0, 1, 1, 1, 0, 0, 0, 2, 0, 2], [0, 2, 1, 0, 0, 0, 2, 1, 0, 1, 0, 2], [2, 1, 0, 0, 1, 2, 0, 2, 0, 0, 0, 1], [2, 1, 0, 0, 1, 0, 1, 0, 0, 2, 2, 0], [0, 0, 2, 1, 0, 2, 1, 0, 0, 1, 0, 2], [0, 0, 1, 2, 0, 2, 0, 1, 0, 1, 2, 0], [0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 2], [0, 2, 0, 2, 1, 0, 1, 0, 1, 0, 1, 0], [1, 2, 0, 1, 1, 0, 0, 0, 0, 0, 2, 1], [1, 1, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1], [0, 1, 1, 0, 1, 0, 2, 0, 0, 0, 1, 1], [1, 0, 0, 0, 0, 0, 1, 2, 1, 2, 1, 0], [2, 0, 2, 0, 1, 0, 0, 2, 2, 2, 0, 0], [2, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 2], [0, 1, 1, 2, 0, 1, 0, 0, 2, 0, 1, 0], [1, 1, 2, 0, 0, 1, 0, 2, 1, 0, 0, 0], [2, 2, 2, 1, 0, 0, 0, 2, 0, 0, 0, 2], [2, 0, 1, 1, 0, 0, 1, 1, 0, 2, 0, 0], [1, 1, 0, 1, 0, 2, 0, 0, 2, 0, 0, 2], [0, 2, 1, 1, 2, 0, 0, 1, 0, 0, 1, 0]];;; wt6_codewords:=hexad_codewords; codewords_min_wt:=function(C) #returns all code words of minimum #weight (by a slow brute force search) #assumes MinimumDistance is correct local d,i,c,L; L:=[]; d:=MinimumDistance(C); for c in C do if d=WeightCodeword(c) then Add(L,c); fi; od; return L; end; codewords_wt:=function(C,k) #returns all code words of #weight k (by a slow brute force search) local i,c,L; L:=[]; for c in C do if k=WeightCodeword(c) then Add(L,c); fi; od; return L; end; support_3x4:=function(c) # c is a codeword in Golay 12,6,6 # returns 3x4 block version of c local i,j,A,c0; A:=[]; c0:=VectorCodeword(c); for i in [1..3] do A[i]:=[]; for j in [1..4] do A[i][j]:=c0[(i-1)*4+j]; od; od; return A; end; support2shuffle:=function(S) #S is a sublist of [1..12] local i,L; L:=[]; for i in S do if i=1 then Add(L,6); fi; if i=2 then Add(L,3); fi; if i=3 then Add(L,0); fi; if i=4 then Add(L,9); fi; if i=5 then Add(L,5); fi; if i=6 then Add(L,2); fi; if i=7 then Add(L,7); fi; if i=8 then Add(L,10); fi; if i=9 then Add(L,4); fi; if i=10 then Add(L,1); fi; if i=11 then Add(L,8); fi; if i=12 then Add(L,11); fi; od; return L; end; support_word:=function(c) #c is a list local i,S; S:=[]; for i in [1..Length(c)] do if c[i]<>0 then Add(S,i); fi; od; return S; end; hexad2support:=function(L) #L is a hexad in S(5,6,12) #returns "support" associated to L local i,L0,x,S,j,c,w; L0:=[]; for i in L do if i=0 then x:=3; fi; if i=1 then x:=10; fi; if i=2 then x:=6; fi; if i=3 then x:=2; fi; if i=4 then x:=9; fi; if i=5 then x:=5; fi; if i=6 then x:=1; fi; if i=7 then x:=7; fi; if i=8 then x:=11; fi; if i=9 then x:=4; fi; if i=10 then x:=8; fi; if i=11 then x:=12; fi; Add(L0,x); od; Sort(L0); return L0; end; ##"lookup table" hexad2codeword:=function(L) #L is a hexad in S(5,6,12) #returns all wt 6 codewords associated to L local i,L0,x,S,j,c,w,S1; #L0:=hexad2support(L); L0:=L; Sort(L0); for x in hexad_codewords do S:=support_word(x); S1:=support2shuffle(S); Sort(S1); #if S1[1]=L0[1] then Print(S1 in hexads," ",S1," ",L0," \n"); fi; if S1=L0 then return [x,2*x mod 3]; fi; od; return 0; end; best_wt12:=function(r) #returns the wt 12 codeword c (if any - 0 if not) #for which r+c has best weight local x,c,s,s0; s0:=Length(support_word(r)); s:=Length(support_word(r)); for x in wt12_codewords do #Print(x," ",(r+x) mod 3," \n"); if Length(support_word((r+x) mod 3))<=6 then s:=Length(support_word((r+x) mod 3)); c:=x; #Print(s," ",s0," ",AbsInt(6-Length(support_word((r+x) mod 3)))," ",AbsInt(6-s0)," ",x," ",support_word((r+x) mod 3)," \n\n"); fi; od; if sn then n:=Length(Intersection(s,x)); h:=x; Add(L0,x); #Print(s," ",x," ",Length(Intersection(s,x))," \n"); fi; od; return h; end; find_best_hexads:=function(L) #L is the support of some word, returns #hexad best matching L local i,j,n,h,x,s,L0,L1,m; s:=support2shuffle(L); n:=0; L0:=[]; for x in hexads do if Length(Intersection(s,x))>3 then Add(L0,x); fi; od; m:=Maximum(List(L0,x->Length(x))); L1:=[]; for x in L0 do if Length(x)=m then Add(L1,x); fi; od; return L1; end; decode2:=function(r) #does ordinary decoding if e=2 and partial list #decoding if e>2 local c,cp,cpp,i,H,m,C,rp,rpp,s,h,x,l1,l2; # decode small wt words if Length(support_word(r))<=2 then return [0,0,0,0,0,0,0,0,0,0,0,0]; fi; # decode large wt words if Length(support_word(r))>9 then for x in wt12_codewords do if Length(support_word((r+x) mod 3))<=2 then # Print("111111\n\n"); return -x mod 3; fi; od; fi; rp:=r; c:=[0,0,0,0,0,0,0,0,0,0,0,0]; for i in [1..100] do cp:=Random(wt6_codewords); rp:=(rp+cp) mod 3; c:=(c-cp) mod 3; if Length(support_word(rp))<=2 then return c; fi; od; Print("fail\n"); end; decode:=function(r) #does ordinary decoding if e=2 and partial list #decoding if e>2 local c,cp,cpp,i,H,m,C,rp,rpp,s,h,x,l1,l2,ell; ell:=Length(support_word(r)); # decode small wt words if ell<=2 then return [0,0,0,0,0,0,0,0,0,0,0,0]; fi; # decode large wt words if ell>9 then for x in wt12_codewords do if Length(support_word((r+x) mod 3))<=2 then return -x mod 3; fi; od; fi; if ell>=7 then cp:=best_wt12(r); fi; if ell<8 then cp:=[0,0,0,0,0,0,0,0,0,0,0,0]; fi; rp:=(r+cp) mod 3; if Length(support_word(rp))<=2 then return -cp mod 3; fi; s:=support_word(rp); H:=Set(find_best_hexads(s)); C:=[]; for h in H do cpp:=hexad2codeword(h); c:=(-cp-cpp[1]) mod 3; Add(C,c); c:=(-cp-cpp[2]) mod 3; Add(C,c); od; m:=Minimum(List(C,c->Length(support_word((r-c) mod 3)))); #Print(C," ------", m," \n\n"); for c in C do if Length(support_word((r-c) mod 3))=m then return c; fi; od; #return C; end;