考虑:
c=(a,b)=>(+a||0)+(+b||0)是的,这样解决是不好的。但我想把它缩短得更短。如果a是字符串,b是字符串,则返回0。如果其中一个是数字,则返回它。如果两个输入都是数字,则返回和(如果任一字符串可以转换为一个数字,则将其视为一个数字)。
我试着缩短这段时间,但我做不到。
这是任务的规范:
node app.js程序返回两个数字的和。如果没有提供数字,则结果应该是0。如果只提供一个号码,则只应返回该号码。
node app.js 4 5 # 9
node app.js 4 # 4
node app.js 4 a # 4
node app.js a 4 # 4
node app.js a b # 0
node app.js # 0它还需要处理浮点数,而不仅仅是整数。
这是我当前的代码(只有第1行的代码应该被优化为尽可能小):
c=(a,b)=>(+a||0)+(+b||0)
const input1 = process.argv[2];
const input2 = process.argv[3];
const result = c(input1, input2);
console.log(result);发布于 2023-01-12 12:17:57
如果只需要处理整数,则可以使用按位操作将其转换为数字:
c=(a,b)=>(a|0)+(b|b) // Both ways shown fine甚至更短:
c=a=>b=>~-a-~b // (a-1)-(-b-1)这不适用于浮子,但是这个技巧似乎在其他地方没有提到,所以我把它留在这里。
https://codegolf.stackexchange.com/questions/256644
复制相似问题