JSFiddle - React, Tailwind, and code Playground

HTML

package socket_example_1row;

import java.io.*;  
import java.util.Scanner;
import java.util.regex.Pattern;

import matrix.*; 

public class Coordinator { 
	
	Connection conn; 
	int dim; 
	int[][] a; 
	int[][] b; 
	int[][] c; 
	int numNodes; 
	DataInputStream[] disWorkers;
	DataOutputStream[] dosWorkers; 
	
	public Coordinator(int n, int numNodes) { 
		this.dim = n; 
		a = new int[n][n]; 
		b = new int[n][n]; 
		c = new int[n][n]; 
		this.numNodes = numNodes; 
	}
	
 	void configurate(int portNum) { 
		try { 
			conn = new Connection(portNum); 
			disWorkers = new DataInputStream[numNodes]; 
			dosWorkers = new DataOutputStream[numNodes];
			String[] ips = new String[numNodes]; 
			int[] ports = new int[numNodes]; 
			for (int i=0; i<numNodes; i++ ) { 
				DataIO dio = conn.acceptConnect(); 
				DataInputStream dis = dio.getDis(); 
				int nodeNum = dis.readInt(); 			//get worker ID
				ips[nodeNum] = dis.readUTF(); 			//get worker ip
				ports[nodeNum] = dis.readInt();  		//get worker port #
				disWorkers[nodeNum] = dis; 
				dosWorkers[nodeNum] = dio.getDos(); 	//the stream to worker ID
				dosWorkers[nodeNum].writeInt(dim); 		//assign matrix dimension (height)
				int width = (nodeNum<numNodes-1) ? dim/numNodes : dim/numNodes+dim%numNodes;
				dosWorkers[nodeNum].writeInt(width); 	//assign matrix width 
			} 
			for (int w=0; w<numNodes; w++) { 
				int LEFT1 = (w+numNodes-1)%numNodes; 	//shift to (send)
				dosWorkers[w].writeUTF(ips[LEFT1]); 	// left worker's ip 
				dosWorkers[w].writeInt(ports[LEFT1]); 
				int RIGHT1 = (w+1)%numNodes; 			//receive from 
				dosWorkers[w].writeUTF(ips[RIGHT1]); 	// right worker's ip 
				dosWorkers[w].writeInt(ports[RIGHT1]); 
			}
		} catch (IOException ioe) { 
			System.out.println("error: Coordinator assigning neighbor infor.");  
			ioe.printStackTrace(); 
		} 
	}
	
 	void initializeA() { 
 		int n = a.length; 
  		for (int i=0; i<n; i++) { 
  			int step = i+1; 
  			int[] newRow = new int[n]; 
			for (int j=0; j<n;...

CSS

package matrix;

public class MatrixMultiple {
	// create an n by n matrix for displaying 
	public static int[][] createDisplayMatrix(int n) {
		int[][] matrix = new int[n][n];
		int up = (int)Math.pow(10, (int)Math.log10(n)+1); 
		for (int row = 1; row <= n; row++) {
			for (int col = 1; col <= n; col++) {
				matrix[row - 1][col - 1] = row * up + col;
				
			}
		}
		return matrix; 
	}
	
	// create an n by n unit matrix  
	public static int[][] createUnitMatrix(int n) {
		int[][] matrix = new int[n][n];
		for (int row = 0; row < n; row++) {
			for (int col = 0; col < n; col++) {
				matrix[row][col] = 0;
			}
			matrix[row][row] = 1; 
		}
		return matrix; 
	}
	
	// create an n by n unit matrix  
	public static int[][] createRandomMatrix(int n) {
		int[][] matrix = new int[n][n];
		for (int row = 0; row < n; row++) {
			for (int col = 0; col < n; col++) {
				matrix[row][col] = (int)(Math.random()*1000);
			}
		}
		return matrix; 
	}
	
	// display n by n "display matrix"; n is limited to 660.
	public static void displayMatrix(int[][] mat) {
		int n = mat.length; 
		int m = mat[0].length; 
		if (n <= 660) {
			int digit = (int) Math.log10(n)*2+3;
			for (int row = 0; row < n; row++) {
				for (int col = 0; col < m; col++) {
					String numStr = String.format("%"+digit+"d", mat[row][col]);
					System.out.print(numStr);
				}
				System.out.println();
			}
		} else {
			System.out.println("The matrix is too big to display on screen.");
		}
	}
	
	// display n by n matrix with maximum value of d digits.
	public static void displayMatrix(int[][] mat, int d) {
		int n = mat.length; 
		int m = mat[0].length; 
		for (int row = 0; row < n; row++) {
			for (int col = 0; col < m; col++) {
				String numStr = String.format("%"+(d+2)+"d", mat[row][col]);
				System.out.print(numStr);
			}
			System.out.println();
		}
	}

	// a X b
	public static int[][] multiplyMatrix(int[][] a, int[][] b) {
		int n = a.length;
		int[][] c = new int[n][n]; 
		for (int row = 0; row < n;...

JavaScript

package socket_example_1row;

import java.io.*; 
import java.net.*; 

class Connection {

	String name; 
	int port; 
	ServerSocket servsoc; 
	
	public Connection(int portNum) { 
		this.port = portNum; 
		try {
			servsoc = new ServerSocket(port); 
		} catch (IOException ioe) {
			System.out.println("Could not listen on port: " + port + ", " + ioe);  
			System.exit(1); 
		}
	} 
	
	DataIO acceptConnect() {
		DataIO dio = null;  
		while (true) {
			try {
				Socket sc = servsoc.accept(); 
				DataInputStream dis = new DataInputStream(sc.getInputStream()); 
				DataOutputStream dos = new DataOutputStream(sc.getOutputStream()); 
				dio = new DataIO(dis, dos); 
				break; 
			} catch (IOException ioe) {
				System.out.println("Fail in connecting to worker node.");
				try {Thread.sleep(2000); } catch (Exception e) {System.out.println("Try again."); }
			}
		} 
		return dio;
	} 
	
	DataInputStream accept2read() {
		DataInputStream dis = null;  
		while (true) {
			try {
				Socket sc = servsoc.accept(); 
				dis = new DataInputStream(sc.getInputStream()); 
				break; 
			} catch (IOException ioe) {
				System.out.println("Fail in connecting to worker node.");
				try {Thread.sleep(2000); } catch (Exception e) {System.out.println("Try again."); }
			}
		}
		return dis;
	} 
	
	DataOutputStream accept2write() {
		DataOutputStream dos = null;  
		while (true) {
			try {
				Socket sc = servsoc.accept(); 
				dos = new DataOutputStream(sc.getOutputStream()); 
				break; 
			} catch (IOException ioe) {
				System.out.println("Fail in connecting to worker node.");
				try {Thread.sleep(2000); } catch (Exception e) {System.out.println("Try again."); }
			}
		}
		return dos;
	} 

	DataIO connectIO(String ip, int port) {
		DataIO dio = null;
		while (true) {
			try {
				Socket sc = new Socket(ip, port);
				DataInputStream dis = new DataInputStream(sc.getInputStream());
				DataOutputStream dos = new DataOutputStream(sc.getOutputStream()); 
				dio = new DataIO(dis, dos);...