Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- UF UR UB UL DF DR DB DL FR FL BR BL UFR URB UBL ULF DRF DFL DLB DBR
- D+ L2 U+ F+ D+ L+ D+ F+ U- F+
- RU LF UB DR DL BL UL FU BD RF BR FD LDF LBD FUL RFD UFR RDB UBL RBU
- 0-1 2-3 4-5 6-7 8-9 10-11 12-13 14-15 16-17 18-19 20-21 22-23 24-25-26 27-28-29 30-31-32 33-34-35 36-37-38 39-40-41 42-43-44 45-46-47
- UF UR UB UL DF DR DB DL FR FL BR BL UFR URB UBL ULF DRF DFL DLB DBR
- Front:
- +-------+-------+-------+
- / / / /|
- / 30 / 4 / 27 / |
- +-------+-------+-------+ |
- / / / /|28+
- / 6 / / 2 / | /|
- +-------+-------+-------+ |/ |
- / / / /|3 + |
- / 33 / 0 / 24 / | /|21+
- +-------+-------+-------+ |/ | /|
- | | | |26+ |/ |
- | 35 | 1 | 25 | /| + |
- | | | |/ | /|47+
- +-------+-------+-------+ |/ | /
- | | | |17+ |/
- | 18 | | 16 | /|11+
- | | | |/ | /
- +-------+-------+-------+ |/
- | | | |37+
- | 40 | 9 | 38 | /
- | | | |/
- +-------+-------+-------+
- Hidden faces:
- +-------+-------+-------+
- /| | | |
- / | 31 | 5 | 29 |
- + | | | |
- /|32+-------+-------+-------+
- / | /| | | |
- + |/ | 22 | | 20 |
- /|7 + | | | |
- / | /|23+-------+-------+-------+
- + |/ | /| | | |
- |34+ |/ | 44 | 13 | 46 |
- | /| + | | | |
- |/ | /|43+-------+-------+-------+
- + |/ | / / / /
- |19+ |/ 42 / 12 / 45 /
- | /|15+-------+-------+-------+
- |/ | / / / /
- + |/ 14 / / 10 /
- |41+-------+-------+-------+
- | / / / /
- |/ 39 / 8 / 36 /
- +-------+-------+-------+
- #include<iostream>
- #include<vector>
- #define G(i,x,y)for(int i=x;i^y;i++)
- #define h(x)s[a[x]/q*q+(a[x]+j)%q-42]
- #define B(x)D=x;E=O.substr(j*3,3);G(i,0,3)E+=F[5-F.find(E[2-i])];G(i,0,D.length())D[i]=E[F.find(D[i++])];m.push_back(D);
- #define P(a,b)G(i,0,6)G(k,49,52){e[0]=F[i];e[1]=k;m.push_back(e);}G(j,0,24){B(a)B(b)}
- #define T C();z=m.size();for(b=c;b;){d=s;G(i,o=w=1,4){w*=z;if(o)G(j,0,w)if(o){s=d;u=j;G(k,0,i){f=m[u%z];G(x,0,f.length()){a=M[F.find(f[x++])];G(i,0,f[x]-48)G(l,0,2){q=3-l;p=4*l;G(j,0,q){t=h(p+3);G(k,-3,0)h(p-k)=h(p-1-k);h(p)=t;}}}u/=z;}C();if(c<b){u=j;G(k,0,i){std::cout<<m[u%z];u/=z;}b=c;o=0;}}}}
- std::string s,a,D,E,d,f,e=" ",S="UFURUBULDFDRDBDLFRFLBRBLUFRURBUBLULFDRFDFLDLBDBR",F="ULFBRD",M[]={"KHEB*0.,","KRTI0<8@","KDNS*;2=","IVXG/@7>","BGWP,>4:","QNWT2468"},O=S.substr(24)+"FDRFRUFULFLDRDBRBURUFRFDBDLBLUBURBRDLDFLFULUBLBD";std::vector<std::string>m;int
- w,X=8,Y=16,o,c,u,b,z,p,q,t;void C(){c=0;G(i,X,Y)c+=s[i]!=S[i];}main(int
- g,char**v){G(i,1,g)s+=v[i];P("U2F1R1L3U2L1R3F1U2","L3R1F3L1R3D2L3R1F3L1R3");T;Y=24;T;X=0;T;m.clear();P("R3D3R1D3R3D2R1L1D1L3D1L1D2L3","R1F3L3F1R3F3L1F1");G(I,5,9){Y=I*6;T}}
- T=[]
- S=[0]*20,'QTRXadbhEIFJUVZYeijf',0
- I='FBRLUD'
- G=[(~i%8,i/8-4)for i in map(ord,'ouf|/[bPcU`Dkqbx-Y:(+=P4cyrh=I;-(:R6')]
- R=range
- def M(o,s,p):
- z=~p/2%-3;k=1
- for i,j in G[p::6]:i*=k;j*=k;o[i],o[j]=o[j]-z,o[i]+z;s[i],s[j]=s[j],s[i];k=-k
- N=lambda p:sum([i<<i for i in R(4)for j in R(i)if p[j]<p[i]])
- def H(i,t,s,n=0,d=()):
- if i>4:n=N(s[2-i::2]+s[7+i::2])*84+N(s[i&1::2])*6+divmod(N(s[8:]),24)[i&1]
- elif i>3:
- for j in s:l='UZifVYje'.find(j);t[l]=i;d+=(l-4,)[l<4:];n-=~i<<i;i+=l<4
- n+=N([t[j]^t[d[3]]for j in d])
- elif i>1:
- for j in s:n+=n+[j<'K',j in'QRab'][i&1]
- for j in t[13*i:][:11]:n+=j%(2+i)-n*~i
- return n
- def P(i,m,t,s,l=''):
- for j in~-i,i:
- if T[j][H(j,t,s)]<m:return
- if~m<0:print l;return t,s
- for p in R(6):
- u=t[:];v=s[:]
- for n in 1,2,3:
- M(u,v,p);r=p<n%2*i or P(i,m+1,u,v,l+I[p]+`n`)
- if r>1:return r
- s=raw_input().split()
- o=[-(p[-1]in'UD')or p[0]in'RL'or p[1]in'UD'for p in s]
- s=[chr(64+sum(1<<I.find(a)for a in x))for x in s]
- for i in R(7):
- m=0;C={};T+=C,;x=[S]
- for j,k,d in x:
- h=H(i,j,k)
- for p in R(C.get(h,6)):
- C[h]=d;u=j[:];v=list(k)
- for n in i,0,i:M(u,v,p);x+=[(u[:],v[:],d-1)]*(p|1>n)
- if~i&1:
- while[]>d:d=P(i,m,o,s);m-=1
- o,s=d
- $ more in.dat
- RU LF UB DR DL BL UL FU BD RF BR FD LDF LBD FUL RFD UFR RDB UBL RBU
- $ pypy rubiks.py < in.dat
- F3R1U3D3B1
- F2R1F2R3F2U1R1L1
- R2U3F2U3F2U1R2U3R2U1
- F2L2B2R2U2L2D2L2F2
- r=->y{y.split.map{|x|[*x.chars]}}
- G=r['UF UR UB UL DF DR DB DL FR FL BR BL UFR URB UBL ULF DRF DFL DLB DBR']
- o=r[gets]
- x=[];[[%w{U UU UUU L LL LLL}+D=%w{D DD DDD},0],[%w{FDFFF RFDFFFRRR}+D,12],[%w{DDDRRRDRDFDDDFFF DLDDDLLLDDDFFFDF}+D,8],[%w{DFLDLLLDDDFFF RDUUUFDUUULDUUUBDUUU}+D,4],[%w{LDDDRRRDLLLDDDRD RRRDLDDDRDLLLDDD LFFFLLLFLFFFLLLF},16]].map{|q,y|x+=[*y..y+3]
- 3.times{q.map{|e|q|=[e.tr('LFRB','FRBL')]}}
- w=->u{x.count{|t|u[t]!=G[t]}}
- s=w[o]
- (c=(0..rand(12)).map{q.sample}*''
- z=o
- c.chars{|m|z="=$'*:036".?BOHKVGRWZ!$@*-0C69<4(E\INQTMX!$'B-03<9*?6EHYLQPUZ!9'*-?360<$BSFKN[TWJ$'*!-0369<?BHKNEQTWZ!$'*6-039<?BEHKNTWZQ"[20*('FBLRUD'=~/#{m}/),20].bytes.map{|e|z[e/3-11].rotate e%3}}
- t=w[z]
- (c.chars{|e|$><<e<<'1 '};o=z;s=t)if s>t
- )until s<1}
- F1 R1 R1 F1 F1 F1 R1 R1 R1 L1 L1 L1 F1 D1 L1 L1 D1 D1 D1 D1 L1 B1 D1
- B1 B1 B1 L1 L1 L1 F1 D1 F1 F1 F1 L1 D1 L1 L1 L1 B1 D1 B1 B1 B1 R1 D1
- R1 R1 R1 L1 B1 D1 B1 B1 B1 L1 L1 L1 D1 D1 B1 D1 B1 B1 B1 B1 D1 B1 B1
- B1 L1 D1 L1 L1 L1 D1 D1 D1 D1 D1 R1 D1 R1 R1 R1 R1 F1 D1 F1 F1 F1 R1
- R1 R1 R1 D1 R1 R1 R1 F1 L1 D1 L1 L1 L1 F1 F1 F1 D1 D1 D1 D1 L1 D1 L1
- L1 L1 F1 L1 D1 L1 L1 L1 F1 F1 F1 D1 D1 L1 D1 L1 L1 L1 D1 L1 D1 L1 L1
- L1 L1 D1 L1 L1 L1 D1 R1 D1 D1 D1 R1 R1 R1 D1 D1 D1 B1 B1 B1 D1 B1 D1
- L1 D1 D1 D1 L1 L1 L1 D1 D1 D1 F1 F1 F1 D1 F1 D1 D1 D1 B1 B1 B1 D1 B1
- D1 R1 D1 D1 D1 R1 R1 R1 D1 D1 D1 B1 B1 B1 D1 B1 D1 R1 D1 D1 D1 R1 R1
- R1 D1 B1 D1 D1 D1 B1 B1 B1 D1 D1 D1 L1 L1 L1 D1 L1 D1 B1 D1 D1 D1 B1
- B1 B1 D1 D1 D1 L1 L1 L1 D1 L1 D1 D1 F1 D1 D1 D1 F1 F1 F1 D1 D1 D1 R1
- R1 R1 D1 R1 D1 D1 D1 R1 R1 R1 D1 R1 D1 F1 D1 D1 D1 F1 F1 F1 D1 B1 D1
- D1 D1 B1 B1 B1 D1 D1 D1 L1 L1 L1 D1 L1 D1 D1 D1 F1 F1 F1 D1 F1 D1 L1
- D1 D1 D1 L1 L1 L1 D1 D1 D1 D1 D1 D1 F1 F1 F1 D1 F1 D1 L1 D1 D1 D1 L1
- L1 L1 D1 D1 D1 F1 F1 F1 D1 F1 D1 L1 D1 D1 D1 L1 L1 L1 D1 F1 D1 D1 D1
- F1 F1 F1 D1 D1 D1 R1 R1 R1 D1 R1 D1 D1 D1 F1 F1 F1 D1 F1 D1 L1 D1 D1
- D1 L1 L1 L1 D1 D1 D1 F1 F1 F1 D1 F1 D1 L1 D1 D1 D1 L1 L1 L1 D1 D1 D1
- D1 D1 F1 F1 F1 D1 F1 D1 L1 D1 D1 D1 L1 L1 L1 D1 D1 D1 D1 D1 D1 R1 F1
- D1 F1 F1 F1 D1 D1 D1 R1 R1 R1 D1 F1 L1 D1 L1 L1 L1 D1 D1 D1 F1 F1 F1
- D1 B1 R1 D1 R1 R1 R1 D1 D1 D1 B1 B1 B1 D1 B1 R1 D1 R1 R1 R1 D1 D1 D1
- B1 B1 B1 D1 D1 D1 D1 B1 R1 D1 R1 R1 R1 D1 D1 D1 B1 B1 B1 D1 D1 D1 D1
- D1 D1 B1 B1 B1 D1 F1 D1 D1 D1 B1 D1 F1 F1 F1 D1 D1 D1 R1 R1 R1 D1 L1
- D1 D1 D1 R1 D1 L1 L1 L1 D1 D1 D1 B1 D1 D1 D1 F1 F1 F1 D1 B1 B1 B1 D1
- D1 D1 F1 D1 B1 B1 B1 D1 F1 D1 D1 D1 B1 D1 F1 F1 F1 D1 D1 D1 L1 D1 D1
- D1 R1 R1 R1 D1 L1 L1 L1 D1 D1 D1 R1 D1 F1 R1 R1 R1 F1 F1 F1 R1 F1 R1
- R1 R1 F1 F1 F1 R1 R1 R1 R1 D1 L1 D1 D1 D1 R1 D1 L1 L1 L1 D1 D1 D1 B1
- B1 B1 D1 F1 D1 D1 D1 B1 D1 F1 F1 F1 D1 D1 D1 F1 R1 R1 R1 F1 F1 F1 R1
- F1 R1 R1 R1 F1 F1 F1 R1 F1 D1 D1 D1 B1 B1 B1 D1 F1 F1 F1 D1 D1 D1 B1
- D1 F1 R1 R1 R1 F1 F1 F1 R1 F1 R1 R1 R1 F1 F1 F1 R1 F1 F1 F1 D1 B1 D1
- D1 D1 F1 D1 B1 B1 B1 D1 D1 D1 R1 D1 D1 D1 L1 L1 L1 D1 R1 R1 R1 D1 D1
- D1 L1 D1 R1 R1 R1 D1 L1 D1 D1 D1 R1 D1 L1 L1 L1 D1 D1 D1 R1 D1 D1 D1
- L1 L1 L1 D1 R1 R1 R1 D1 D1 D1 L1 D1 F1 F1 F1 D1 B1 D1 D1 D1 F1 D1 B1
- B1 B1 D1 D1 D1 L1 L1 L1 D1 R1 D1 D1 D1 L1 D1 R1 R1 R1 D1 D1 D1
- (c.gsub(/(.)1*/){j=$&.size%4;$><<$1<<j<<' 'if j>0};o=z;s=t)if s>t
- #include<iostream>
- #include<string>
- #include<vector>
- #include<map>
- #include<queue>
- #include<algorithm>
- #define R return
- #define W while
- #define F for(
- #define z s.begin()
- using namespace std;typedef int _;typedef vector<_>v;_ p,x=12,y=20,O[]={0,262143,259263,74943,74898},A[][8]={0,1,2,3,0,1,2,3,4,7,6,5,4,5,6,7,0,9,4,8,0,3,5,4,2,10,6,11,2,1,7,6,3,11,7,9,3,2,6,5,1,8,5,10,1,0,4,7};v M(_ m,v s){_ t=m%3+1,f=m/3;W(t--){v o=s;F _ i=0;i<8;i++){_ C=i>3,T=A[f][i]+C*x,k=A[f][(i&3)==3?i-3:i+1]+C*x;s[T]=o[k];s[T+y]=o[k+y]+(i<4)?(f>1&&f<4):(f<2)?0:2-(i&1);if(!t)s[T+y]%=2+C;}}R s;}_ I(_ m){R m+2-m%3*2;}v id(v s){if(p<2)R v(z+y,z+32);if(p<3){v r(z+31,z+40);F _ e=0;e<x;e++)r[0]|=(s[e]/8)<<e;R r;}if(p<4){v r(3);F _ e=0;e<x;e++)r[0]|=(s[e]>7?2:(s[e]&1))<<2*e;F _ c=0;c<8;c++)r[1]|=((s[c+x]-x)&5)<<3*c;F _ i=x;i<y;i++)F _ j=i+1;j<y;j++)r[2]^=s[i]>s[j];R r;}R s;}main(_ C,char**r){string g[]={"UF","UR","UB","UL","DF","DR","DB","DL","FR","FL","BR","BL","UFR","URB","UBL","ULF","DRF","DFL","DLB","DBR"};v S(40),G(40);F _ i=0;i<y;i++){G[i]=i;string c=r[i+1];W((S[i]=find(g,g+y,c)-g)==y){c=c.substr(1)+c[0];S[i+y]++;}}W(++p<5){v J=id(S),D=id(G);if(J==D)continue;queue<v>q;q.push(S);q.push(G);map<v,v>P;map<v,_>Q,L;Q[J]=1;Q[D]=2;F;;){v E=q.front();q.pop();v X=id(E);_&d=Q[X];F _ m=0;m<18;m++){if(O[p]&1<<m){v U=M(m,E);v B=id(U);_&N=Q[B];if(N&&N!=d){if(d>1){swap(B,X);m=I(m);}v a(1,m);W(X!=J){a.insert(a.begin(),L[X]);X=P[X];}W(B!=D){a.push_back(I(L[B]));B=P[B];}F _ i=0;i<(_)a.size();i++){cout<<"UDFBLR"[a[i]/3]<<a[i]%3+1;S=M(a[i],S);}goto P;}if(!N){q.push(U);N=d;L[B]=m;P[B]=X;}}}}P:;}}
- U1F1L1L3F3B2U3R1U3B2L2F2U1L2U3L2U1F2D3R2U3L2B2U2R2D2L2F2F2F2L2F2U2L2D2U2
- UFLL'F'UF2UDDU'L'R2UB2D2R2D'B2U'L2U2F2U'U2B2R2U2R2B2B2U2R2F2D2L2F2
Add Comment
Please, Sign In to add comment