fork download
  1. #include <iostream>
  2. #include <chrono>
  3.  
  4. /*
  5. 286 デフォルトの名無しさん 2020/04/24(金) 20:56:21.49 ID:pA5GOauV
  6.  
  7. お題
  8. XORゲートは4つのNANDゲートで構成できることが知られている
  9. この構成方法をプログラムで探索せよ
  10.  
  11. i番目のNANDゲートの入力を(ai,bi)、出力をciとする
  12. XORゲートの入力を(X,Y)、出力をZとする
  13.  
  14. 出力例
  15. X->a1
  16. Y->b1
  17. X->a2
  18. c1->b2
  19. Y->a3
  20. c1->b3
  21. c2->a4
  22. c3->b4
  23. c4->Z
  24.  
  25. */
  26.  
  27. const int NandPiece = 4;
  28. const int OutputMax = 2 + NandPiece;
  29. const int InputMax = 2 * NandPiece;
  30. const char* Ntbl[OutputMax] = { " X"," Y","c1","c2","c3","c4" };
  31.  
  32. int ans = 0;
  33. int ab[InputMax] = {0,0,0,0,0,0,0,0};
  34.  
  35. void print_map2( const int* ab, int z ){
  36. for( int i = 0; i < InputMax; ++i ){
  37. std::cout << Ntbl[ ab[i] ] << " ";
  38. }
  39. std::cout << Ntbl[z] << std::endl;
  40. }
  41.  
  42. void print_map( const int* ab, int z ){
  43. for( int i = 0; i < InputMax; ++i ){
  44. std::cout << Ntbl[ab[i]] << " -> " << "ab"[i & 1] << 1+(i >> 1) << std::endl;
  45. }
  46. std::cout << Ntbl[z] << " -> Z" << std::endl << std::endl;
  47. }
  48.  
  49. void check( const int ab[InputMax] ){
  50. bool fc[OutputMax] = { true, true, false, false, false, false };
  51. int nn = NandPiece;
  52. int oc[OutputMax] = { 0b1010, 0b1100, 0,0,0,0 };
  53. for( int j = NandPiece; j > 0; j-- ){
  54. bool nf = false;
  55. for( int cn = 0; cn < NandPiece; ++cn ){
  56. if( fc[cn+2] ) continue;
  57. int a = ab[2*cn];
  58. int b = ab[2*cn+1];
  59. if( !( fc[a] && fc[b] ) ) continue;
  60. oc[cn+2] = ( oc[a] & oc[b] ) ^ 0b1111;
  61. fc[cn+2] = true;
  62. nn --;
  63. nf = true;
  64. }
  65. if( nn == 0 ) break;
  66. if( !nf ) return;
  67. }
  68. for( int i = 2; i < OutputMax; ++i ){
  69. if( oc[i] != 0b0110 ) continue;
  70. ++ ans;
  71. print_map2( ab, i );
  72. break;
  73. }
  74. }
  75.  
  76. void solve( int ab[InputMax], int n = 0 )
  77. {
  78. do {
  79. if( n < InputMax-1 ){
  80. solve( ab, n + 1 );
  81. }
  82. else if( n == InputMax-1 ){
  83. int bm = 0;
  84. for( int i = 0; i < InputMax; ++i ){
  85. bm |= 1 << ab[i];
  86. }
  87. if( bm == 0b011111 || bm == 0b101111 || bm == 0b110111 || bm == 0b111011 ){
  88. check( ab );
  89. }
  90. }
  91. ab[n] += 1;
  92. if( (n >> 1) == (ab[n] - 2) ){
  93. ++ ab[n];
  94. }
  95. } while( ab[n] <= OutputMax-1 );
  96. ab[n] = 0;
  97. }
  98.  
  99. /////////////////////////////////////////////////////////////////////
  100.  
  101. int main()
  102. {
  103. std::chrono::system_clock::time_point start, end;
  104. start = std::chrono::system_clock::now();
  105.  
  106. solve( ab );
  107. std::cout << "Done. " << ans << std::endl;
  108.  
  109. end = std::chrono::system_clock::now();
  110. std::cout << std::chrono::duration_cast<std::chrono::milliseconds>( end-start ).count() << "[ms]" << std::endl;
  111. }
  112.  
  113.  
