gpt4 book ai didi

javascript - 在javascript中将Pronumerals加在一起

转载 作者:行者123 更新时间:2023-11-29 20:01:29 25 4
gpt4 key购买 nike

我希望 javascript 能够解释以下内容(ab 总是不同的,所以这些只是一个例子)

a=(3x)+y  
b=x+(4y)

并返回以下内容

a+b=(4x)+(5y)  

所有变量都是字符串而不是整数,因此数学不能应用于 a , b , xy

我还没有开始这个特定的实例,因为我不知道从哪里开始。

附言我没有任何使用 jQuery 的经验,所以如果可能的话,尽量避免使用它

编辑:该程序旨在帮助寻找游戏 minecraft 中的原 Material 。例如,如果你想要一把钻石剑(a)和一把钻石镐(b),a需要 1 个木头(x)和 2 个钻石(y),以及 b需要 1 个木头 ( x ) 和 3 个钻石 ( y )。一旦我通过这个程序运行它,我想要一个回复说它需要 2 个木头和 5 个钻石。抱歉之前的任何混淆...

最佳答案

首先,让我们编写三个小辅助函数:

// exprToDict("3x + y") -> {x:3, y:1}
function exprToDict(e) {
var d = {};
e.replace(/(\d+)\s*(\w+)|(\w+)/g, function($0, $1, $2, $3) {
d[$2 || $3] = parseInt($1 || 1);
});
return d;
}

// addDicts({x:1, y:2}, {x:100, y:3}) -> {x:101, y:5}
function addDicts(a, b) {
var d = {};
for(var x in a) d[x] = a[x];
for(var x in b) d[x] = (d[x] || 0) + b[x];
return d;
}

// dictToExpr({x:1, y:2}) -> x + (2 y)
function dictToExpr(d) {
var e = [];
for(var x in d)
if(d[x] == 1)
e.push(x);
else
e.push("(" + d[x] + " " + x + ")");
return e.join(" + ")
}

完成后,我们就可以编写主要函数了:

function addThings(a, b) {
return dictToExpr(
addDicts(
exprToDict(a),
exprToDict(b)
))
}

让我们测试一下:

sword = "(3 wood) + diamond"
pickaxe = "wood + (2 diamond)"

console.log(addThings(sword, pickaxe))

结果:

(4 wood) + (3 diamond)

为了处理两个以上的东西,修改addDicts接受数组:

function addDicts(dicts) {
var sum = {};
dicts.forEach(function(d) {
for(var x in d)
sum[x] = (sum[x] || 0) + d[x];
});
return sum;
}

并将addThings重写为:

function addThings(things) {
return dictToExpr(
addDicts(
things.map(exprToDict)));
}

例子:

sword = "(3 wood) + diamond"
pickaxe = "wood + (2 diamond)"
house = "10 wood + iron"


console.log(addThings([sword, pickaxe, house]))

关于javascript - 在javascript中将Pronumerals加在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14273581/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com