问题标签 [simplification]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
251 浏览

boolean - 布尔代数表达式简化

您好,我必须简化第一个表达式,它来自 7 段显示分配。大写表示它不是,例如第一部分 ZYXW 表示 NOT z AND NOT y AND NOT x AND NOT w。我希望这是有道理的。

所以问题是我找到了简化为 a = z + x + yw + YW 的表达式的答案,但是我的简化以 a = zYX 结束

下面是我简化的步骤,请有人找出问题所在。

0 投票
1 回答
140 浏览

wolfram-mathematica - 如何在 Mathematica 中将子表达式插入到更大的表达式中?

我有以下表达式:

我想在上面的表达式中插入以下子表达式:

我该怎么做呢?我试过使用:

以及许多其他解决方案。没有一个工作。

我对“=”和“==”之间的区别也有点困惑,但我已经尝试了这两种情况。

0 投票
5 回答
58 浏览

jquery - jQuery想要摆脱多个点击语句

这是我一直在开发的网站:http: //jaakkouusitalo.fi/new如您所见,有四个彩色方块,它们都有不同的类别。

我想简化它,制作 if 和 else 语句。我缺乏知道该怎么做的技能,所以我决定直接在这里问。

这是我的html文件:

目前我正在像这样处理我的jQuery:

我认为有更好的方法来做到这一点。我只是不知道怎么做。

0 投票
3 回答
1447 浏览

opengl - 网格状结构的网格简化

我正在开发一个 3D 建筑应用程序。该建筑是在 3D 网格(如魔方)上完成的,网格的每个单元格都是实心立方体或 45 度坡度。为了说明,这是我从谷歌图片中提取的倒角立方体的图片:

在此处输入图像描述

忽略右边的图像,焦点是左边的那个。目前,在构建阶段,我分别绘制了每个单元格的每个面。但是,在导出它时,我想对其进行简化。所以在上面的立方体中,我希望上下左右后正面分别由一个四边形(两个三角形)组成,并且边缘将从两个四边形减少到单个四边形。

我最近一直在尝试做的事情如下:

从各个方向逐层迭代形状,并为每一层找出一个很好的简化(删除重叠边以创建单个多边形,然后分割多边形以避免孔,使用耳朵剪裁进行三角剖分)。

显然把事情复杂化了(至少我希望是这样)。如果我有一个顶点、法线和索引列表(目前有很多重复的顶点),是否有一些简洁的方法来简化?限制是索引不能在面之间共享(因为我需要法线指向不同的方向),但否则我不介意它不是最快或最佳的解决方案,我宁愿它很容易实现和维护。

编辑:为了进一步澄清,我已经执行了隐藏面移除,这不是问题。其次,最重要的是没有质量下降,只是简化了面本身(我需要保留锋利的边缘)。

0 投票
1 回答
108 浏览

trigonometry - 简化 atan(tan(a+b))

我想知道为什么这不能按预期工作:

它减少到:

即根本没有。我本来希望它减少到:

0 投票
0 回答
691 浏览

java - 简化RPG战斗方法

我正在为一大段代码苦苦挣扎,这些代码现在应该可以工作,但也许可以改进?我正在为学校作业制作一个 RPG 游戏,现在我可以把它交给它了。但如果它可以改进(缩短),我会很高兴一些指针:)

所有对其他方法的调用都有效(例如 player.isDead 等)。

有问题的两种方法是:

我从 Game 类中调用 .fight 来开始战斗(带有怪物列表)。

0 投票
2 回答
339 浏览

javascript - 实现一个基本的数学表达式简化器

我正在为我的 calc 类开发一个辅助项目,以区分像y=x^2Javascript 中的简单函数。为此,我将表达式解析为抽象语法树,然后硬编码衍生规则,如乘积规则和链规则。

唯一会用到的函数是 AP 微积分/第一年的微积分问题,所以三角函数、对数、指数都在起作用

我的程序很好地采用了导数,但我最终得到的是以一种荒谬的简单方式编写的函数。

例如,微分x^2给出(2*(x^(2-1))),这在技术上是正确的,但可以更容易地写成 2*x。到目前为止,我有一个基本的简化器,它基本上重复分析树,并应用一些基本规则。

我的一般程序是用递归下降来分析它。

如果当前树没有变量,则评估它并用结果替换当前节点。

否则,应用大量 if 语句来简化它。这包括像

  • 如果要乘以零,请将表达式替换为零
  • 如果要乘以 1,请将表达式替换为另一个操作数
  • 如果您要提高到 0 的幂,请将表达式替换为 1。

等等等等。如果我真的想要进行任何真正的简化,比如组合类似的术语,这将很快失控。另外,如果我想确定任何两个表达式是否等价,我最好的解决方案是在函数的域中简单地生成随机数,看看它们是否相等。然而,这似乎不是很有效。

我怎样才能更有效地确定两个不同表达式的相等性(一个简单的例子是x+2and 2+x),有没有办法在没有大量 if 语句的情况下简化函数?

0 投票
1 回答
248 浏览

java - 布尔代数简化

所以,我有几个这样的问题。我只需要其中之一的帮助。你也能解释你是如何得到答案的吗?我将不胜感激

显示 ab(!c) + !ab(!c) 到 b(!c) 的代数化简。

0 投票
0 回答
403 浏览

graphics - 如何在通过二次误差最小化的网格简化算法中处理三角形的折叠

最近我正在实施 QEM 网格简化算法,该算法最初来自 Michael Garland 和 Paul S. Heckbert 的论文Surface Simplification Using Quadric Error Metrics

根据算法,我们应该contraction cost为每条边计算a,并将所有边放入一个最小堆中,这样每次我们都以最小的成本选择一条边来收缩。然而,收缩可能导致入射三角形折叠,即在收缩前后范数变化超过90度。折叠现象可以通过以下示例进行可视化:

假设我们获得最小成本的边是V1V2,并且我们即将收缩它。如图所示,我们预计收缩将导致V1V2合并在一起。更重要的是,如果我们将三角形的范数定义Tri(ABV2)cross_product(V2A, V2B),我们可以发现这个范数的方向从指向外变为向内。这不是我们想要的。论文中说,如果遇到这种情况,我们应该“惩罚”这个操作,即在 's 的成本上增加一个大数,V1V2使其V1V2成为非堆顶,这意味着此时它不会被拾取。相反,我们将以最小的成本获得下一个边缘。

该算法可以用以下伪代码编写:

但是,我发现了一个非常棘手的问题。如前所述,当我发现一条边的收缩E1可能导致某些三角形的折叠时,我扩大了它的成本并将其扔回堆中,然后我选择了另一条边E2,但仍然发现它会导致折叠。如此等等。我没有发现一条边可以再收缩,从而使循环无限继续,实际上没有一条边可以简化。

有没有人可以给我关于算法的任何提示,以便解决问题?太感谢了!

在此处输入图像描述

0 投票
1 回答
114 浏览

ruby - 如何简化此枚举器代码?

为了简洁起见,我想优化以下代码。

假设x1, x2, ..., xNEnumerator对象。

  1. 以上不简洁
  2. 它适用于 x1, x2 作为Arrays,但不适用于Enumerators
    • 因为应该为内部循环重置枚举器迭代器

我试过这个但没有成功:

有什么建议吗?

更新

目前解决了: