-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathshaper-taper.js
More file actions
118 lines (103 loc) · 2.55 KB
/
shaper-taper.js
File metadata and controls
118 lines (103 loc) · 2.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
const validBitCombos = [
[
//0 one/five bit
[0, 0, 0, 0, 0, 1],
[0, 0, 0, 0, 1, 0],
[0, 0, 0, 1, 0, 0],
[0, 0, 1, 0, 0, 0],
[0, 1, 0, 0, 0, 0],
[1, 0, 0, 0, 0, 0],
],
[
//1 two/four bit
[0, 0, 0, 0, 1, 1],
[0, 0, 0, 1, 1, 0],
[0, 0, 1, 1, 0, 0],
[0, 1, 1, 0, 0, 0],
[1, 1, 0, 0, 0, 0],
[0, 0, 0, 1, 0, 1],
[0, 0, 1, 0, 1, 0],
[0, 1, 0, 1, 0, 0],
[1, 0, 1, 0, 0, 0],
[0, 0, 1, 0, 0, 1],
[0, 1, 0, 0, 1, 0],
[1, 0, 0, 1, 0, 0],
[0, 1, 0, 0, 0, 1],
[1, 0, 0, 0, 1, 0],
[1, 0, 0, 0, 0, 1],
],
[
//2 three bit
[0, 0, 0, 1, 1, 1],
[0, 0, 1, 1, 1, 0],
[0, 1, 1, 1, 0, 0],
[1, 1, 1, 0, 0, 0],
[0, 0, 1, 0, 1, 1],
[0, 1, 0, 1, 1, 0],
[1, 0, 1, 1, 0, 0],
[0, 0, 1, 1, 0, 1],
[0, 1, 1, 0, 1, 0],
[1, 1, 0, 1, 0, 0],
[0, 1, 0, 1, 0, 1],
[1, 0, 1, 0, 1, 0],
],
];
let validCombinations = [
[
[0, 0, 0, 0, 0, 0],
[1, 1, 1, 1, 1, 1],
],
];
function invert(arr) {
newarr = [];
for (let i = 0; i < arr.length; i++) {
newarr.push(arr[i] === 1 ? 0 : 1);
}
return newarr;
}
// match each subset of valid bit combos with every inverted combination
// 1 with inverted 5
// 2 with inverted 4
// 3 with itself without repeating
for (let subset = 0; subset < validBitCombos.length; subset++) {
for (let topRow = 0; topRow < validBitCombos[subset].length; topRow++) {
for (let botRow = 0; botRow < validBitCombos[subset].length; botRow++) {
if (topRow !== botRow) {
validCombinations.push([
validBitCombos[subset][topRow],
invert(validBitCombos[subset][botRow]),
]);
}
}
}
}
// console.log(validCombinations)
const app = new Vue({
el: "#app",
components: { "domino-template": { template: "#domino-template" } },
data() {
return {
randomSeed: "My Rad Project",
dominoCount: 28,
rowSpacing: 20,
columnSpacing: 1,
validCombos: validCombinations,
};
},
computed: {
permutation() {
let shuffledDominoes = [].concat(this.validCombos);
Math.seedrandom(this.randomSeed);
for (let i = this.validCombos.length - 1; i >= 0; i--) {
let select = Math.floor(Math.random() * i);
let swap = shuffledDominoes[i];
shuffledDominoes[i] = shuffledDominoes[select];
shuffledDominoes[select] = swap;
console.log;
}
console.log(shuffledDominoes[0][0]);
// shuffledDominoes.length = this.dominoCount;
return shuffledDominoes.slice(0, this.dominoCount);
},
},
});