Ребят, такая ситуация, решил задачу на ресурсе типа codewars, загружаю туда код, а он выдаёт ошибку. Где - не показывает, просто типа ошибка и всё. В хэлпе говорят что это код скорее всего неправильный, но в консоле и в девтулс (в девтулс через prompt получаем input_data) всё работает нормально, никаких ошибок нет, код исполняется. Подскажите пожалуйста, в чём может быть ошибка в коде?
Внутренние тесты, доступные на самом ресурсе, тоже проходит нормально. То есть input_data ввод ловит. Но при загрузке и полной проверке отклоняет, в хэлпе говорят типа не проходит дополнительные внутренние тесты, смотрите типа код.
Код должен принимать цифры, и возвращать все возможные варианты при условии что каждая цифра может принимать несколько значений, все возможные значения в массиве base_data.
Нужно чтобы код исполнялся за 1 секунду, максимальный ввод - 8 цифр. Ограничение памяти 64 мб. Подскажите пожалуйста варианты оптимизации кода.
Код:
spoilerconst readline = require('readline')
const rl = readline.createInterface({
input: process.stdin
})
rl.on('line', function(line){
console.log(main(line))
})
function main(input_data) {
let base_data = [
{number: '0', value: '08'},
{number: '1', value: '124'},
{number: '2', value: '1235'},
{number: '3', value: '236'},
{number: '4', value: '1457'},
{number: '5', value: '24568'},
{number: '6', value: '3569'},
{number: '7', value: '478'},
{number: '8', value: '05789'},
{number: '9', value: '689'}
]
let final_data
let i = 0
if (input_data.length == 1) {
final_data = base_data.find(item => item.number == input_data)
return final_data = final_data.value.split('').join(',')
}
final_data = []
input_data = input_data.split('')
input_data.sort()
while (i < input_data.length) {
final_data[i] = base_data.find(item => item.number == input_data[i])
final_data[i] = final_data[i].value.split('')
++i
}
let result = final_data.reduce((acc1, num1) => acc1.reduce((acc2, num2) => acc2.concat(num1.map(num3 => [].concat(num2, num3))), []))
result = result.map(acc1 => acc1.join(''))
return result = result.join(',')
}