Advertisement
agmike

Свойства отношений

Mar 1st, 2015
243
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var input = document.getElementById('table');
  2. var output = document.getElementById('output');
  3.  
  4. function recalculate() {
  5.     output.innerHTML = '';
  6.    
  7.     try {
  8.         var matrix = input.value.split('\n').map(row => {
  9.             return row.split(' ').map(item => {
  10.                 if (item == '0' || item == '1')
  11.                     return item == '1';
  12.                 throw "Ошибка разбора";
  13.             });
  14.         });
  15.        
  16.         if (!matrix.every(row => matrix.length == row.length))
  17.             throw "Неправильный формат матрицы";
  18.     }
  19.     catch (e) {
  20.         alert(e);
  21.     }
  22.  
  23.     output.innerHTML = '<table>' +
  24.         '<tr><td>Рефлексивность:</td><td>' + (checkReflexive(matrix)  ? '&#9745;' : '&#9744;') + '</td></tr>' +
  25.         '<tr><td>Транзитивность:</td><td>' + (checkTransitive(matrix) ? '&#9745;' : '&#9744;') + '</td></tr>' +
  26.         '<tr><td>Симметричность:</td><td>' + (checkSymmetric(matrix)  ? '&#9745;' : '&#9744;') + '</td></tr>' +
  27.         '</table>';
  28. }
  29.  
  30. function checkReflexive(matrix) {
  31.     for (var i = 0; i < matrix.length; ++i) {
  32.         if (!matrix[i][i])
  33.             return false;
  34.     }
  35.     return true;
  36. };
  37.  
  38. function checkTransitive(matrix) {
  39.     for (var i = 0; i < matrix.length; ++i) {
  40.         for (var j = 0; j < matrix.length; ++j) {
  41.             for (var k = 0; k < matrix.length; ++k)
  42.                 if (matrix[i][j] && matrix[j][k] && !matrix[i][k])
  43.                     return false;
  44.         }
  45.     }
  46.     return true;
  47. };
  48.  
  49. function checkSymmetric(matrix) {
  50.     for (var i = 0; i < matrix.length; ++i) {
  51.         for (var j = i + 1; j < matrix.length; ++j)
  52.             if (matrix[i][j] != matrix[j][i])
  53.                 return false;
  54.     }
  55.     return true;
  56. };
  57.  
  58. function defaultReflexive() {
  59.     input.value = [
  60.         [1, 0, 1, 0, 0],
  61.         [0, 1, 0, 0, 0],
  62.         [0, 0, 1, 0, 0],
  63.         [1, 0, 0, 1, 0],
  64.         [0, 0, 0, 0, 1],
  65.     ].map(row => row.join(' ')).join('\n');
  66. }
  67.  
  68. function defaultSymmetric() {
  69.     input.value = [
  70.         [0, 0, 1, 0, 0],
  71.         [0, 0, 0, 1, 1],
  72.         [1, 0, 0, 1, 0],
  73.         [0, 1, 1, 0, 0],
  74.         [0, 1, 0, 0, 0],
  75.     ].map(row => row.join(' ')).join('\n');
  76. }
  77.  
  78. function defaultTransitive() {
  79.     input.value = [
  80.         [0, 1, 1, 1, 1],
  81.         [0, 0, 1, 0, 0],
  82.         [0, 0, 0, 0, 0],
  83.         [0, 0, 0, 0, 1],
  84.         [0, 0, 0, 0, 0],
  85.     ].map(row => row.join(' ')).join('\n');
  86. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement