46 lines
1.0 KiB
JavaScript
46 lines
1.0 KiB
JavaScript
import * as fs from 'node:fs'
|
|
|
|
const fns = JSON.parse(fs.readFileSync('subsets.json'))
|
|
const subsets = new Array(fns.length)
|
|
|
|
for (let fn_i = 0; fn_i < fns.length; fn_i++) {
|
|
const fn = fns[fn_i].str
|
|
subsets[fn_i] = new Set
|
|
|
|
for (let subfn_i = 0; subfn_i < fns.length; subfn_i++) {
|
|
if (fn_i == subfn_i) {
|
|
continue
|
|
}
|
|
const subfn = fns[subfn_i].str
|
|
let is_subfn = true
|
|
|
|
for (let char_i = 0; char_i < fn.length; char_i++) {
|
|
const char = fn[char_i]
|
|
const subchar = subfn[char_i]
|
|
|
|
if (char != subchar && subchar != 'x') {
|
|
is_subfn = false
|
|
break
|
|
}
|
|
}
|
|
if (is_subfn) {
|
|
subsets[fn_i].add(subfn_i)
|
|
}
|
|
}
|
|
}
|
|
console.log(subsets)
|
|
for (let subset_i = 0; subset_i < subsets.length; subset_i++) {
|
|
const subset = subsets[subset_i]
|
|
|
|
if (subset.size == 0) {
|
|
continue
|
|
}
|
|
const fn_name = fns[subset_i].name
|
|
console.log(fn_name)
|
|
|
|
for (const subfn_i of subset) {
|
|
const subfn_name = fns[subfn_i].name
|
|
console.log(fn_name + '->' + subfn_name)
|
|
}
|
|
}
|