Success #stdin #stdout 0.01s 4184KB
stdin
Standard input is empty
stdout
 X  Y  X c1  Y c1 c2 c3 c4
 X  Y  X c1  Y c1 c3 c2 c4
 X  Y  X c1 c1  Y c2 c3 c4
 X  Y  X c1 c1  Y c3 c2 c4
 X  Y  X c1 c2 c4  Y c1 c3
 X  Y  X c1 c2 c4 c1  Y c3
 X  Y  X c1 c4 c2  Y c1 c3
 X  Y  X c1 c4 c2 c1  Y c3
 X  Y  Y c1  X c1 c2 c3 c4
 X  Y  Y c1  X c1 c3 c2 c4
 X  Y  Y c1 c1  X c2 c3 c4
 X  Y  Y c1 c1  X c3 c2 c4
 X  Y  Y c1 c2 c4  X c1 c3
 X  Y  Y c1 c2 c4 c1  X c3
 X  Y  Y c1 c4 c2  X c1 c3
 X  Y  Y c1 c4 c2 c1  X c3
 X  Y c1  X  Y c1 c2 c3 c4
 X  Y c1  X  Y c1 c3 c2 c4
 X  Y c1  X c1  Y c2 c3 c4
 X  Y c1  X c1  Y c3 c2 c4
 X  Y c1  X c2 c4  Y c1 c3
 X  Y c1  X c2 c4 c1  Y c3
 X  Y c1  X c4 c2  Y c1 c3
 X  Y c1  X c4 c2 c1  Y c3
 X  Y c1  Y  X c1 c2 c3 c4
 X  Y c1  Y  X c1 c3 c2 c4
 X  Y c1  Y c1  X c2 c3 c4
 X  Y c1  Y c1  X c3 c2 c4
 X  Y c1  Y c2 c4  X c1 c3
 X  Y c1  Y c2 c4 c1  X c3
 X  Y c1  Y c4 c2  X c1 c3
 X  Y c1  Y c4 c2 c1  X c3
 X  Y c3 c4  X c1  Y c1 c2
 X  Y c3 c4  X c1 c1  Y c2
 X  Y c3 c4  Y c1  X c1 c2
 X  Y c3 c4  Y c1 c1  X c2
 X  Y c3 c4 c1  X  Y c1 c2
 X  Y c3 c4 c1  X c1  Y c2
 X  Y c3 c4 c1  Y  X c1 c2
 X  Y c3 c4 c1  Y c1  X c2
 X  Y c4 c3  X c1  Y c1 c2
 X  Y c4 c3  X c1 c1  Y c2
 X  Y c4 c3  Y c1  X c1 c2
 X  Y c4 c3  Y c1 c1  X c2
 X  Y c4 c3 c1  X  Y c1 c2
 X  Y c4 c3 c1  X c1  Y c2
 X  Y c4 c3 c1  Y  X c1 c2
 X  Y c4 c3 c1  Y c1  X c2
 X c2  X  Y  Y c2 c1 c3 c4
 X c2  X  Y  Y c2 c3 c1 c4
 X c2  X  Y c1 c4  Y c2 c3
 X c2  X  Y c1 c4 c2  Y c3
 X c2  X  Y c2  Y c1 c3 c4
 X c2  X  Y c2  Y c3 c1 c4
 X c2  X  Y c4 c1  Y c2 c3
 X c2  X  Y c4 c1 c2  Y c3
 X c2  Y  X  Y c2 c1 c3 c4
 X c2  Y  X  Y c2 c3 c1 c4
 X c2  Y  X c1 c4  Y c2 c3
 X c2  Y  X c1 c4 c2  Y c3
 X c2  Y  X c2  Y c1 c3 c4
 X c2  Y  X c2  Y c3 c1 c4
 X c2  Y  X c4 c1  Y c2 c3
 X c2  Y  X c4 c1 c2  Y c3
 X c3  Y c3  X  Y c1 c2 c4
 X c3  Y c3  X  Y c2 c1 c4
 X c3  Y c3  Y  X c1 c2 c4
 X c3  Y c3  Y  X c2 c1 c4
 X c3 c1 c4  X  Y  Y c3 c2
 X c3 c1 c4  X  Y c3  Y c2
 X c3 c1 c4  Y  X  Y c3 c2
 X c3 c1 c4  Y  X c3  Y c2
 X c3 c3  Y  X  Y c1 c2 c4
 X c3 c3  Y  X  Y c2 c1 c4
 X c3 c3  Y  Y  X c1 c2 c4
 X c3 c3  Y  Y  X c2 c1 c4
 X c3 c4 c1  X  Y  Y c3 c2
 X c3 c4 c1  X  Y c3  Y c2
 X c3 c4 c1  Y  X  Y c3 c2
 X c3 c4 c1  Y  X c3  Y c2
 X c4  Y c4 c1 c2  X  Y c3
 X c4  Y c4 c1 c2  Y  X c3
 X c4  Y c4 c2 c1  X  Y c3
 X c4  Y c4 c2 c1  Y  X c3
 X c4 c1 c3  Y c4  X  Y c2
 X c4 c1 c3  Y c4  Y  X c2
 X c4 c1 c3 c4  Y  X  Y c2
 X c4 c1 c3 c4  Y  Y  X c2
 X c4 c3 c1  Y c4  X  Y c2
 X c4 c3 c1  Y c4  Y  X c2
 X c4 c3 c1 c4  Y  X  Y c2
 X c4 c3 c1 c4  Y  Y  X c2
 X c4 c4  Y c1 c2  X  Y c3
 X c4 c4  Y c1 c2  Y  X c3
 X c4 c4  Y c2 c1  X  Y c3
 X c4 c4  Y c2 c1  Y  X c3
 Y  X  X c1  Y c1 c2 c3 c4
 Y  X  X c1  Y c1 c3 c2 c4
 Y  X  X c1 c1  Y c2 c3 c4
 Y  X  X c1 c1  Y c3 c2 c4
 Y  X  X c1 c2 c4  Y c1 c3
 Y  X  X c1 c2 c4 c1  Y c3
 Y  X  X c1 c4 c2  Y c1 c3
 Y  X  X c1 c4 c2 c1  Y c3
 Y  X  Y c1  X c1 c2 c3 c4
 Y  X  Y c1  X c1 c3 c2 c4
 Y  X  Y c1 c1  X c2 c3 c4
 Y  X  Y c1 c1  X c3 c2 c4
 Y  X  Y c1 c2 c4  X c1 c3
 Y  X  Y c1 c2 c4 c1  X c3
 Y  X  Y c1 c4 c2  X c1 c3
 Y  X  Y c1 c4 c2 c1  X c3
 Y  X c1  X  Y c1 c2 c3 c4
 Y  X c1  X  Y c1 c3 c2 c4
 Y  X c1  X c1  Y c2 c3 c4
 Y  X c1  X c1  Y c3 c2 c4
 Y  X c1  X c2 c4  Y c1 c3
 Y  X c1  X c2 c4 c1  Y c3
 Y  X c1  X c4 c2  Y c1 c3
 Y  X c1  X c4 c2 c1  Y c3
 Y  X c1  Y  X c1 c2 c3 c4
 Y  X c1  Y  X c1 c3 c2 c4
 Y  X c1  Y c1  X c2 c3 c4
 Y  X c1  Y c1  X c3 c2 c4
 Y  X c1  Y c2 c4  X c1 c3
 Y  X c1  Y c2 c4 c1  X c3
 Y  X c1  Y c4 c2  X c1 c3
 Y  X c1  Y c4 c2 c1  X c3
 Y  X c3 c4  X c1  Y c1 c2
 Y  X c3 c4  X c1 c1  Y c2
 Y  X c3 c4  Y c1  X c1 c2
 Y  X c3 c4  Y c1 c1  X c2
 Y  X c3 c4 c1  X  Y c1 c2
 Y  X c3 c4 c1  X c1  Y c2
 Y  X c3 c4 c1  Y  X c1 c2
 Y  X c3 c4 c1  Y c1  X c2
 Y  X c4 c3  X c1  Y c1 c2
 Y  X c4 c3  X c1 c1  Y c2
 Y  X c4 c3  Y c1  X c1 c2
 Y  X c4 c3  Y c1 c1  X c2
 Y  X c4 c3 c1  X  Y c1 c2
 Y  X c4 c3 c1  X c1  Y c2
 Y  X c4 c3 c1  Y  X c1 c2
 Y  X c4 c3 c1  Y c1  X c2
 Y c2  X  Y  X c2 c1 c3 c4
 Y c2  X  Y  X c2 c3 c1 c4
 Y c2  X  Y c1 c4  X c2 c3
 Y c2  X  Y c1 c4 c2  X c3
 Y c2  X  Y c2  X c1 c3 c4
 Y c2  X  Y c2  X c3 c1 c4
 Y c2  X  Y c4 c1  X c2 c3
 Y c2  X  Y c4 c1 c2  X c3
 Y c2  Y  X  X c2 c1 c3 c4
 Y c2  Y  X  X c2 c3 c1 c4
 Y c2  Y  X c1 c4  X c2 c3
 Y c2  Y  X c1 c4 c2  X c3
 Y c2  Y  X c2  X c1 c3 c4
 Y c2  Y  X c2  X c3 c1 c4
 Y c2  Y  X c4 c1  X c2 c3
 Y c2  Y  X c4 c1 c2  X c3
 Y c3  X c3  X  Y c1 c2 c4
 Y c3  X c3  X  Y c2 c1 c4
 Y c3  X c3  Y  X c1 c2 c4
 Y c3  X c3  Y  X c2 c1 c4
 Y c3 c1 c4  X  Y  X c3 c2
 Y c3 c1 c4  X  Y c3  X c2
 Y c3 c1 c4  Y  X  X c3 c2
 Y c3 c1 c4  Y  X c3  X c2
 Y c3 c3  X  X  Y c1 c2 c4
 Y c3 c3  X  X  Y c2 c1 c4
 Y c3 c3  X  Y  X c1 c2 c4
 Y c3 c3  X  Y  X c2 c1 c4
 Y c3 c4 c1  X  Y  X c3 c2
 Y c3 c4 c1  X  Y c3  X c2
 Y c3 c4 c1  Y  X  X c3 c2
 Y c3 c4 c1  Y  X c3  X c2
 Y c4  X c4 c1 c2  X  Y c3
 Y c4  X c4 c1 c2  Y  X c3
 Y c4  X c4 c2 c1  X  Y c3
 Y c4  X c4 c2 c1  Y  X c3
 Y c4 c1 c3  X c4  X  Y c2
 Y c4 c1 c3  X c4  Y  X c2
 Y c4 c1 c3 c4  X  X  Y c2
 Y c4 c1 c3 c4  X  Y  X c2
 Y c4 c3 c1  X c4  X  Y c2
 Y c4 c3 c1  X c4  Y  X c2
 Y c4 c3 c1 c4  X  X  Y c2
 Y c4 c3 c1 c4  X  Y  X c2
 Y c4 c4  X c1 c2  X  Y c3
 Y c4 c4  X c1 c2  Y  X c3
 Y c4 c4  X c2 c1  X  Y c3
 Y c4 c4  X c2 c1  Y  X c3
