草庐IT

algorithm

全部标签

c# - 我如何确定在我的 2048 实现中移动和合并了哪些图 block ?

我正在构建一个2048WinForms小游戏只是为了好玩。请注意,这与2048AI无关.我只是想制作一款人类可以玩的2048游戏。我首先决定使用0-17来表示方block。0代表一个空瓦片。1代表2block。2代表4block。3代表8block,依此类推。然后我就在考虑如何计算结果板,给定移动方向和移动前的板。这是我的想法:要向上移动,就是逆时针旋转90度,向左移动,然后向后旋转要向右移动,就是将棋盘顺时针旋转180度,向左移动,然后向后旋转要向下移动,只需将棋盘顺时针旋转90度,向左移动,然后向后旋转。所以我只需要弄清楚当玩家向左移动时如何计算结果板,然后我可以通过旋转板、向左移

c# - 在不规则多边形中寻找点的算法

假设我有一个如下所示的多边形:我正在寻找一种C#算法,通过它我可以在任何多边形内找到一个点(可以是中间点,也可以是随机点)。为了找到质心,我使用了以下算法:privatePoint3dGetPolyLineCentroid(DBObjectpObject,doublepImageWidth,doublepImageHeight){Point2d[]pointArray=GetPointArrayOfRoomPolygon(pObject);doublecentroidX=0.0;doublecentroidY=0.0;doublesignedArea=0.0;doublex0=0.0;

c# - 人气算法

在SO18上,Joel提到了一种算法,该算法会根据项目的年龄和受欢迎程度对项目进行排名,并且该算法基于引力。有人可以发布这个吗?C#会很不错,但实际上任何语言(好吧,我不会LISP)都可以。 最佳答案 我的理解是从另外一个JeffAtwood上大致是这样的发布t=(timeofentrypost)-(Dec8,2005)x=upvotes-downvotesy={1ifx>0,0ifx=0,-1ifx 关于c#-人气算法,我们在StackOverflow上找到一个类似的问题:

c# - 比较 XML 节点的高效算法

我想确定XML文档中两个不同的子节点是否相等。如果两个节点具有相同的属性集和子注释并且所有子注释也相等(即整个子树应该相等),则它们应被视为相等。输入文档可能非常大(高达60MB,要比较的节点超过100000个)并且性能是个问题。检查两个节点是否相等的有效方法是什么?示例:HelloWorld此XML片段描述了OpenXML文档中的段落。该算法将用于确定文档是否包含与文档前面的另一个段落具有相同属性(w:pPr节点)的段落(w:p节点)。我的一个想法是将节点的外部XML存储在哈希集中(通常我必须首先获得规范的字符串表示,其中属性和子注释总是以相同的方式排序,但我可以期待我的节点已经是这

c# - 评估数学表达式的最佳算法?

评估数学表达式的最佳算法是什么?我希望能够稍微优化一下,因为我可能有一个包含各种变量的公式,我可能需要使用不同的变量对其进行数百次评估。所以基本上,如果我最初可以解析公式,以便以某种方式对其进行优化,然后我可以根据需要多次将变量传递给这个优化版本,每次它都会为我生成一个结果。我将使用Delphi或C#编写此代码。我已经使用调车场算法编写了类似的东西,但每次我需要计算相同的公式时,我都必须经过解析阶段。必须有更好的方法来做到这一点。 最佳答案 如果你想用Delphi来做,你可以看看JclExprEval单元是如何工作的,它是JEDIC

c# - 源代码控制系统的算法?

我需要编写一个简单的源代码控制系统,想知道我将使用什么算法来处理文件差异?出于许可方面的考虑,我不想查看现有的源代码。我需要根据MPL获得它的许可,所以我无法查看任何现有系统,例如CVS或Mercurial,因为它们都是GPL许可的。只是为了提供一些背景知识,我只需要一些非常简单的函数-文件夹中的二进制文件。没有子文件夹,每个文件的行为都像它自己的存储库。除了一些权限外没有元数据。总的来说非常简单,我真正关心的是如何只存储一个文件在不同版本之间的差异,而不会浪费太多空间,而且效率也不会太低(也许每次X更改都存储一个完整版本,有点像视频中的关键帧?) 最佳答案

c# - C# 中的快速数组移位实现?

我需要将数组向右和向左移动N个位置。从我移动到的一侧弹出的项目必须在另一侧返回。右移13:[0,1,2,3,4,5,6,7,8,9]->[7,8,9,0,1,2,3,4,5,6]左移15:[0,1,2,3,4,5,6,7,8,9]->[5,6,7,8,9,0,1,2,3,4]此操作将发生数百万次并且必须非常快。我当前的实现如下。请查看并建议是否需要进行一些优化。if(shift>0){intoffset=array.Length%shift;if(offset>0){byte[]temp=newbyte[offset];if(!right){Array.Copy(array,temp,

c# - 算法:最大计数器

我有以下问题:你有N个计数器,初始设置为0,你可以对它们进行两种可能的操作:increase(X)-计数器X增加1,max_counter-所有计数器都设置为任何计数器的最大值。给出了一个由M个整数组成的非空零索引数组A。这个数组代表连续的操作:如果A[K]=X,使得1≤X≤N,则操作K为increase(X),如果A[K]=N+1则操作K是max_counter。例如,给定整数N=5和数组A使得:A[0]=3A[1]=4A[2]=4A[3]=6A[4]=1A[5]=4A[6]=4每次连续操作后计数器的值将是:(0,0,1,0,0)(0,0,1,1,0)(0,0,1,2,0)(2,2,

c# - 大文本文件中的词频

我正在尝试读取一个大文本文件并输出其中的不同单词及其计数。到目前为止,我已经尝试了几次,这是迄今为止我想出的最快的解决方案。privatestaticreadonlychar[]separators={''};publicIDictionaryParse(stringpath){varwordCount=newDictionary();using(varfileStream=File.Open(path,FileMode.Open,FileAccess.Read))using(varstreamReader=newStreamReader(fileStream)){stringline

c# - 编写一个函数来比较两个字符串并返回第三个字符串,该字符串仅包含出现在两个字符串中的字母

我有这个作业。并通过以下方式解决了它。无论这是一个好方法还是我需要使用任何其他数据结构以更好的方式解决它,我需要您的评论。publicstringReturnCommon(stringfirstString,stringscndString){StringBuildernewStb=newStringBuilder();if(firstString!=null&&scndString!=null){foreach(charicharinfirstString){if(!newStb.ToString().Contains(ichar)&&scndString.Contains(icha