问题标签 [algorithm]
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.
algorithm - 最好的自动换行算法?
自动换行是现代文本编辑器的必备功能之一。
如何处理自动换行?换行的最佳算法是什么?
如果文本是几百万行,我怎样才能使自动换行非常快?
为什么我需要解决方案?因为我的项目必须绘制具有各种缩放级别的文本并同时具有漂亮的外观。
运行环境为 Windows Mobile 设备。最大 600 MHz 速度,内存非常小。
我应该如何处理线路信息?假设原始数据有三行。
之后,中断文本将显示如下:
我应该多分配三行吗?或者有什么其他建议?
java - 在 Java 中执行 RFC 计算的算法
Java 类的 RFC 包含所有方法,这些方法可以响应类对象的消息或类中的某些方法调用。RFC = M + R 其中 M = 类中的方法数。R = 从 M 中直接调用的其他方法的总数。
认为 C 是 .class 而 J 是我们需要计算 RFC 的 .java 文件。
这里 M=6 和 R=9 (不要担心循环内的调用。它被认为是单个调用)
计算 M 很容易。使用类加载器加载 C 并使用反射来获取方法的计数。
计算 R 不是直接的。我们需要计算类的方法调用次数。仅限第一级。
计算 RI 必须使用正则表达式。通常格式是(不使用 . 的调用不计算在内)
或者
当调用返回直接成为另一个方法的参数时,没有分号。或者
这变成了两个方法调用
你还能想到什么其他的方法调用模式?除了使用 RegEx 之外,还有其他方法可以用来计算 R。
更新:
@McDowell
看起来使用 BCEL 我可以简化整个过程。让我试试。
mysql - 如何在 MySQL 数据库中维护递归不变量?
我有一个在 MySQL 数据库中编码为边的树:
对于树上的每一片叶子,items.tot
都是由某人设置的。对于内部节点,items.tot
需要是其子节点的总和。重复运行以下查询将生成所需的结果。
(请注意,这实际上不起作用,但这不是重点)
假设数据库存在并且已经满足不变量。
问题是:
在保持此要求的同时更新数据库的最实用方法是什么?更新可能会移动节点或改变
tot
叶节点上的值。可以假设叶节点将保留为叶节点,内部节点将保留为内部节点,整个事物将保留为一棵适当的树。
我曾经有过的一些想法:
- 完全失效,在任何更新后,重新计算一切(嗯......不)
- 在 items 表上设置触发器以更新已更新的任何行的父级
- 这将是递归的(更新触发更新,触发更新,...)
- 不起作用,MySQL 无法更新启动触发器的表
- 设置触发器以安排更新任何已更新行的父级
- 这将是迭代的(从计划中获取一个项目,处理它以安排更多项目)
- 这是什么开始?信任客户端代码来做对吗?
- 一个优点是,如果更新正确排序,则需要计算机计算的总和更少。但这种排序本身就是一个复杂的问题。
一个理想的解决方案将推广到其他“聚合不变量”
FWIW我知道这“有点过火”,但我这样做是为了好玩(有趣:动词,通过这样做找到不可能的事情。:-)
algorithm - 红黑树
我在最近读过的几本书中看到了二叉树和二叉搜索,但由于我仍处于计算机科学学习的初期,我还没有上过真正涉及算法和数据的课程结构严重。
我已经检查了典型的来源(维基百科、谷歌),并且大多数关于(特别是)红黑树的有用性和实现的描述都变得密集且难以理解。我敢肯定,对于有必要背景的人来说,这很有意义,但目前它读起来几乎就像一门外语。
那么,是什么让二叉树在您发现自己在编程时执行的一些常见任务中有用呢?除此之外,您更喜欢使用哪些树(请提供示例实现)以及为什么?
algorithm - 计算边角废料最少的切割清单
我正在做一个制作铝挤压切割清单的项目。
铝型材的长度为 5m。
我有一个需要从 5m 长度的铝型材中切割的较小长度的列表。
较小的长度需要按照从 5m 长度的铝挤压件中产生最少切边废料的顺序进行切割。
目前,我以这样的方式订购切割清单,通常较短的长度中最长的长度首先切割,而较小长度中最短的长度最后切割。这条规则的例外是,只要较短的长度不适合 5m 长度的铝挤压件的剩余部分,我就会使用适合的最长的较短长度。
这似乎产生了一个非常有效(非常少的切割浪费)切割清单,并且不需要很长时间来计算。然而,我想,即使切割清单非常有效,它也不一定是最有效的。
有谁知道一种计算最有效切割清单的方法,可以在合理的时间内计算出来?
编辑:感谢您的回答,我将继续使用“贪婪”方法,因为它似乎做得非常好(执行任何人工创建有效切割列表的尝试)并且速度非常快。
algorithm - 如何找到与给定整数对应的 Excel 列名?
您将如何确定 Excel 中第 n 列的列名(例如“AQ”或“BH”)?
编辑:一个与语言无关的算法来确定这是这里的主要目标。
algorithm - 求一个数的最大素数的算法
计算数字的最大素数的最佳方法是什么?
我认为最有效的方法如下:
- 找到能整除的最小素数
- 检查除法的结果是否为素数
- 如果没有,找到下一个最低的
- 转到 2。
我将这个假设建立在更容易计算小素数的基础上。这是对的吗?我应该研究哪些其他方法?
编辑:我现在意识到,如果有超过 2 个素数在起作用,我的方法是徒劳的,因为当结果是其他两个素数的乘积时,第 2 步失败,因此需要递归算法。
再次编辑:现在我意识到这仍然有效,因为最后找到的素数必须是最高的,因此对第 2 步的非素数结果的任何进一步测试都会导致更小的素数。
algorithm - 计算 2 个城市之间的距离
如何计算两个城市之间的距离?
algorithm - 不同语言的阶乘算法
我想看看你能想出的所有不同方法,用于阶乘子例程或程序。希望任何人都可以来这里看看他们是否想学习一门新语言。
想法:
- 程序
- 功能性
- 面向对象
- 一班轮
- 混淆的
- 怪人
- 错误代码
- 多语种
基本上我想看一个例子,写一个算法的不同方式,以及它们在不同语言中的样子。
请限制为每个条目一个示例。如果您试图突出一种特定的风格、语言或只是一个适合发表在一篇文章中的深思熟虑的想法,我将允许您在每个答案中提供多个示例。
唯一真正的要求是它必须在所有表示的语言中找到给定参数的阶乘。
有创意!
推荐指南:
我偶尔会继续编辑任何格式不正确的答案。
algorithm - 比较两个图像的算法
给定两个不同的图像文件(以我选择的任何格式),我需要编写一个程序来预测一个是否是另一个的非法副本的机会。副本的作者可能会做一些事情,比如旋转、制作负片或添加琐碎的细节(以及更改图像的尺寸)。
你知道做这种工作的任何算法吗?