From 1360320c1f93a8aae591ae8951e8241ed450094a Mon Sep 17 00:00:00 2001 From: Rodrigo Morais <58960796+rodigu@users.noreply.github.com> Date: Wed, 30 Mar 2022 20:59:19 -0700 Subject: [PATCH] :sparkles: Write to adjacency matrix --- algorithms.ts | 38 +++++++++++++++++++++++++++++++++++++- tester.ts | 7 +++++++ 2 files changed, 44 insertions(+), 1 deletion(-) diff --git a/algorithms.ts b/algorithms.ts index 6825dec..f4a51e8 100644 --- a/algorithms.ts +++ b/algorithms.ts @@ -1,5 +1,5 @@ import { Network } from "./network.ts"; -import { ParsedCSV } from "./enums.ts"; +import { ParsedCSV, base_id } from "./enums.ts"; /** * Tries to generate a network with the given number of nodes and edges. @@ -104,3 +104,39 @@ function parseCSV(csv_file: string[]): ParsedCSV { return parsed_csv; } + +async function writeCSV( + rows: Array>, + file_name = "adjacencyMatrix.csv" +) { + let csv = ""; + rows.forEach((row) => { + row.forEach((element, i) => { + csv += `${element + (i === row.length - 1 ? "\n" : ",")}`; + }); + }); + await Deno.writeTextFile(file_name, csv); +} + +export async function writeAdjacencyMatrix( + network: Network, + file_name = "adjacencyMatrix.csv" +) { + const number_of_rows = network.vertices.size + 1; + const rows: Array> = [...Array(number_of_rows)].map(() => + Array(number_of_rows).fill(0) + ); + + network.vertex_list.forEach((vertex, i) => { + rows[0][i + 1] = vertex.id; + rows[i + 1][0] = vertex.id; + network.vertex_list.forEach((vertex2, j) => { + if (network.hasEdge(vertex2.id, vertex.id)) { + rows[i + 1][j + 1] = 1; + rows[j + 1][i + 1] = 1; + } + }); + }); + + await writeCSV(rows, file_name); +} diff --git a/tester.ts b/tester.ts index 90731fc..0b26516 100644 --- a/tester.ts +++ b/tester.ts @@ -94,3 +94,10 @@ Deno.writeTextFile( `./data/test_${getTestTime()}_${Math.floor(200 * Math.random())}.txt`, test_data ); + +const randomNet = nex.randomNetworkGen({ + number_vertices: 20, + number_edges: 40, +}); + +nex.writeAdjacencyMatrix(randomNet);