You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
triangles.fun/src/App.svelte

122 lines
2.0 KiB

3 years ago
<script context="module">
import Graph from "./Graph.js"
</script>
3 years ago
<script>
3 years ago
const numVertices = 15
const graph = new Graph()
let states = []
for (let i = 0; i < numVertices; i++) {
3 years ago
states[i] = false
3 years ago
graph.addVertex(i)
if (i > 0) {
graph.addEdge(i, i - 1)
}
3 years ago
}
3 years ago
graph.addEdge(0, 8)
graph.addEdge(1, 7)
graph.addEdge(1, 8)
graph.addEdge(2, 6)
graph.addEdge(2, 7)
graph.addEdge(3, 5)
graph.addEdge(3, 6)
graph.addEdge(5, 11)
graph.addEdge(6, 10)
graph.addEdge(6, 11)
graph.addEdge(7, 9)
graph.addEdge(7, 10)
graph.addEdge(9, 13)
graph.addEdge(10, 12)
graph.addEdge(10, 13)
graph.addEdge(12, 14)
const change = num => {
console.log(num, graph.adjacencyList[num])
}
3 years ago
</script>
<style>
.triangle {
width: 600px;
height: 450px;
display: grid;
grid-template-columns: repeat(9, 1fr);
grid-template-rows: repeat(5, 1fr);
grid-column-gap: 0px;
grid-row-gap: 0px;
}
.div0 {
grid-area: 5 / 1 / 6 / 2;
}
.div1 {
grid-area: 5 / 3 / 6 / 4;
}
.div2 {
grid-area: 5 / 5 / 6 / 6;
}
.div3 {
grid-area: 5 / 7 / 6 / 8;
}
.div4 {
grid-area: 5 / 9 / 6 / 10;
}
.div5 {
grid-area: 4 / 8 / 5 / 9;
}
.div6 {
grid-area: 4 / 6 / 5 / 7;
}
.div7 {
grid-area: 4 / 4 / 5 / 5;
}
.div8 {
grid-area: 4 / 2 / 5 / 3;
}
.div9 {
grid-area: 3 / 3 / 4 / 4;
}
.div10 {
grid-area: 3 / 5 / 4 / 6;
}
.div11 {
grid-area: 3 / 7 / 4 / 8;
}
.div12 {
grid-area: 2 / 6 / 3 / 7;
}
.div13 {
grid-area: 2 / 4 / 3 / 5;
}
.div14 {
grid-area: 1 / 5 / 2 / 6;
}
.circle {
width: 30px;
height: 30px;
background: red;
clip-path: circle();
3 years ago
text-align: center;
3 years ago
}
3 years ago
.green {
background-color: green;
3 years ago
}
</style>
<main>
<div class="triangle">
3 years ago
{#each states as _, i}
<div
class="circle div{i}"
class:green={states[i]}
on:click={() => change(i)}>
{i}
</div>
{/each}
3 years ago
</div>
</main>