SHARE
TWEET

Untitled

a guest Dec 11th, 2019 84 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var button = document.createElement('input');
  2. var button2 = document.createElement('input');
  3. var lvls;
  4. var initMtx = [];
  5. var rows=0;
  6. var cols = 0;
  7. var flag=1;
  8. var epmMtx = [];
  9. var epmFinal = [];
  10. var ids = ['1','2','3', '4', '5', '6', '7', '8', '9', '10', '11'];
  11. mtx = [];
  12. ////main func to start program
  13. function build(){
  14.     var lvls = document.getElementById('lvls').value;
  15.     document.body.innerHTML = '';
  16.     var div = document.createElement('div');
  17.     div.innerHTML = "<strong>Number of rows in each level";
  18.     document.body.append(div);
  19.     for (var i=0;i<=lvls;i++){
  20.         if(i!=lvls){
  21.             document.body.appendChild(document.createTextNode("Level\t" + (i+1)+" \t"));
  22.         }else{document.body.appendChild(document.createTextNode("Columns    "));}
  23.             var input = document.createElement("input");
  24.         input.type = "text";
  25.         document.body.appendChild(input);
  26.         document.body.appendChild(document.createElement("br"));
  27.     }
  28.    
  29.     button.type = "button";
  30.     button.className = "butt"
  31.     button.value = "Build";
  32.     document.body.appendChild(button);
  33. /////////////////code to build init mtx
  34.     rowsNum = [];
  35.    
  36.     button.onclick= function(){
  37.         for (var i=0;i<=lvls;i++){
  38.             rowsNum.push(parseInt(document.getElementsByTagName("input")[i].value));
  39.         }cols=rowsNum[rowsNum.length-1];
  40.  
  41.     document.body.innerHTML = '';
  42.         for (var i=0;i<rowsNum.length-1;i++){
  43.             rows+=rowsNum[i];
  44.         }
  45.         var tab = document.createElement("table");
  46.         for (var i = 0; i < rows; i++){
  47.         var row = tab.insertRow();
  48.         for(var j = 0; j < cols; j++){
  49.             var cell = row.insertCell();
  50.             var input = document.createElement('input');
  51.             input.type = "text";
  52.             cell.appendChild(input);
  53.         }
  54.         document.body.appendChild(tab);
  55.         }
  56.        
  57.         button2.type = "button";
  58.         button2.className = "butt"
  59.         button2.value = "Solve";
  60.         document.body.appendChild(button2);
  61.     }
  62. //////////////////////// code to get values from init mtx  
  63.     var rowArr = [];
  64.    
  65.     button2.onclick = function(){
  66.        
  67.         initMtx = [];
  68.         for (let i = 0; i < rows; i++){
  69.             for (let j = 0; j < cols; j++){
  70.                 var tmp = document.getElementsByTagName("table")[0].getElementsByTagName("tr")[i].getElementsByTagName("td")[j].firstElementChild.value;
  71.                 //console.log(tmp);
  72.                 rowArr.push(tmp);    
  73.             }
  74.             initMtx.push(rowArr); rowArr = [];
  75.         }
  76.         if (checkCorrect(initMtx)){
  77.             document.body.innerHTML = '';
  78.         }else{
  79.             alert("Incorrect data");
  80.         }
  81.    
  82.     for (var i=0;i<rowsNum[0];i++){
  83.         for (var j=rowsNum[0]; j<parseInt(rowsNum[0])+parseInt(rowsNum[1]);j++){
  84.             epmMtx.push(compArr(initMtx[i], initMtx[j]));
  85.         }
  86.     }console.log(epmMtx);
  87.    
  88.     //epmMtx = epmMtx.sort();
  89.  
  90. a=[];
  91.  
  92. for (var i=0; i<epmMtx.length; i++){
  93.     a.push(epmMtx.slice(i,i+1));
  94. }epmMtx = epmMtx.sort();
  95.     for (var i=0; i<epmMtx.length-1;i++){
  96.         if (epmMtx[i]=="000"){
  97.             i++;
  98.         }
  99.         //var j = m;
  100.         for (var j=i+1;j<epmMtx.length;j++){
  101.             //console.log(j);
  102.             if (compEPM(epmMtx[i], epmMtx[j])){
  103.                 console.log(epmMtx[i], epmMtx[j], j);
  104.                 //idArr.push(j);
  105.                 epmMtx[j]="000";  
  106.             }
  107.         }
  108.  
  109.     }
  110. var t=0;
  111.     for (var i=0; i<epmMtx.length; i++){
  112.         if (epmMtx[i]!="000"){
  113.             epmFinal[t]=(epmMtx.slice(i,i+1));
  114.             t++;
  115.         }
  116.     }
  117. tmp=[];
  118.     for (let i=0;i<epmFinal.length; i++){
  119.         tmp=[];
  120.         for (let j=0;j<epmFinal[0][0].length; j++){
  121.             if (epmFinal[i][0][j]=='1'){
  122.                 tmp.push(ids[j]);
  123.             }
  124.         }
  125.         mtx.push(tmp);
  126.     }console.log(mtx);
  127.  
  128. ///// multiply
  129. const last = mtx.length;
  130.     for (var i = 0; i < last-1; i++){
  131.             console.log(mtx);
  132.             mtx.push(mult(mtx[i], mtx[mtx.length-1]));
  133.         }
  134.         result = mtx[mtx.length-1];
  135.         result = lenSort(result);
  136.         for (var i = 0; i<result.length;i++){
  137.             result[i]=sortString(result[i]);
  138.         }
  139.         result=remArrDuplicates(result);
  140.         idArr = [];
  141.         m=1;
  142.         //arr = result.slice(6);
  143.         //console.log(arr);
  144.         dnf = [];
  145.        
  146.         var l = result.length;
  147.         for (var i=0; i<result.length-1;i++){
  148.             if (result[i]=="000"){
  149.                 i++;
  150.             }
  151.             //var j = m;
  152.             for (var j=i+1;j<result.length;j++){
  153.                 //console.log(j);
  154.                 if (removeExtras(result[i], result[j])==result[i].length){
  155.                     console.log(result[i], result[j], j);
  156.                     idArr.push(j);
  157.                     result[j]="000";
  158.                     //dnf.push(result[i].slice());
  159.                     //result.splice(j,1);
  160.                     //m++;
  161.                 }
  162.             }
  163.         }console.log(result);
  164.        
  165.        
  166.         for (var i=0;i<result.length;i++){
  167.             if (result[i]!="000"){
  168.                 dnf.push(result[i]);
  169.             }
  170.         }
  171.         //dnf = remArrDuplicates(dnf);
  172.         console.log(dnf);
  173.         m=1;
  174.         arr = result.slice(6);
  175.         console.log(arr);
  176.         var l = result.length;
  177.        
  178.        
  179.        
  180.         console.log(result);
  181.  
  182. }
  183.  
  184. /////////////////////////////////////////////////////////////
  185.  
  186. }
  187. function checkCorrect(arr){///check 1 and 0
  188.     var count=0;
  189.     var general=0;
  190.     for (let i=0;i<arr.length;i++){
  191.         for(let j=0;j<arr[i].length;j++){
  192.             if (arr[i][j]=="1"||arr[i][j]=="0"){
  193.                 count++;
  194.             }general++;
  195.         }
  196.     }
  197.     return general==count;
  198. }
  199.  
  200. function compArr(arr1, arr2){
  201.     var tmp = [];
  202.     for (let i=0;i<arr1.length;i++){
  203.         if (arr1[i]==arr2[i]){
  204.             tmp.push("0");
  205.         }else{
  206.             tmp.push("1")
  207.         }
  208.     }
  209.     return tmp;
  210. }
  211. /////что-то косяк работает норм, но не хочет принимать итоговую матрицу
  212. function compEPM(arr1,arr2){//figure if arr2 is extension of arr1
  213.     var ones=0;
  214.     var count=0;
  215.     for (var i=0;i<arr1.length; i++){
  216.         if (arr1[i]=='1'){
  217.             ones++;
  218.         }
  219.     }
  220.     for (var i=0;i<arr1.length;i++){
  221.         if(arr1[i]==arr2[i]){
  222.             if (arr1[i]=="1"){
  223.                 count++;
  224.             }
  225.         }
  226.     }
  227.     if (count>0&&ones>0){return count==ones;}
  228.     else {return false}
  229. }
  230.  
  231.  
  232.  
  233.  
  234.  
  235. //////////////////////////////
  236.  
  237. /// peremnojenye probnoe
  238.  
  239. //////////////////////////////
  240.  
  241.  
  242.  
  243.    
  244.    
  245.    
  246. //  str = [];
  247. // mtx = [];  
  248. // tmp = ['c'];
  249. // mtx.push(tmp);
  250. // tmp = ['b','e'];
  251. // mtx.push(tmp);
  252. // tmp = ['g','f'];
  253. // mtx.push(tmp);
  254. // tmp = ['a', 'b', 'd'];
  255. // mtx.push(tmp);
  256. // tmp = ['b', 'd', 'e','f'];
  257. // mtx.push(tmp);  
  258. // const last = mtx.length;
  259.  
  260. // for (var i = 0; i < last-1; i++){
  261. //     console.log(mtx);
  262. //     mtx.push(mult(mtx[i], mtx[mtx.length-1]));
  263. // }
  264. // result = mtx[mtx.length-1];
  265. // result = lenSort(result);
  266. // for (var i = 0; i<result.length;i++){
  267. //     result[i]=sortString(result[i]);
  268. // }
  269. // result=remArrDuplicates(result);
  270. // idArr = [];
  271. // m=1;
  272. // //arr = result.slice(6);
  273. // //console.log(arr);
  274. // dnf = [];
  275.  
  276. // var l = result.length;
  277. // for (var i=0; i<result.length-1;i++){
  278. //     if (result[i]=="000"){
  279. //         i++;
  280. //     }
  281. //     //var j = m;
  282. //     for (var j=i+1;j<result.length;j++){
  283. //         //console.log(j);
  284. //         if (removeExtras(result[i], result[j])==result[i].length){
  285. //             console.log(result[i], result[j], j);
  286. //             idArr.push(j);
  287. //             result[j]="000";
  288. //             //dnf.push(result[i].slice());
  289. //             //result.splice(j,1);
  290. //             //m++;
  291. //         }
  292. //     }
  293. // }console.log(result);
  294.  
  295.  
  296. // for (var i=0;i<result.length;i++){
  297. //     if (result[i]!="000"){
  298. //         dnf.push(result[i]);
  299. //     }
  300. // }
  301. // //dnf = remArrDuplicates(dnf);
  302. // console.log(dnf);
  303. // m=1;
  304. //arr = result.slice(6);
  305. //console.log(arr);
  306. //var l = result.length;
  307.  
  308.  
  309.  
  310. //console.log(result);
  311.  
  312.  
  313.  
  314. function mult(arr1, arr2){
  315.     let arr = []; n=0;
  316.     tmp = [];
  317.     for (var i=0;i<arr1.length; i++){
  318.         tmp = [];
  319.         for (var j=0;j<arr2.length; j++){
  320.             if (arr1[i]!=arr2[j]){
  321.             arr.push(remDuplicates(arr1[i]+arr2[j]));
  322.             }else{
  323.                 arr.push(arr1[i]);
  324.             }
  325.         }
  326.     }//arr.push(tmp);
  327.     arr.sort();
  328.     for (var i=0;i<arr.length-1;i++){
  329.         for (var m=1; m<arr.length; m++)
  330.         for (var j=0;j<arr[i+1].length; j++){
  331.             if (arr[i]==arr[m][j]){
  332.                 arr[m]="REMOVED";
  333.                 n++;
  334.             }
  335.         }
  336.     }arr.sort();
  337.     arr.splice(0,n);
  338.  
  339.     return arr;
  340. }
  341.  
  342. function lenSort(arr){
  343.     var len = arr.length;
  344.    
  345.     for (var i = 0; i < len ; i++) {
  346.       for(var j = 0 ; j < len - i - 1; j++){ // this was missing
  347.       if (arr[j].length > arr[j + 1].length) {
  348.        // swap
  349.         var temp = arr[j];
  350.         arr[j] = arr[j+1];
  351.         arr[j + 1] = temp;
  352.       }
  353.      }
  354.     }
  355.     return arr;
  356. }
  357.  
  358. function sortString(str){
  359.     var arr = str.split('');
  360.     var tmp;
  361.     for(var i = 0; i < arr.length; i++){
  362.       for(var j = i + 1; j < arr.length; j++){
  363.        
  364.         if(arr[i] > arr[j]){
  365.           tmp = arr[i];
  366.           arr[i] = arr[j];
  367.           arr[j] = tmp;
  368.         }
  369.       }
  370.     }
  371.     return arr.join('');
  372. }
  373.  
  374. function remArrDuplicates(arr){
  375.     return [...new Set(arr)];
  376. }
  377.  
  378. function remDuplicates(s){
  379.     var c = {};
  380.     var r = '';
  381.     for (var i = 0; i < s.length; i++) {
  382.         if (!c[s[i]]) {
  383.             r = r + s[i];
  384.             c[s[i]] = 1;
  385.         }
  386.     }
  387.     return r;
  388. }
  389.  
  390. function removeExtras(arr1, arr2){
  391.     var n = 0;
  392.     for (var i=0;i<arr1.length;i++){
  393.         for (var j=0;j<arr2.length;j++){
  394.             if (arr1[i]==arr2[j]){
  395.                 n++;
  396.             }
  397.         }
  398.     }return n;
  399. }
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
Not a member of Pastebin yet?
Sign Up, it unlocks many cool features!
 
Top