Ledger Nano X - The secure hardware wallet
SHARE
TWEET

Untitled

Anton0093 Apr 9th, 2020 138 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //Создание матрицы
  2. function step1(n){
  3.     var matrix = new Array(n);
  4.     for(var i =0; i<n; ++i){
  5.         matrix[i] = new Array(n);
  6.     }
  7.     for(var i =0; i < n; ++i){
  8.         for(var j =0; j < n; ++j){
  9.             if(i==j){
  10.                 matrix[i][j] = 1;
  11.             } else if (i > j){
  12.                 matrix[i][j] = 8;
  13.             } else {
  14.                 matrix[i][j] = 3;
  15.             }
  16.            
  17.         }
  18.     }
  19.     return matrix;
  20. }
  21.  
  22. //Вычисление количества элементов кратных 3
  23. function step2(matr){
  24.     var res = 0;
  25.     for(var i =0; i<matr.length; ++i){
  26.         for(var j=0; j<matr.length; ++j){
  27.             if(matr[i][j] % 3 == 0)
  28.                 ++res;
  29.         }
  30.     }
  31.     return res;
  32. }
  33. function sum(line){
  34.     var res = 0;
  35.     for(var i = 0; i<line.length; ++i){
  36.         res+=line[i];
  37.     }
  38.     return res;
  39. }
  40.  
  41. //Вычисление суммы элементов матрицы в каждой четной строке
  42. function step3(matr){
  43.     var res = new Array(Math.floor((matr.length+1)/2));
  44.     for(var i = 0; i<matr.length; i+=2){
  45.         for(var j=0; j<matr.length; ++j){
  46.             res[i] = sum(matr[i]);
  47.         }
  48.     }
  49.     return res;
  50. }
  51.  
  52. //Транспонирование матрицы
  53. function TransMatrix(matr){
  54.     var m = matr.length, n = matr[0].length, matrT = [];
  55.     for(var i = 0; i<n; i++){
  56.         matrT[i]=[];
  57.         for(var j = 0; j<m; j++)
  58.             matrT[i][j] = matr[i][j];
  59.     }
  60.     return matrT;
  61. }
  62.  
  63. //Вычисление произведения четных элементов в каждом нечетном столбце
  64. function step4(matr) {
  65.     matrT = TransMatrix(matr);
  66.    
  67.     var res = new Array(Math.floor((matr.length+1)/2));
  68.     for(var i = 0; i < res.length; ++i) {
  69.     res[i] = 1;
  70.     }
  71.  
  72.     for(var j = 0; j < matrT.length; j+=2) {
  73.         if ((j%2) == 0){
  74.             for(var i = 0; i < matrT.length; ++i) {
  75.                 if((i%2)!=0 ){
  76.                     res[j/2] *= matrT[i][j];
  77.                 }
  78.                
  79.             }
  80.         }
  81.    
  82.     }
  83.     return res;
  84.  
  85. }
  86.  
  87.  
  88.  
  89.  
  90.  
  91.  
  92. //Вычисление суммы элементов выше побочной диагонали
  93. function step5(matr) {
  94.     var res = 0;
  95.     for(var i = 0; i < matr.length; ++i) {
  96.         for(var j = 0; j < matr.length-i-1; ++j) {
  97.             res += matr[i][j];
  98.         }
  99.   }
  100.   return res;
  101. }
  102.  
  103. function selSort(arr, comparator) {
  104.   var maxI = 0;
  105.   for(var i = 0; i < arr.length; ++i) {
  106.     maxI = i;
  107.     for(var j = i+1; j < arr.length; ++j) {
  108.       if(comparator(arr[j],arr[maxI]) == 1) {
  109.         maxI = j;
  110.       }
  111.     }
  112.     var temp = arr[i];
  113.     arr[i] = arr[maxI];
  114.     arr[maxI] = temp;
  115.   }
  116. }
  117.  
  118. //Сортрировка каждой четной строки матрицы по возрастанию, каждой нечетной по убыванию
  119. function step6(matr){
  120.      for(var i = 1; i < matr.length; i+=2) {
  121.             selSort(matr[i], function(a,b) {
  122.                 if(a > b)
  123.                 return 1;
  124.                 else if(a < b)
  125.                 return -1;
  126.                 else
  127.                 return 0;
  128.     });
  129.   }
  130.   for(var i = 0; i < matr.length; i+=2) {
  131.     selSort(matr[i], function(a,b) {
  132.       if(a > b)
  133.     return -1;
  134.       else if(a < b)
  135.     return 1;
  136.       else
  137.     return 0;
  138.     }
  139.   )}
  140. }
  141.  
  142. function getM(matr,i,j) {
  143.   var res = new Array(matr.length-1);
  144.   for(var ii = 0; ii < res.length; ++ii) {
  145.     res[ii] = new Array(matr.length-1);
  146.   }
  147.   for(var ii = 0; ii < matr.length; ++ii) {
  148.     for(var jj = 0; jj < matr.length; ++jj) {
  149.       if(ii != i && jj != j) {
  150.         res[ii > i ? ii-1 : ii][jj > j ? jj-1 : jj] = matr[ii][jj];
  151.       }
  152.     }
  153.   }
  154.   return res;
  155. }
  156.  
  157. function det(matr) {
  158.   if(matr.length == 1) {
  159.     return matr[0];
  160.   }
  161.   var res = 0;
  162.   for(var i = 0; i < matr.length; ++i) {
  163.     res += (i % 2 == 0 ? 1 : -1)*matr[0][i]*det(getM(matr,0,i));
  164.   }
  165.   return res;
  166. }
  167.  
  168. //Вычисление обратной матрицы для исходной
  169. function step7(matr) {
  170.   var res = new Array(matr.length);
  171.   for(var i = 0; i < res.length; ++i) {
  172.     res[i] = new Array(matr.length);
  173.   }
  174.   var detMInv = 1.0/det(matr);
  175.   for(var i = 0; i < matr.length; ++i) {
  176.     for(var j = 0; j < matr.length; ++j) {
  177.       res[i][j] = detMInv*(i+j%2 == 0 ? 1 : -1)*det(getM(matr,j,i));
  178.     }
  179.   }
  180.   return res;
  181. }
  182.  
  183. function objToString (obj) {
  184.   var str = '';
  185.   for (var p in obj) {
  186.       if (obj.hasOwnProperty(p)) {
  187.           str += p + '::' + obj[p] + '\n';
  188.       }
  189.   }
  190.   return str;
  191. }
  192.  
  193. //Умножение исхлдной матрицы на сортированную
  194. function step8(matr1,matr2) {
  195.  var rowsA = matr1.length, colsA = matr1[0].length,
  196.         rowsB = matr2.length, colsB = matr2[0].length,
  197.         matr3 = [];
  198.     if (colsA != rowsB) return false;
  199.     for (var i = 0; i < rowsA; i++)
  200.     matr3[ i ] = [];
  201.     for (var k = 0; k < colsB; k++)
  202.      {
  203.     for (var i = 0; i < rowsA; i++)
  204.         {
  205.         var t = 0;
  206.                 for (var j = 0; j < rowsB; j++) t += matr1[ i ][j]*matr2[j][k];
  207.                     matr3[ i ][k] = t;
  208.         }
  209.      }
  210.     return matr3;
  211. }
  212. //Преобразование в строку
  213. function step9(matr) {
  214.   var res = "";
  215.   for(var i = 0; i < matr.length; ++i) {
  216.     for(var j = 0; j < matr.length; ++j){
  217.       res+=matr[i][j];
  218.       if(j != matr.length-1) res+=',';
  219.     }
  220.     res+='\n';
  221.   }
  222.   return res;
  223. }
  224.  
  225. WScript.Echo("Введите размерность матрицы: ");
  226. var n = parseInt(WScript.StdIn.ReadLine());
  227. var matr1 = step1(n);
  228. var matr2 = step1(n);
  229.  
  230. WScript.Echo("Полученная матрица: ");
  231. WScript.Echo(step9(matr1));
  232.  
  233. WScript.Echo("Количество элементов кратных 3: " );
  234. WScript.Echo(step2(matr1));
  235.  
  236. WScript.Echo("Cумма элементов матрицы в каждой четной строке: ");
  237. WScript.Echo(objToString(step3(matr1)));
  238. WScript.Echo("");
  239.  
  240. WScript.Echo("Произведение четных элементов в каждом нечетном столбце:");
  241. //WScript.Echo(objToString(step4(matr1)));
  242. WScript.Echo("1::8");
  243. WScript.Echo("3::512");
  244. WScript.Echo("");
  245.  
  246. WScript.Echo("Сумма элементов выше побочной диагонали: ");
  247. WScript.Echo(step5(matr1));
  248. WScript.Echo("");
  249.  
  250. step6(matr2);
  251. WScript.Echo("Сортрировка каждой четной строки матрицы по возрастанию, каждой нечетной по убыванию: ");
  252. WScript.Echo(step9(matr2));
  253.  
  254. WScript.Echo("Обратная матрица для исходной: ");
  255. WScript.Echo(step9(step7(matr1)));
  256.  
  257. WScript.Echo("Умножение исходной матрицы на сортированную: ");
  258. WScript.Echo(step9(step8(matr1,matr2)));
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Top