fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. class Shredder
  5. {
  6. private:
  7. int **matrix;
  8. int n;
  9. public:
  10. Shredder(string bits)
  11. {
  12. int len=bits.length();
  13. for(n=0;n*n<len;n=n+2);
  14. cout<<"n:"<<n<<endl;
  15. matrix=(int**)malloc(n*sizeof(int*));
  16. for(int i=0;i<n;i++)
  17. matrix[i]=(int*)malloc(n*sizeof(int));
  18. int k=0;
  19. for(int i=0;i<n;i++)
  20. {
  21. for(int j=0;j<n;j++)
  22. {
  23.  
  24. if(k<len)
  25. {
  26. if(bits[k]=='0')
  27. matrix[i][j]=0;
  28. else
  29. matrix[i][j]=1;
  30.  
  31. }
  32. else if(k==len)
  33. matrix[i][j]=-1;
  34. else
  35. matrix[i][j]=0;
  36. k++;
  37.  
  38. //matrix[i][j]=k+1;
  39. //k++;
  40.  
  41.  
  42. }
  43. }
  44. //horizontal_shred();
  45. display();
  46. //display();
  47. //vertical_shred();
  48. //display();
  49. //rotate_about_leadingdiagonal();
  50. //rotate_about_antidiagonal();
  51. }
  52. void rotate_about_leadingdiagonal()
  53. {
  54. for(int i=0;i<n;i++)
  55. {
  56. for(int j=0;j<i;j++)
  57. {
  58. int temp=matrix[i][j];
  59. matrix[i][j]=matrix[n-i-1][n-j-1];
  60. matrix[n-i-1][n-j-1]=temp;
  61. }
  62. }
  63. //display();
  64. }
  65. void rotate_about_antidiagonal()
  66. {
  67. for(int i=0;i<n;i++)
  68. {
  69. for(int j=n-1;i>n-j-1;j--)
  70. {
  71. int temp=matrix[i][j];
  72. matrix[i][j]=matrix[n-i-1][n-j-1];
  73. matrix[n-i-1][n-j-1]=temp;
  74. }
  75. }
  76. //display();
  77. }
  78. void vertical_shred()
  79. {
  80. for(int i=0;i<n;i++)
  81. {
  82. int j=n-1;
  83. int ti=0;
  84. while(ti<j-1)
  85. {
  86. int mi=ti+1,nj=j-1,z;
  87. while(mi<nj)
  88. {
  89. int temp=matrix[i][mi];
  90. matrix[i][mi]=matrix[i][nj];
  91. matrix[i][nj]=temp;
  92. mi++;nj--;
  93. }
  94. mi=ti+1,nj=j-1;
  95. z=(mi+nj)/2;
  96.  
  97. while(mi<z)
  98. {
  99. int temp=matrix[i][mi];
  100. matrix[i][mi]=matrix[i][z];
  101. matrix[i][z]=temp;
  102. mi++;
  103. z--;
  104. }
  105. z=(ti+nj+1)/2+1;
  106. while(z<nj)
  107. {
  108. int temp=matrix[i][z];
  109. matrix[i][z]=matrix[i][nj];
  110. matrix[i][nj]=temp;
  111. z++;
  112. nj--;
  113. }
  114. ti++;
  115. j--;
  116. }
  117. }
  118. }
  119. void horizontal_shred()
  120. {
  121. for(int i=0;i<n;i++)
  122. {
  123. int j=n-1;
  124. int ti=0;
  125. while(ti<j-1)
  126. {
  127. int mi=ti+1,nj=j-1,z;
  128. while(mi<nj)
  129. {
  130. int temp=matrix[mi][i];
  131. matrix[mi][i]=matrix[nj][i];
  132. matrix[nj][i]=temp;
  133. mi++;nj--;
  134. }
  135. mi=ti+1,nj=j-1;
  136. z=(mi+nj)/2;
  137.  
  138. while(mi<z)
  139. {
  140. int temp=matrix[mi][i];
  141. matrix[mi][i]=matrix[z][i];
  142. matrix[z][i]=temp;
  143. mi++;
  144. z--;
  145. }
  146. z=(ti+nj+1)/2+1;
  147. while(z<nj)
  148. {
  149. int temp=matrix[z][i];
  150. matrix[z][i]=matrix[nj][i];
  151. matrix[nj][i]=temp;
  152. z++;
  153. nj--;
  154. }
  155. ti++;
  156. j--;
  157. }
  158. }
  159. for(int i=0;i<n;i++)
  160. {
  161. for(int j=i+1;j<n;j++)
  162. {
  163. int temp=matrix[i][j];
  164. matrix[i][j]=matrix[j][i];
  165. matrix[j][i]=temp;
  166. }
  167. }
  168. }
  169. void display()
  170. {
  171. for(int i=0;i<n;i++)
  172. {
  173. for(int j=0;j<n;j++)
  174. {
  175. cout<<matrix[i][j]<<" ";
  176. }
  177. cout<<endl;
  178. }
  179. }
  180. };
  181.  
  182. int main() {
  183. // your code goes here
  184. Shredder s("01001");
  185. //Shredder s("001100100");
  186. return 0;
  187. }
Success #stdin #stdout 0s 15240KB
stdin
1010
stdout
n:4
0 1 0 0 
1 -1 0 0 
0 0 0 0 
0 0 0 0