Skip to content

Instantly share code, notes, and snippets.

@headwinds
Last active June 5, 2020 16:08
Show Gist options
  • Save headwinds/0c217686bd7582d54fdb1244c03b5cfb to your computer and use it in GitHub Desktop.
Save headwinds/0c217686bd7582d54fdb1244c03b5cfb to your computer and use it in GitHub Desktop.
big O - O(N2)
license: mit

Learning about more about Big O notation today and came across this post by ParanoidAgnostic and wanted to attempt to port the Java to Javascript & D3.

credit to this block for the color approach.

Built with blockbuilder.org

<!DOCTYPE html>
<head>
<meta charset="utf-8">
<script src="https://d3js.org/d3.v5.min.js"></script>
<style>
body { margin:0;position:fixed;top:0;right:0;bottom:0;left:0; }
</style>
</head>
<body>
<script>
const width = window.innerWidth;
const height = window.innerHeight;
const tileX = 10; // total per row
const tileY = 10; // total per column
const tileSize = 50;
const circleArray = [];
const greens = d3.scaleOrdinal(d3.schemeGreens[3]);
// const colorArray = [d3.schemeCategory10, d3.schemeAccent];
const colorScheme = greens; // multi colour is colorArray
const getRandFill = () => {
const ranIndex = Math.floor(Math.random() * 10);
return colorScheme(ranIndex);
}
const svg = d3.select("body").append("svg")
.attr("width", width)
.attr("height", height)
const drawTile = (x,y,z) => {
svg.append("g")
.attr("transform", "translate (" + x + "," + y + ")")
.append("rect")
.attr("fill", getRandFill())
.attr("stroke", "#DDD")
.attr("stroke-width", 1)
.attr("width", z)
.attr("height", z)
}
const processRow = (y, z) => {
for(x=0;x<tileX;x++) {
const xPos = x * z;
const yPos = y * z;
drawTile(xPos,yPos,z);
}
}
const processLayer = (z) => {
for(y=0;y<tileY;y++) {
processRow(y,z);
}
}
processLayer(tileSize)
</script>
</body>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment