Guest User

Untitled

a guest
Jan 17th, 2018
330
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.40 KB | None | 0 0
  1. UF UR UB UL DF DR DB DL FR FL BR BL UFR URB UBL ULF DRF DFL DLB DBR
  2.  
  3. D+ L2 U+ F+ D+ L+ D+ F+ U- F+
  4.  
  5. RU LF UB DR DL BL UL FU BD RF BR FD LDF LBD FUL RFD UFR RDB UBL RBU
  6.  
  7. 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
  8. UF UR UB UL DF DR DB DL FR FL BR BL UFR URB UBL ULF DRF DFL DLB DBR
  9.  
  10. Front:
  11.  
  12. +-------+-------+-------+
  13. / / / /|
  14. / 30 / 4 / 27 / |
  15. +-------+-------+-------+ |
  16. / / / /|28+
  17. / 6 / / 2 / | /|
  18. +-------+-------+-------+ |/ |
  19. / / / /|3 + |
  20. / 33 / 0 / 24 / | /|21+
  21. +-------+-------+-------+ |/ | /|
  22. | | | |26+ |/ |
  23. | 35 | 1 | 25 | /| + |
  24. | | | |/ | /|47+
  25. +-------+-------+-------+ |/ | /
  26. | | | |17+ |/
  27. | 18 | | 16 | /|11+
  28. | | | |/ | /
  29. +-------+-------+-------+ |/
  30. | | | |37+
  31. | 40 | 9 | 38 | /
  32. | | | |/
  33. +-------+-------+-------+
  34.  
  35.  
  36. Hidden faces:
  37.  
  38. +-------+-------+-------+
  39. /| | | |
  40. / | 31 | 5 | 29 |
  41. + | | | |
  42. /|32+-------+-------+-------+
  43. / | /| | | |
  44. + |/ | 22 | | 20 |
  45. /|7 + | | | |
  46. / | /|23+-------+-------+-------+
  47. + |/ | /| | | |
  48. |34+ |/ | 44 | 13 | 46 |
  49. | /| + | | | |
  50. |/ | /|43+-------+-------+-------+
  51. + |/ | / / / /
  52. |19+ |/ 42 / 12 / 45 /
  53. | /|15+-------+-------+-------+
  54. |/ | / / / /
  55. + |/ 14 / / 10 /
  56. |41+-------+-------+-------+
  57. | / / / /
  58. |/ 39 / 8 / 36 /
  59. +-------+-------+-------+
  60.  
  61. #include<iostream>
  62. #include<vector>
  63. #define G(i,x,y)for(int i=x;i^y;i++)
  64. #define h(x)s[a[x]/q*q+(a[x]+j)%q-42]
  65. #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);
  66. #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)}
  67. #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;}}}}
  68. 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
  69. 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
  70. 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}}
  71.  
  72. T=[]
  73. S=[0]*20,'QTRXadbhEIFJUVZYeijf',0
  74. I='FBRLUD'
  75.  
  76. G=[(~i%8,i/8-4)for i in map(ord,'ouf|/[bPcU`Dkqbx-Y:(+=P4cyrh=I;-(:R6')]
  77. R=range
  78.  
  79. def M(o,s,p):
  80. z=~p/2%-3;k=1
  81. 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
  82.  
  83. N=lambda p:sum([i<<i for i in R(4)for j in R(i)if p[j]<p[i]])
  84.  
  85. def H(i,t,s,n=0,d=()):
  86. 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]
  87. elif i>3:
  88. for j in s:l='UZifVYje'.find(j);t[l]=i;d+=(l-4,)[l<4:];n-=~i<<i;i+=l<4
  89. n+=N([t[j]^t[d[3]]for j in d])
  90. elif i>1:
  91. for j in s:n+=n+[j<'K',j in'QRab'][i&1]
  92. for j in t[13*i:][:11]:n+=j%(2+i)-n*~i
  93. return n
  94.  
  95. def P(i,m,t,s,l=''):
  96. for j in~-i,i:
  97. if T[j][H(j,t,s)]<m:return
  98. if~m<0:print l;return t,s
  99. for p in R(6):
  100. u=t[:];v=s[:]
  101. for n in 1,2,3:
  102. M(u,v,p);r=p<n%2*i or P(i,m+1,u,v,l+I[p]+`n`)
  103. if r>1:return r
  104.  
  105. s=raw_input().split()
  106. o=[-(p[-1]in'UD')or p[0]in'RL'or p[1]in'UD'for p in s]
  107. s=[chr(64+sum(1<<I.find(a)for a in x))for x in s]
  108.  
  109. for i in R(7):
  110. m=0;C={};T+=C,;x=[S]
  111. for j,k,d in x:
  112. h=H(i,j,k)
  113. for p in R(C.get(h,6)):
  114. C[h]=d;u=j[:];v=list(k)
  115. for n in i,0,i:M(u,v,p);x+=[(u[:],v[:],d-1)]*(p|1>n)
  116. if~i&1:
  117. while[]>d:d=P(i,m,o,s);m-=1
  118. o,s=d
  119.  
  120. $ more in.dat
  121. RU LF UB DR DL BL UL FU BD RF BR FD LDF LBD FUL RFD UFR RDB UBL RBU
  122.  
  123. $ pypy rubiks.py < in.dat
  124. F3R1U3D3B1
  125. F2R1F2R3F2U1R1L1
  126. R2U3F2U3F2U1R2U3R2U1
  127. F2L2B2R2U2L2D2L2F2
  128.  
  129. r=->y{y.split.map{|x|[*x.chars]}}
  130. G=r['UF UR UB UL DF DR DB DL FR FL BR BL UFR URB UBL ULF DRF DFL DLB DBR']
  131. o=r[gets]
  132. 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]
  133. 3.times{q.map{|e|q|=[e.tr('LFRB','FRBL')]}}
  134. w=->u{x.count{|t|u[t]!=G[t]}}
  135. s=w[o]
  136. (c=(0..rand(12)).map{q.sample}*''
  137. z=o
  138. 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}}
  139. t=w[z]
  140. (c.chars{|e|$><<e<<'1 '};o=z;s=t)if s>t
  141. )until s<1}
  142.  
  143. F1 R1 R1 F1 F1 F1 R1 R1 R1 L1 L1 L1 F1 D1 L1 L1 D1 D1 D1 D1 L1 B1 D1
  144. B1 B1 B1 L1 L1 L1 F1 D1 F1 F1 F1 L1 D1 L1 L1 L1 B1 D1 B1 B1 B1 R1 D1
  145. R1 R1 R1 L1 B1 D1 B1 B1 B1 L1 L1 L1 D1 D1 B1 D1 B1 B1 B1 B1 D1 B1 B1
  146. B1 L1 D1 L1 L1 L1 D1 D1 D1 D1 D1 R1 D1 R1 R1 R1 R1 F1 D1 F1 F1 F1 R1
  147. R1 R1 R1 D1 R1 R1 R1 F1 L1 D1 L1 L1 L1 F1 F1 F1 D1 D1 D1 D1 L1 D1 L1
  148. L1 L1 F1 L1 D1 L1 L1 L1 F1 F1 F1 D1 D1 L1 D1 L1 L1 L1 D1 L1 D1 L1 L1
  149. L1 L1 D1 L1 L1 L1 D1 R1 D1 D1 D1 R1 R1 R1 D1 D1 D1 B1 B1 B1 D1 B1 D1
  150. L1 D1 D1 D1 L1 L1 L1 D1 D1 D1 F1 F1 F1 D1 F1 D1 D1 D1 B1 B1 B1 D1 B1
  151. D1 R1 D1 D1 D1 R1 R1 R1 D1 D1 D1 B1 B1 B1 D1 B1 D1 R1 D1 D1 D1 R1 R1
  152. R1 D1 B1 D1 D1 D1 B1 B1 B1 D1 D1 D1 L1 L1 L1 D1 L1 D1 B1 D1 D1 D1 B1
  153. B1 B1 D1 D1 D1 L1 L1 L1 D1 L1 D1 D1 F1 D1 D1 D1 F1 F1 F1 D1 D1 D1 R1
  154. R1 R1 D1 R1 D1 D1 D1 R1 R1 R1 D1 R1 D1 F1 D1 D1 D1 F1 F1 F1 D1 B1 D1
  155. D1 D1 B1 B1 B1 D1 D1 D1 L1 L1 L1 D1 L1 D1 D1 D1 F1 F1 F1 D1 F1 D1 L1
  156. D1 D1 D1 L1 L1 L1 D1 D1 D1 D1 D1 D1 F1 F1 F1 D1 F1 D1 L1 D1 D1 D1 L1
  157. L1 L1 D1 D1 D1 F1 F1 F1 D1 F1 D1 L1 D1 D1 D1 L1 L1 L1 D1 F1 D1 D1 D1
  158. F1 F1 F1 D1 D1 D1 R1 R1 R1 D1 R1 D1 D1 D1 F1 F1 F1 D1 F1 D1 L1 D1 D1
  159. D1 L1 L1 L1 D1 D1 D1 F1 F1 F1 D1 F1 D1 L1 D1 D1 D1 L1 L1 L1 D1 D1 D1
  160. D1 D1 F1 F1 F1 D1 F1 D1 L1 D1 D1 D1 L1 L1 L1 D1 D1 D1 D1 D1 D1 R1 F1
  161. D1 F1 F1 F1 D1 D1 D1 R1 R1 R1 D1 F1 L1 D1 L1 L1 L1 D1 D1 D1 F1 F1 F1
  162. D1 B1 R1 D1 R1 R1 R1 D1 D1 D1 B1 B1 B1 D1 B1 R1 D1 R1 R1 R1 D1 D1 D1
  163. B1 B1 B1 D1 D1 D1 D1 B1 R1 D1 R1 R1 R1 D1 D1 D1 B1 B1 B1 D1 D1 D1 D1
  164. D1 D1 B1 B1 B1 D1 F1 D1 D1 D1 B1 D1 F1 F1 F1 D1 D1 D1 R1 R1 R1 D1 L1
  165. D1 D1 D1 R1 D1 L1 L1 L1 D1 D1 D1 B1 D1 D1 D1 F1 F1 F1 D1 B1 B1 B1 D1
  166. D1 D1 F1 D1 B1 B1 B1 D1 F1 D1 D1 D1 B1 D1 F1 F1 F1 D1 D1 D1 L1 D1 D1
  167. D1 R1 R1 R1 D1 L1 L1 L1 D1 D1 D1 R1 D1 F1 R1 R1 R1 F1 F1 F1 R1 F1 R1
  168. R1 R1 F1 F1 F1 R1 R1 R1 R1 D1 L1 D1 D1 D1 R1 D1 L1 L1 L1 D1 D1 D1 B1
  169. B1 B1 D1 F1 D1 D1 D1 B1 D1 F1 F1 F1 D1 D1 D1 F1 R1 R1 R1 F1 F1 F1 R1
  170. F1 R1 R1 R1 F1 F1 F1 R1 F1 D1 D1 D1 B1 B1 B1 D1 F1 F1 F1 D1 D1 D1 B1
  171. D1 F1 R1 R1 R1 F1 F1 F1 R1 F1 R1 R1 R1 F1 F1 F1 R1 F1 F1 F1 D1 B1 D1
  172. D1 D1 F1 D1 B1 B1 B1 D1 D1 D1 R1 D1 D1 D1 L1 L1 L1 D1 R1 R1 R1 D1 D1
  173. D1 L1 D1 R1 R1 R1 D1 L1 D1 D1 D1 R1 D1 L1 L1 L1 D1 D1 D1 R1 D1 D1 D1
  174. L1 L1 L1 D1 R1 R1 R1 D1 D1 D1 L1 D1 F1 F1 F1 D1 B1 D1 D1 D1 F1 D1 B1
  175. B1 B1 D1 D1 D1 L1 L1 L1 D1 R1 D1 D1 D1 L1 D1 R1 R1 R1 D1 D1 D1
  176.  
  177. (c.gsub(/(.)1*/){j=$&.size%4;$><<$1<<j<<' 'if j>0};o=z;s=t)if s>t
  178.  
  179. #include<iostream>
  180. #include<string>
  181. #include<vector>
  182. #include<map>
  183. #include<queue>
  184. #include<algorithm>
  185. #define R return
  186. #define W while
  187. #define F for(
  188. #define z s.begin()
  189. 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:;}}
  190.  
  191. U1F1L1L3F3B2U3R1U3B2L2F2U1L2U3L2U1F2D3R2U3L2B2U2R2D2L2F2F2F2L2F2U2L2D2U2
  192.  
  193. UFLL'F'UF2UDDU'L'R2UB2D2R2D'B2U'L2U2F2U'U2B2R2U2R2B2B2U2R2F2D2L2F2
Add Comment
Please, Sign In to add comment