草庐IT

combinatorics

全部标签

ruby - 更快的 n 选择 k 来组合数组 ruby

在尝试解决“网格上的路径”问题时,我编写了代码defpaths(n,k)p=(1..n+k).to_ap.combination(n).to_a.sizeend代码工作正常,例如ifn==8andk==2代码返回45,这是正确的路径数。但是,当使用较大的数字时,代码非常慢,我正在努力想出如何加快这个过程。 最佳答案 与其构建组合数组只是为了计算它,不如编写function定义组合的数量。我敢肯定还有包含此功能和许多其他组合函数的gem。请注意,我使用的是gemDistribution对于Math.factorial方法,但这是另一种

ruby - 使用 Ruby 在数组中查找大小为 N 的所有子集

给定一个数组['a','b','c','d','e','f'],我如何获得包含两个的所有子集的列表、三、四元素?我是Ruby的新手(从C#迁移过来),不确定“Ruby之道”是什么。 最佳答案 查看Array#combination然后是这样的:2.upto(4){|n|array.combination(n)} 关于ruby-使用Ruby在数组中查找大小为N的所有子集,我们在StackOverflow上找到一个类似的问题: https://stackoverf

ruby - 计算具有特定子集大小的集合分区

给定一个包含n个元素的集合,我需要找到该集合的所有分区,其中有k个大小几乎相等的子集。例如,对于一个有7个元素和3个子集的集合,我只想要分区,其中有两个子集,每个子​​集有2个元素,一个子集有3个元素。我不想要一个包含1、2和4个元素的子集的分区。换句话说,有877possiblepartitions对于一组7个元素,但我只对由2/2/3个元素组成的子集组成的105个(?)分区感兴趣:实际上n大约是35,这意味着大约有2.81*1027个分区,“仅”8,338,573,669,964,101partitionswiththreesubsets.因此,我不可能将它们全部计算出来并费力地找

javascript - 如何找到多重集的所有分区,其中每个部分都有不同的元素?

假设我们有这样一个数组:myArray=[A,A,B,B,C,C,D,E]我想创建一个算法,以便它可以找到加起来构成整个数组的所有组合,其中没有任何元素重复。示例组合:[A,B,C,D,E][A,B,C][A,B,C,D][A,B,C,E][A,B,C][A,B,C][D,E]说明:[A,B,C][A,B,C][D,E]和[A,B,C][D,E][A,B,C]是相同的组合。此外,子集的顺序也无关紧要。例如[A,B,C]和[B,A,C]应该相同。到目前为止,我没有超越varmyArray=["A","A","B","B","C","C","D","E"]console.log([...n

javascript - 从字符串数组创建唯一组合数组

我正在写一些东西,它接受一段文本并将其分解为可能的数据库查询,这些查询可用于查找类似的文本block。(类似于我输入时生成的“类似问题”列表)基本过程:从文本中删除停用词去除特殊字符从剩余的文本中创建一组独特的“词干”创建一个词干数组的可能组合数组(我被卡住了……有点)这是我目前所拥有的://baseListstartswithanemptyarray//candListstartswiththearrayofuniquestems//targetiswherethearraysofuniquecombinationsarestoredfunctioncreateUniqueCombo

javascript - 纸牌游戏手牌评估的组合学,带通配符和重复

正在开发一款具有多种曲折的拉米风格游戏:使用两副5组套牌而不是一组4组套牌(总共116张牌)。套房从3到King,每副牌有3张王牌(所以没有2也没有A)。11轮,第一轮每人3张牌,最后一轮每人13张牌。除了clown是百搭外,每张牌的值(value)都会轮到百搭,这对应于您手中的牌数。所以第一轮3是狂野的,第二轮4是狂野的……第11轮国王是狂野的(国王的数值为13)。目标是放下所有牌。一旦有人“出去”(放下所有牌),剩下的玩家就有一个回合放下所有牌或尽可能多的有效套牌/运行。无论您手中还剩下什么牌,您都会获得积分。玩家只能在至少有3张牌的组或回合中放下牌,即set:{3:c,3:d,3

javascript - 返回数组组合数组的函数

我正在尝试制作一个_.combinations函数(下划线混合),它采用三个参数arr、pockets、duplicates。这是我设计的一个测试,用于展示行为应该如何。expect(_.combinations([1,2],1,false)).to.be.equal([[1],[2]])expect(_.combinations([1,2],1,true)).to.be.equal([[1],[2]])expect(_.combinations([1,2,3],2,false)).to.be.equal([[1,2],[1,3],[2,3]])expect(_.combination

c# - 从字符串源列表动态生成最短正则表达式

我有一堆代表一系列字符串的SKU(库存单位),我想创建一个正则表达式来匹配它们。例如,如果我有SKU:varskus=new[]{"BATPAG003","BATTWLP03","BATTWLP04","BATTWSP04","SPIFATB01"};...我想自动生成正则表达式以识别任何一个SKU。我知道我可以简单地做"BATPAG003|BATTWLP03|BATTWLP04|BATTWSP04|SPIFATB01",但是SKU列表可能会很长,我想压缩生成的Regex以查看像“BAT(PAG003|TW(LP0(3|4)|SP04))|SPIFATB01”所以这是一个组合数学练习。

c# - 列出 1...n 之间的 k 个整数的所有可能组合(n 选择 k)

无缘无故,我决定寻找一种算法,该算法可以产生1...n之间的k个整数的所有可能选择,其中k个整数之间的顺序无关紧要(n选择k个东西)。出于完全相同的原因,这根本不是原因,我也用C#实现了它。我的问题是:您是否发现我的算法或代码有任何错误?而且,更重要的是,您能推荐一个更好的算法吗?请多关注算法而不是代码本身。这不是我写过的最漂亮的代码,但如果您看到错误,一定要告诉我。编辑:Alogirthm解释-我们持有k个指数。这会创建k个嵌套的for循环,其中循环i的索引是indices[i]。它模拟k个for循环,其中indices[i+1]属于嵌套在indices[i]循环中的循环。indic

javascript - 在像 chrome 这样的网络浏览器中,程序的内存和速度如何相关?

最近,我一直在研究R(5,5)的Ramsey定理。您可以在此处查看以前尝试的一些示例:http://zacharymaril.com/thoughts/constructionGraph.html本质:找到图中所有的k4或其补集,然后以不形成k5的方式连接另一个点(我知道有一种选择,从数学上讲,你不太可能超过14。但有一些方法围绕这个选择,我已经让它运行了22-23,而没有使我的浏览器变砖。)有了新的想法,我开始尝试逐批存储信息。当前构造图在每次看到图形时都会遍历并搜索图形中的所有k4。我认为这太过分了,因为k4将在之前的图中保持不变,并且只有新的k4可以出现在添加新点所产生的连接中。