Tag: algorithm

3D碰撞/物体检测如何工作?

我一直在想这个。 在像GTA那样有数千个物品的游戏中,一旦你在健康包里,游戏是如何知道的? 每个对象都不可能有一个事件监听器? 迭代也不好? 我只是想知道如何实际完成。

编程之谜:如何将Excel列名转换为数字?

最近我在求职面试中被问到解决一个编程难题,我认为这将是有趣的分享。 它是关于将Excel列字母翻译为实际数字的,如果您记得,Excel会用从A到Z的字母命名其列,然后顺序为AA,AB,AC … AZ,BA,BB等。 你必须写一个接受一个string作为参数的函数(比如“AABCCE”)并返回实际的列号。 解决scheme可以是任何语言。

两个矩形相交

我有两个矩形,每个都有4个值: 左侧位置X ,顶部位置Y ,宽度W和高度H : X1, Y1, H1, W1 X2, Y2, H2, W2 矩形不旋转,如下所示: +——————–> X axis | | (X,Y) (X+W, Y) | +————–+ | | | | | | | | | | +————–+ v (X, Y+H) (X+W,Y+H) Y axis 确定两个矩形的交点是否为空的最佳解决scheme是什么?

指点一些很好的SVM教程

我一直在努力掌握支持向量机的基础知识,并下载并阅读了许多在线文章。 但是还是无法把握。 我想知道,如果有一些 很好的教程 可以用于理解的示例代码 或者你可以想到的东西,这将使我能够轻松学习SVM基础知识。 PS:我不知何故设法学习PCA(主成分分析)。 顺便说一句,你们会猜到我正在从事机器学习。

为什么不使用堆sorting总是

堆分类sortingalgorithm似乎具有O(nlogn)的最坏情况复杂度,并使用O(1)空间进行sorting操作。 这似乎比大多数sortingalgorithm更好。 那么,为什么没有人总是使用堆sorting作为sortingalgorithm(以及为什么人们使用sorting机制,如合并sorting或快速sorting)? 另外,我也看到人们用Heapsorting来使用术语“不稳定性”。 这意味着什么?

是否有一种颜色混合algorithm,像混合真实颜色一样工作?

RGB颜色的常见混合与绘画的混合颜色是非常不同的,它是光的混合而不是颜料的混合。 例如: Blue (0,0,255) + Yellow (255,255,0) = Grey (128,128,128) (它应该是蓝色+黄色=绿色) 是否有任何已知的颜色混合algorithm,就像混合真实的颜色一样工作? 我的方法 我已经尝试过了 将两种颜色转换为HSV和混合色调(乘以饱和度计算的系数),以及饱和度和通道值的简单平均值。 然后我从两种颜色计算平均亮度,并调整结果颜色以匹配这个亮度。 这工作得很好,但色调混合有时是错误的,例如: Red (Hue 0°) + Blue (Hue 240°) = Green (Hue 120°) 我发现有时我需要将色调值改变360°(当色相之间的差值大于180°时)。 Red (Hue 360°) + Blue (Hue 240°) = Magenta/fuchsia (Hue 300°) 但是这种转变也不是很好,例如: Cyan (Hue 179°) + Red (Hue 0°) = Hue 89.5° Cyan (Hue 181°) + […]

寻找机器人在自己家中的位置

我正在使用真空吸尘器机器人来控制微控制器(Arduino)。 清洁房间时,我想让它更有效率 。 就目前来说,它只是直行,当它碰到什么东西时就转身。 但是,我很难find最好的algorithm或方法来了解它在房间里的位置 。 我正在寻找一种保持便宜(不到100美元)而不是复杂(不需要计算机视觉博士论文)的想法。 如有必要,我可以在房间里添加一些不连续的标记。 现在,我的机器人有: 一个摄像头 三个接近传感器(约1米范围) 指南针(现在不用) 无线上网 如果电池已满或几乎空着,其速度可能会有所不同 上网本Eee PCembedded在机器人上 你有这个想法吗? 这些问题是否存在任何标准方法? 注意:如果这个问题属于另一个网站,请移动它,我找不到比Stack Overflow更好的地方。

为什么我必须明确指定STLalgorithm函数的范围,即使我想在整个容器上工作?

当使用STL的sort()或min_element()函数时,我总是必须明确地指定范围的开始和结束: void range_example() { std::vector<int> list = {7, 3, 9, 1, 5, 2}; auto found_element = std::min_element(list.begin(), list.end()); std::cout << *found_element << std::endl; } 这是有道理的,如果我打算只在我的容器的一部分工作,但更多的时候我需要function在整个容器上工作。 是否有一个原因,为什么没有一个重载的function,允许这样做: std::vector<int> list = {7, 3, 9, 1, 5, 2}; auto found_element = std::min_element(list); 有没有办法完成一个我忽略的容器的总范围的函数调用? 编辑:我知道,我可以封装在一个函数本身,但因为这必须做所有function,我想避免,如果有更好的办法。

为什么Python的itertools.permutations包含重复项? (当原始列表重复时)

普遍认为,n个不同符号的列表有n! 排列。 但是,当符号不明确时,在math和其他地方最常见的惯例似乎是只计算不同的排列。 因此,列表[1, 1, 2] 1,1,2 [1, 1, 2]的排列通常被认为是 [1, 1, 2], [1, 2, 1], [2, 1, 1] 。 事实上,下面的C ++代码正好打印出这三个: int a[] = {1, 1, 2}; do { cout<<a[0]<<" "<<a[1]<<" "<<a[2]<<endl; } while(next_permutation(a,a+3)); 另一方面,Python的itertools.permutations似乎打印别的东西: import itertools for a in itertools.permutations([1, 1, 2]): print a 这打印 (1, 1, 2) (1, 2, 1) (1, 1, […]

在图上“好”的网格线间隔的algorithm

我需要一个相当聪明的algorithm来为图表(图表)提供“漂亮的”网格线。 例如,假定一个条形图的值为10,30,72和60.您知道: 最小值:10最大值:72范围:62 第一个问题是:你从什么开始? 在这种情况下,0将是直观的值,但这不会阻止其他数据集,所以我猜测: 网格最小值应该是0或低于范围内数据的最小值的“好”值。 或者,可以指定。 网格最大值应该是范围内最大值以上的“好”值。 或者,可以指定它(例如,如果显示百分比,则可能需要0到100,而不考虑实际值)。 该范围内的网格线(滴答)的数量应该是指定的或在给定范围内的数字(例如3-8),这样的值是“好”(即整数),并最大限度地使用图表区域。 在我们的例子中,80将是一个明智的最大值,因为这将使用90%的图表高度(72/80),而100会创build更多的浪费空间。 任何人都知道这个好的algorithm? 语言是无关紧要的,因为我会在我需要的地方实施它。