Revela-Games/breaklock/lab/bruteCalc.js
2023-03-31 14:04:34 -04:00

55 lines
1.2 KiB
JavaScript

#!/usr/bin/env node
if (!process.argv[2] || process.argv[2])
var patternLength = parseInt(process.argv[2]),
limit = 9,
proxies = [
[0,2,1],
[2,0,1],
[2,8,5],
[8,2,5],
[6,8,7],
[8,6,7],
[0,6,3],
[6,0,3],
[0,8,4],
[8,0,4],
[2,6,4],
[6,2,4]
]
if (!patternLength || patternLength < 1 || patternLength > limit) {
console.log('Usage: node bruteCalc.js patternLength')
console.log('Please use a valid \'patternLength\' value (between 1 and 9)')
process.exit(1)
}
function bf (length, stack, buffer) {
buffer = !buffer ? [] : buffer;
if (length <= 0) {
stack.push(buffer)
return stack
}
for (var i = 0; i < limit; i++) {
if (buffer.indexOf(i) != -1) {
continue
}
let pop = buffer[(buffer.length || 1) - 1]
if (buffer.length > 0 && proxies.find(pr => pr[0] == pop && pr[1] == i && buffer.indexOf(pr[2]) == -1)) {
continue
}
let clone = buffer.concat([])
clone.push(i)
bf(length-1,stack,clone)
}
return stack
}
var bfList = bf(patternLength, [])
bfList.forEach(s => console.log(s.join('')))
console.log('-----')
console.log('Pattern length : ' + patternLength)
console.log('Lock founds : ' + bfList.length)