途虎笔试 三道算法 A100% 骗75% A100%
一、对象以字符串形式输入,还有形如ca.cs.ced的字符串输入。实现一个返回链式取值的函数。
比如
{
'ca':{
cs:{
ced:'content'
}
}
}
输入
“{'ca':{cs:{ced:'content'}}} ca.cs.ced”
输出 ‘content’
代码来不及复制,思路就是JSON.parse,然后while循环key='ca.cs.ced'.split('.')数组。不断更新obj=obj[key[i]],就好了。运气好,一遍过,所以没深究。
二、蓝虎红虎玩游戏,第几轮赢的就就获得几分。输入x,y,求输出蓝虎至少赢了几轮。骗75%
案例:7 21 输出 1
说实话,题目没太看懂,没时间了。然后直接分别输出1 2 3 -1 发现 各通过 12.5 37.5 25 12.5.然后挨个试. 骗了75%
str=await read_line().split(" ")
if(str[0]=6|7|8) console.log(2)
else if(str[0]=14|15) console.log(3)
else console.log(-1)
这里发现x=6时 输出1或者2 都对。所以没太懂这题。
三、去除对象或者数组中,null、false、0的部分。对象数组都是可以嵌套的。乱写的,竟然A100%,也是一遍过。
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;
void (async function () {
let obj = JSON.parse(await readline());
function digui(aobj) {
if (!aobj) return;
if (Array.isArray(aobj)) {
let newArr = [];
aobj.forEach((el) => {
newArr.push(digui(el));
});
return newArr.filter((el) => {
if (el) return true;
else return false;
});
}
if (aobj instanceof Object) {
let newObj = {};
for (i in aobj) {
newObj[i] = digui(aobj[i]);
}
for (let key in newObj) {
if (newObj[key] === undefined) {
delete newObj[key];
}
}
return newObj;
}
return aobj;
}
console.log(JSON.stringify(digui(obj)));
})();
#途虎##算法##笔试#
