您将如何在JavaScript中实现多个数组的笛卡尔积?
举个例子,
cartesian([1, 2], [10, 20], [100, 200, 300])
Run Code Online (Sandbox Code Playgroud) 我有这样的类结构:
Person
Dogs (dog 1, dog 2, etc)
Puppies (puppy A, puppy B, etc)
Run Code Online (Sandbox Code Playgroud)
有一个人.他有1只狗.每只狗有1只小狗.
我想列出所有可能的小狗组合,从每只狗中取一只小狗.例如:
狗1小狗A,狗2小狗狗1小狗A,狗2小狗B狗1小狗B,狗2小狗狗1小狗B,小狗2小狗B
如果它是在sql表中,我会做类似以下的事情来"乘以"表:
select * from puppies a, puppies b where a.parent='dog1' and b.parent='dog2'
Run Code Online (Sandbox Code Playgroud)
是否有一些linq-ish方式来做这种事情???
非常感谢
我有几个形式的笛卡尔点:(x,y)
其中x和y都是非负整数.
例如
(0,0),(1,1),(0,1)
我需要一种算法来安排上述点
,以便从一个点到另一个点将
x或y改变1.
换句话说,我想避免
对角线移动.
因此,上述点将被安排为:
(0,0),(0,1),(1,1).
类似地,对于(0,0),(1,1),(0,2)
,不存在这样的布置.
我不知道该怎么称呼,
但我称之为曼哈顿订购.
有人可以帮忙吗?
给定列表l1 = {1, 2},l2 = {4, 5, 6 }我想获得一个包含元素的新列表:
rez = { {1, 4}, {1, 5}, {1, 6}, {2, 4}, {2, 5}, {2, 6} }
Run Code Online (Sandbox Code Playgroud)
建议?
你能建议更简单,更清晰的方式来编写这个函数吗?
let cartesian_product sequences =
let step acc sequence = seq {
for x in acc do
for y in sequence do
yield Seq.append x [y] }
Seq.fold step (Seq.singleton Seq.empty) sequences
Run Code Online (Sandbox Code Playgroud) 我有一个迭代的C#循环,它填充了最多5列的棋盘格式.
这些值是成对的,它始终是每个列的标题和多个值,并且它将值组合为非重复组合.
从我能想象到的最简单的解决方案开始,在看了之后,我认为必须通过递归方式更好地解决这个问题.
下面是我到目前为止尝试过的一个例子:
List<EtOfferVariant> variants = new List<EtOfferVariant>();
_containers[0].Variant.ForEach(first =>
{
if (_containers.Count > 1)
{
_containers[1].Variant.ForEach(second =>
{
if (_containers.Count > 2)
{
_containers[2].Variant.ForEach(third =>
{
EtOfferVariant va = new EtOfferVariant();
va.OfferVariant1Type = _containers[0].VariantKey;
va.OfferVariant1 = first;
va.OfferVariant2Type = _containers[1].VariantKey;
va.OfferVariant2 = second;
va.OfferVariant3Type = third;
va.OfferVariant3 = _containers[3].VariantKey;
variants.Add(va);
});
}
else
{
EtOfferVariant va = new EtOfferVariant();
va.OfferVariant1Type = _containers[0].VariantKey;
va.OfferVariant1 = first;
va.OfferVariant2Type = second;
va.OfferVariant2 = _containers[1].VariantKey;
variants.Add(va);
}
});
}
else
{
EtOfferVariant …Run Code Online (Sandbox Code Playgroud) 我已经看了几个小时的解决方案,没有任何成功.希望有人可以帮助我.
我有M个原始邮政编码的动态N个项目数组.
例如:
项目1:11001,54010,60621项目2:11001,60621项目3:60621
我想创建一个如下所示的新数组:
路线1:11001,11001,60621路线2:11001,60621,60621路线3:54010,11001,60621
等 - 直到6号公路.
建议?
----------------------有没有办法在不使用Linq的情况下完成此任务?VB.net和Linq不一起:)
可能重复:
生成所有可能的组合
是否有一个很好的LINQ方式来做笛卡尔积?
如何在没有显式嵌套循环的情况下生成N个元素的组合,每个元素的供应量为2
我有一个列表列表,我想迭代所有可能的组合,我从每个内部列表中选择一个元素.如果我在编译时知道有多少列表,这是非常简单的,但是如果我事先不知道会有多少列表,我怎么能这样做呢?
如果我有三个列表(如果我知道,在编译时,将会有三个列表),并且我想要从三个列表中的每个列表中选择一个元素的所有组合,我可以轻松地使用LINQ查询:
var list1 = new[] { 1, 2 };
var list2 = new[] { 3, 4 };
var list3 = new[] { 5, 6 };
var combinations = from item1 in list1
from item2 in list2
from item3 in list3
select new[] { item1, item2, item3 };
// Results:
// {1, 3, 5}
// {1, 3, 6}
// {1, 4, 5}
// {1, 4, 6}
// {2, 3, 5}
// {2, 3, 6} …Run Code Online (Sandbox Code Playgroud) 可能重复:
生成所有可能的组合
我不确定如何说出这个问题; 但我正在研究一个愚蠢的逻辑谜题,我能够使用LINQ语句解决.相关代码如下所示:
(from myA in Enumerable.Range(1, 40)
from myB in Enumerable.Range(1, 40)
from myC in Enumerable.Range(1, 40)
from myD in Enumerable.Range(1, 40)
where myA + myB + myC + myD == 40
&& myA <= myB
&& myB <= myC
&& myC <= myD
select new[] {myA, myB, myC, myD})
Run Code Online (Sandbox Code Playgroud)
所以它基本上生成满足Where子句中标准的A,B,CD的所有组合.
我现在要做的就是概括这一点,所以我可以用N值而不是四个来做同样的事情.例如,使用3个值 - 等效代码将是:
(from myA in Enumerable.Range(1, 40)
from myB in Enumerable.Range(1, 40)
from myC in Enumerable.Range(1, 40)
where myA + myB + myC == 40
&& …Run Code Online (Sandbox Code Playgroud) 我需要部署使用Sql Server Service Broker外部激活机制(通过Feature Pack中的Service Broker外部激活器)的现实生产应用程序的任何人的一些指导.
我的规格相当简单(或者至少我是这么认为的),所以我想到了以下基本流程:
类似订单的实体被插入到状态为"已确认" 的Table_Orders中
SP_BeginOrder被执行并执行以下操作:
Queue_PreprocessOrder上的事件通知激活PreprocessOrder.exe实例(最大并发1),执行以下操作:
c# ×5
linq ×4
algorithm ×2
combinations ×2
.net ×1
activation ×1
arrays ×1
asp.net ×1
cartesian ×1
f# ×1
iteration ×1
javascript ×1
points ×1
recursion ×1
sample ×1
sequences ×1
sql ×1
sql-server ×1