c2  X  X  Y  Y c2 c1 c3 c4
c2  X  X  Y  Y c2 c3 c1 c4
c2  X  X  Y c1 c4  Y c2 c3
c2  X  X  Y c1 c4 c2  Y c3
c2  X  X  Y c2  Y c1 c3 c4
c2  X  X  Y c2  Y c3 c1 c4
c2  X  X  Y c4 c1  Y c2 c3
c2  X  X  Y c4 c1 c2  Y c3
c2  X  Y  X  Y c2 c1 c3 c4
c2  X  Y  X  Y c2 c3 c1 c4
c2  X  Y  X c1 c4  Y c2 c3
c2  X  Y  X c1 c4 c2  Y c3
c2  X  Y  X c2  Y c1 c3 c4
c2  X  Y  X c2  Y c3 c1 c4
c2  X  Y  X c4 c1  Y c2 c3
c2  X  Y  X c4 c1 c2  Y c3
c2  Y  X  Y  X c2 c1 c3 c4
c2  Y  X  Y  X c2 c3 c1 c4
c2  Y  X  Y c1 c4  X c2 c3
c2  Y  X  Y c1 c4 c2  X c3
c2  Y  X  Y c2  X c1 c3 c4
c2  Y  X  Y c2  X c3 c1 c4
c2  Y  X  Y c4 c1  X c2 c3
c2  Y  X  Y c4 c1 c2  X c3
c2  Y  Y  X  X c2 c1 c3 c4
c2  Y  Y  X  X c2 c3 c1 c4
c2  Y  Y  X c1 c4  X c2 c3
c2  Y  Y  X c1 c4 c2  X c3
c2  Y  Y  X c2  X c1 c3 c4
c2  Y  Y  X c2  X c3 c1 c4
c2  Y  Y  X c4 c1  X c2 c3
c2  Y  Y  X c4 c1 c2  X c3
c2 c3  X c4  Y c4  X  Y c1
c2 c3  X c4  Y c4  Y  X c1
c2 c3  X c4 c4  Y  X  Y c1
c2 c3  X c4 c4  Y  Y  X c1
c2 c3  Y c4  X c4  X  Y c1
c2 c3  Y c4  X c4  Y  X c1
c2 c3  Y c4 c4  X  X  Y c1
c2 c3  Y c4 c4  X  Y  X c1
c2 c3 c4  X  Y c4  X  Y c1
c2 c3 c4  X  Y c4  Y  X c1
c2 c3 c4  X c4  Y  X  Y c1
c2 c3 c4  X c4  Y  Y  X c1
c2 c3 c4  Y  X c4  X  Y c1
c2 c3 c4  Y  X c4  Y  X c1
c2 c3 c4  Y c4  X  X  Y c1
c2 c3 c4  Y c4  X  Y  X c1
c2 c4  X c3  X  Y  Y c3 c1
c2 c4  X c3  X  Y c3  Y c1
c2 c4  X c3  Y  X  Y c3 c1
c2 c4  X c3  Y  X c3  Y c1
c2 c4  Y c3  X  Y  X c3 c1
c2 c4  Y c3  X  Y c3  X c1
c2 c4  Y c3  Y  X  X c3 c1
c2 c4  Y c3  Y  X c3  X c1
c2 c4 c3  X  X  Y  Y c3 c1
c2 c4 c3  X  X  Y c3  Y c1
c2 c4 c3  X  Y  X  Y c3 c1
c2 c4 c3  X  Y  X c3  Y c1
c2 c4 c3  Y  X  Y  X c3 c1
c2 c4 c3  Y  X  Y c3  X c1
c2 c4 c3  Y  Y  X  X c3 c1
c2 c4 c3  Y  Y  X c3  X c1
c3  X  Y c3  X  Y c1 c2 c4
c3  X  Y c3  X  Y c2 c1 c4
c3  X  Y c3  Y  X c1 c2 c4
c3  X  Y c3  Y  X c2 c1 c4
c3  X c1 c4  X  Y  Y c3 c2
c3  X c1 c4  X  Y c3  Y c2
c3  X c1 c4  Y  X  Y c3 c2
c3  X c1 c4  Y  X c3  Y c2
c3  X c3  Y  X  Y c1 c2 c4
c3  X c3  Y  X  Y c2 c1 c4
c3  X c3  Y  Y  X c1 c2 c4
c3  X c3  Y  Y  X c2 c1 c4
c3  X c4 c1  X  Y  Y c3 c2
c3  X c4 c1  X  Y c3  Y c2
c3  X c4 c1  Y  X  Y c3 c2
c3  X c4 c1  Y  X c3  Y c2
c3  Y  X c3  X  Y c1 c2 c4
c3  Y  X c3  X  Y c2 c1 c4
c3  Y  X c3  Y  X c1 c2 c4
c3  Y  X c3  Y  X c2 c1 c4
c3  Y c1 c4  X  Y  X c3 c2
c3  Y c1 c4  X  Y c3  X c2
c3  Y c1 c4  Y  X  X c3 c2
c3  Y c1 c4  Y  X c3  X c2
c3  Y c3  X  X  Y c1 c2 c4
c3  Y c3  X  X  Y c2 c1 c4
c3  Y c3  X  Y  X c1 c2 c4
c3  Y c3  X  Y  X c2 c1 c4
c3  Y c4 c1  X  Y  X c3 c2
c3  Y c4 c1  X  Y c3  X c2
c3  Y c4 c1  Y  X  X c3 c2
c3  Y c4 c1  Y  X c3  X c2
c3 c2  X c4  Y c4  X  Y c1
c3 c2  X c4  Y c4  Y  X c1
c3 c2  X c4 c4  Y  X  Y c1
c3 c2  X c4 c4  Y  Y  X c1
c3 c2  Y c4  X c4  X  Y c1
c3 c2  Y c4  X c4  Y  X c1
c3 c2  Y c4 c4  X  X  Y c1
c3 c2  Y c4 c4  X  Y  X c1
c3 c2 c4  X  Y c4  X  Y c1
c3 c2 c4  X  Y c4  Y  X c1
c3 c2 c4  X c4  Y  X  Y c1
c3 c2 c4  X c4  Y  Y  X c1
c3 c2 c4  Y  X c4  X  Y c1
c3 c2 c4  Y  X c4  Y  X c1
c3 c2 c4  Y c4  X  X  Y c1
c3 c2 c4  Y c4  X  Y  X c1
c3 c4  X  Y  X c2  Y c2 c1
c3 c4  X  Y  X c2 c2  Y c1
c3 c4  X  Y  Y c2  X c2 c1
c3 c4  X  Y  Y c2 c2  X c1
c3 c4  X  Y c2  X  Y c2 c1
c3 c4  X  Y c2  X c2  Y c1
c3 c4  X  Y c2  Y  X c2 c1
c3 c4  X  Y c2  Y c2  X c1
c3 c4  Y  X  X c2  Y c2 c1
c3 c4  Y  X  X c2 c2  Y c1
c3 c4  Y  X  Y c2  X c2 c1
c3 c4  Y  X  Y c2 c2  X c1
c3 c4  Y  X c2  X  Y c2 c1
c3 c4  Y  X c2  X c2  Y c1
c3 c4  Y  X c2  Y  X c2 c1
c3 c4  Y  X c2  Y c2  X c1
c4  X  Y c4 c1 c2  X  Y c3
c4  X  Y c4 c1 c2  Y  X c3
c4  X  Y c4 c2 c1  X  Y c3
c4  X  Y c4 c2 c1  Y  X c3
c4  X c1 c3  Y c4  X  Y c2
c4  X c1 c3  Y c4  Y  X c2
c4  X c1 c3 c4  Y  X  Y c2
c4  X c1 c3 c4  Y  Y  X c2
c4  X c3 c1  Y c4  X  Y c2
c4  X c3 c1  Y c4  Y  X c2
c4  X c3 c1 c4  Y  X  Y c2
c4  X c3 c1 c4  Y  Y  X c2
c4  X c4  Y c1 c2  X  Y c3
c4  X c4  Y c1 c2  Y  X c3
c4  X c4  Y c2 c1  X  Y c3
c4  X c4  Y c2 c1  Y  X c3
c4  Y  X c4 c1 c2  X  Y c3
c4  Y  X c4 c1 c2  Y  X c3
c4  Y  X c4 c2 c1  X  Y c3
c4  Y  X c4 c2 c1  Y  X c3
c4  Y c1 c3  X c4  X  Y c2
c4  Y c1 c3  X c4  Y  X c2
c4  Y c1 c3 c4  X  X  Y c2
c4  Y c1 c3 c4  X  Y  X c2
c4  Y c3 c1  X c4  X  Y c2
c4  Y c3 c1  X c4  Y  X c2
c4  Y c3 c1 c4  X  X  Y c2
c4  Y c3 c1 c4  X  Y  X c2
c4  Y c4  X c1 c2  X  Y c3
c4  Y c4  X c1 c2  Y  X c3
c4  Y c4  X c2 c1  X  Y c3
c4  Y c4  X c2 c1  Y  X c3
c4 c2  X c3  X  Y  Y c3 c1
c4 c2  X c3  X  Y c3  Y c1
c4 c2  X c3  Y  X  Y c3 c1
c4 c2  X c3  Y  X c3  Y c1
c4 c2  Y c3  X  Y  X c3 c1
c4 c2  Y c3  X  Y c3  X c1
c4 c2  Y c3  Y  X  X c3 c1
c4 c2  Y c3  Y  X c3  X c1
c4 c2 c3  X  X  Y  Y c3 c1
c4 c2 c3  X  X  Y c3  Y c1
c4 c2 c3  X  Y  X  Y c3 c1
c4 c2 c3  X  Y  X c3  Y c1
c4 c2 c3  Y  X  Y  X c3 c1
c4 c2 c3  Y  X  Y c3  X c1
c4 c2 c3  Y  Y  X  X c3 c1
c4 c2 c3  Y  Y  X c3  X c1
c4 c3  X  Y  X c2  Y c2 c1
c4 c3  X  Y  X c2 c2  Y c1
c4 c3  X  Y  Y c2  X c2 c1
c4 c3  X  Y  Y c2 c2  X c1
c4 c3  X  Y c2  X  Y c2 c1
c4 c3  X  Y c2  X c2  Y c1
c4 c3  X  Y c2  Y  X c2 c1
c4 c3  X  Y c2  Y c2  X c1
c4 c3  Y  X  X c2  Y c2 c1
c4 c3  Y  X  X c2 c2  Y c1
c4 c3  Y  X  Y c2  X c2 c1
c4 c3  Y  X  Y c2 c2  X c1
c4 c3  Y  X c2  X  Y c2 c1
c4 c3  Y  X c2  X c2  Y c1
c4 c3  Y  X c2  Y  X c2 c1
c4 c3  Y  X c2  Y c2  X c1
Done. 384
6[ms]