JSFiddle - React, Tailwind, and code Playground

by Timatnet

HTML

<div id="log"></div>
(1 =>   22561114270347.098 => 14)
(10 =>  3809612967158.597 => 13)
(100 => 2155510236028.285 => 13)

JavaScript

function log(x) {
    $('#log')
        .append(
            '<pre>' + 
        	JSON.stringify(x, null, 2)
        	+ '</pre>'
            );
};

var x = [[2005, 2006, 2007, 2008],
         [2005, 2006, 2007, 2008],
         [2005, 2006, 2007, 2008],
         // Стоимость чистых активов эмитента, тыс. руб. 	
         [10000, 10000, 808313, 725537],
		 // Отношение суммы привлеченных средств к капиталу и резервам, %  
         [0, 0, 7.58, 112.26],
		 // Общая сумма долгосрочных и краткосрочных обязательств*, тыс. руб. 
         [0, 0, 306,  694200],
		 // Объем выручки (дохода) эмитента от хозяйственной деятельности, тыс. руб. 
         [0, 0, 3269268, 5124973],
         // Население России по годам
         [144000000, 144000000, 143000000, 143000000],
         // Прирост населения России по годам
         [-0.321, -0.232, -0.15, -0.0917]];


var xnext =  [[2009], [2009], [2009], [751297], [53.42], [314409], [3486486], [143000000], [-0.692]];

function random_matrix(N, M) {
    var rm = [];
    for(var i = 0; i < N; ++i) {
        var rml = [];
    	for(var j = 0; j < M; ++j) {
            rml.push(1000000*(Math.random()-Math.random()));
    	}
        rm.push(rml);
    }
    return rm;
}

function next_layer(prev, a) {
    var N = Math.min(prev.length, a.length), M = Math.min(prev[0].length, a[0].length);
    var next = [];
   	for(var i = 0; i < N; ++i) {
        var xij = 0;
        var i1 = N-i-1;
        if(i1 < 0) i1 += N;
        for(var j = 0; j < M; ++j) {
            var j1 = Math.max(M-j-1,0);
            xij += a[i1][j1]*prev[i1][j1];
        }
        next.push([xij]);
    }
    return next;
}

function distance(l1, l2) {
    var r = 0;
    for(var i = 0; i < l1.length; ++i) {
        r += Math.abs(l1[i][0]-l2[i][0]);
    	//log(l1[i][0]-l2[i][0]);
    }
    return r;
}

var rm = random_matrix(x.length, x.length);

var current_last_layer = [];
var current_prev = [];
for(var i = 0; i < x.length; ++i) {
   ...