#!/bin/sh cat >/tmp/m.cpp <<'CPP' #include #include #include #include using namespace std@using ull=unsigned long long@ struct N{ull k@int par@unsigned char move,dep@}@ string P[6]={"DABCEFGHLIJKMNOPQRST","EBCAHFGDQJKLTNOPMRSI","BFCDAEGHIRKLMQOPJNST","ABCDFGHEIJKLNOPMQRST","ACGDEBFHIJSLMNRPQKOT","ABDHEFCGIJKTMNOSQRLP"}@ int O[6][20]={{},{2,0,0,1,1,0,0,2},{1,2,0,0,2,1,0,0,0,1,0,0,0,1,0,0,1,1},{},{0,1,2,0,0,2,1},{0,0,1,2,0,0,2,1,0,0,0,1,0,0,0,1,0,0,1,1}}@int E[18][24],C[18][24]@ ull turn(ull k,int m){ull r=0@for(int i=0@i<6@i++)r|=ull(E[m][(k>>(5*i))&31])<<(5*i)@for(int i=6@i<8@i++)r|=ull(C[m][(k>>(5*i))&31])<<(5*i)@return r@} int main(){for(int m=0@m<18@m++)for(int v=0@v<24@v++){int f=m/3,pow=m%3+1,x=v,y=v@for(int t=0@t B@B.reserve(70000)@unordered_map H@H.reserve(80000)@B.push_back({goal,-1,255,0})@H.emplace(goal,0)@for(int i=0@i<(int)B.size()@i++){auto n=B[i]@if(n.dep==4)continue@for(int m=0@m<18@m++){ull v=turn(n.k,m)@if(H.emplace(v,B.size()).second)B.push_back({v,i,(unsigned char)m,(unsigned char)(n.dep+1)})@}} vector F@F.reserve(70000)@unordered_map HF@HF.reserve(80000)@F.push_back({start,-1,255,0})@HF.emplace(start,0)@int best=100,fi=-1,bi=-1@for(int i=0@i<(int)F.size()@i++){auto n=F[i]@auto it=H.find(n.k)@if(it!=H.end()){int d=n.dep+B[it->second].dep@if(dsecond@}}if(n.dep==4)continue@for(int m=0@m<18@m++){ull v=turn(n.k,m)@if(HF.emplace(v,F.size()).second)F.push_back({v,i,(unsigned char)m,(unsigned char)(n.dep+1)})@}} cerr<<"B "<=0){vector v@for(int i=fi@F[i].par>=0@i=F[i].par)v.push_back(F[i].move)@reverse(v.begin(),v.end())@for(int i=bi@B[i].par>=0@i=B[i].par)v.push_back(B[i].move/3*3+(2-B[i].move%3))@for(int m:v)cout<<"URFDLB"[m/3]<<".2'"[m%3]<<' '@cout</tmp/m2.cpp c++ -O2 -std=c++17 /tmp/m2.cpp -o /tmp/m && /tmp/m