const arr1 = [4,8,6,3,12,9];
function changeArr(arr) {
const map = new Map()
let find = false
let ret
arr.forEach((n) => {
map.set(n, (map.get(n) || 0) + 1)
})
arr.forEach((n) => {
if (find) return
dfs(n, 2, [n])
})
function dfs(prev, index, res) {
if (find) return
if (index === arr.length + 1) {
find = true
ret = res
}
if (map.has(prev * 2) && map.get(prev * 2) > 0) {
map.set(prev * 2, map.get(prev * 2) - 1)
dfs(prev * 2, index + 1, [...res, prev * 2])
map.set(prev * 2, map.get(prev * 2) + 1)
}
if (!(prev % 3) && map.get(prev / 3) > 0) {
map.set(prev / 3, map.get(prev / 3) - 1)
dfs(prev / 3, index + 1, [...res, prev / 3])
map.set(prev / 3, map.get(prev / 3) + 1)
}
}
return ret
}
console.log(changeArr(arr1));
console