简单错误记录-牛客网【JS/JavaScript】
题目
开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号。
处理:
1.记录最多8条错误记录,对相同的错误记录(即文件名称和行号完全匹配)只记录一条,错误计数增加;(文件所在的目录不同,文件名和行号相同也要合并)
2.超过16个字符的文件名称,只记录文件的最后有效16个字符;(如果文件名不同,而只是文件名的后16个字符和行号相同,也不要合并)
3.输入的文件可能带路径,记录文件名称不能带路径
数据范围:输入错误记录数量满足 1 \le n \le 1000 \1≤n≤1000 ,每条记录的长度满足 1 \le len \le 50 \1≤len≤50
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
let name_lines = [];
const names = [];
const lines = [];
const nums = [];
const res = [];
let input = '' ;
let input_array = []
rl.on('line', function (line) {
input = input + '$' + line;
}
)
process.stdin.on('end', function () {
input_array = input.split("$").filter(it => it);
// 处理input
input_array.forEach(it => {
const temps = it.split('\\');
const temp = temps[temps.length - 1];
if(name_lines.includes(temp)){
const idx = name_lines.indexOf(temp);
if(idx > -1){
res[idx].nums = res[idx].nums + 1;
}
}else {
name_lines.push(temp);
const t = {
name_line: temp,
name: temp.split(' ')[0],
lines: temp.split(' ')[1],
nums: 1,
}
res.push(t);
}
});
var compare = function (obj1, obj2) {
var val1 = obj1.nums;
var val2 = obj2.nums;
if (val1 < val2) {
return 1;
} else if (val1 > val2) {
return -1;
} else {
return 0;
}
}
res.sort(compare)
if(res.length > 8){
for(let i = 0; i< 8; i++){
const nl = res[i].name.length > 16 ? res[i].name.slice(-16) : res[i].name;
console.log(`${nl} ${res[i].lines} ${res[i].nums}`);
}
}else {
res.forEach(it => {
const nl = it.name.length > 16 ? it.name.slice(-16) : it.name;
console.log(`${nl} ${it.lines} ${it.nums}`);
})
}
});