我有两个包含单词的字符串:
'dan esh gah'和'da nesh gah'
我需要交叉词,就是'gah'在这种情况下。
我用了这个代码
vocab=['dan esh gah']
gold=['da nesh gah']
s1 = ''.join(vocab)
s2=''.join(gold)
a=[]
track=[]
for k in range(len(s1)+1):
if k!=0:
for ka in range(0,len(s1)+1,k):
if s1[ka:ka+k] in s2:
track.append((len(s1[ka:ka+k])+1,s1[ka:ka+k]))
intersect=max(track)[1]
print(intersect)
Run Code Online (Sandbox Code Playgroud)
但答案是错误的:
vocab=['dan esh gah']
gold=['da nesh gah']
s1 = ''.join(vocab)
s2=''.join(gold)
a=[]
track=[]
for k in range(len(s1)+1):
if k!=0:
for ka in range(0,len(s1)+1,k):
if s1[ka:ka+k] in s2:
track.append((len(s1[ka:ka+k])+1,s1[ka:ka+k]))
intersect=max(track)[1]
print(intersect)
Run Code Online (Sandbox Code Playgroud)
请帮我解决这个问题。
我有两个关联数组,我想检查是否
$array1["foo"]["bar"]["baz"] exists in $array2["foo"]["bar"]["baz"]
Run Code Online (Sandbox Code Playgroud)
值无关紧要,只是“路径”。array_ intersect_ assoc是否可以满足我的需求?
如果没有,我该怎么写我自己?
我正在尝试实现一个八叉树,为此,我需要一个快速的AABB射线交叉算法.经过一番搜索,我偶然发现了这篇文章.从这里提供的源代码中,我将pluecker_cls_cff函数转换为C#,如下所示:
public bool Intersect_2(ref RayPluecker r)
{
switch (r.Classification)
{
// 7 same-ish cases snipped
case Classification.PPP:
return !((r.Position.X > this.Max.X) || (r.Position.Y > this.Max.Y) || (r.Position.Z > this.Max.Z) ||
(r.PlueckerCoefficient.X + r.Direction.X * this.Max.Y - r.Direction.Y * this.Min.X < 0) ||
(r.PlueckerCoefficient.X + r.Direction.X * this.Min.Y - r.Direction.Y * this.Max.X > 0) ||
(r.PlueckerCoefficient.Y + r.Direction.X * this.Min.Z - r.Direction.Z * this.Max.X > 0) ||
(r.PlueckerCoefficient.Y + r.Direction.X * this.Max.Z - r.Direction.Z * …Run Code Online (Sandbox Code Playgroud) 我在http://mathworld.wolfram.com/Circle-LineIntersection.html之后写了这个圆线交叉检测,但看起来好像它或我遗漏了一些东西.
public static bool Intersect
(Vector2f CirclePos, float CircleRad, Vector2f Point1, Vector2f Point2)
{
Vector2f p1 = Vector2f.MemCpy(Point1);
Vector2f p2 = Vector2f.MemCpy(Point2);
// Normalize points
p1.X -= CirclePos.X;
p1.Y -= CirclePos.Y;
p2.X -= CirclePos.X;
p2.Y -= CirclePos.Y;
float dx = p2.X - p1.X;
float dy = p2.Y - p1.Y;
float dr = (float)Math.Sqrt((double)(dx * dx) + (double)(dy * dy));
float D = p1.X * p2.Y * p2.X - p1.Y;
float di = (CircleRad * CircleRad) * (dr * …Run Code Online (Sandbox Code Playgroud) 在我写的代码中,我需要交叉两个水平列表,如:
chr1 aatt
chr8 tagg
chr11 aaaa
chr7 gtag
Run Code Online (Sandbox Code Playgroud)
chr8 tagt
chr1 tttt
chr7 gtag
chr11 aaaa
chr9 atat
#This lists are compounded by one str per line, wich it has a "/t" in the middle.
#Also note that are in different order
Run Code Online (Sandbox Code Playgroud)
我怎样才能得到这两个列表的交集?
chr7 gtag
chr11 aaaa
Run Code Online (Sandbox Code Playgroud)
我也可以生成每行两个字符串的列表,如下所示:\
('chr1', 'aatt')
('chr8', 'tagg')
('chr11', 'aaaa')
('chr7', 'gtag')
Run Code Online (Sandbox Code Playgroud)
('chr8', 'tagt')
('chr1', 'tttt')
('chr7', 'gtag')
('chr11','aaaa')
('chr9', 'atat')
Run Code Online (Sandbox Code Playgroud)
在这种情况下,重要的是必须将两列视为一列
谢谢你的时间!
我想找到数组中每个数组元素的交集并取相交.
输入是数组的数组,例如,如下面脚本中所提到的"'list_arrays'"'过滤器'是需要应用于观察到的交叉点总长度的限制.输出预期为这样的数组"[[2 ,4]]"
list_arrays = [[1, 2, 3, 4], [2, 5, 6], [1, 5, 8], [8, 2, 4]]
filter = 2
first_element_array = Array.new
list_arrays.each_with_index do |each_array1, index1|
list_arrays.each_with_index do |each_array2, index2|
unless index1 < index2
intersection = each_array1 & each_array2
if intersection.length == filter.to_i
first_element_array.push(intersection)
end
end
end
end
puts first_element_array
Run Code Online (Sandbox Code Playgroud)
上面的过程需要很长的执行时间,因为我有太长的数组(百万行).我需要一种简单的rubistic方法来处理这个问题.任何人都有任何简单的想法吗?
我需要检查是否有Polygon另一个实例相交Polygon.(该intersects()方法不会这样做,因为它只接受一个Rectangle2D或一个矩形区域作为争论).
如果重要的话,那两个Polygons我想要检查它们是否相交,都是长方形的,但是以不是90度的天使旋转,所以我不能使用这种intersects()方法,或者至少我认为我可以'吨.
我怎样才能做到这一点?谢谢
我正在评估OpenLayers3是否能够为我们提供日常所需的一些工具,而且我遇到了一个我不得不存在但我无法找到相关信息的功能.
我需要知道OpenLayers是否允许我们计算两个多边形之间的交叉区域.
我们将在地图上加载不同的图层.通常是具有地形分离的图层和具有地形类的其他图层.
我们需要在每个分离中确定每个类的地形有多少,而我最好的拍摄是通过在不同层中交叉多边形.
我无法在OpenLayers3文档中找到有关此功能的示例或信息.
如果你们中的任何一个人都知道一个更好的方法来计算一个地块中的土地类型数量,我也很高兴知道它.
编辑:如何实现多边形碰撞算法?将萨瑟兰-Hodgman算法做的伎俩?
我在3D空间的某个地方有一条线和一个三角形.换句话说,我有三个点([x,y,z]每个)三角形,和两个点(也是[x,y,z])的线.
我需要找出一种方法,希望使用C++来确定线是否曾经过三角形.与三角形平行且具有多个共同点的线应计为"不相交".
我已经制作了一些代码,但它不起作用,即使视觉表现清楚地显示了交叉点,我也总是假的.
ofVec3f P1, P2;
P1 = ray.s;
P2 = ray.s + ray.t;
ofVec3f p1, p2, p3;
p1 = face.getVertex(0);
p2 = face.getVertex(1);
p3 = face.getVertex(2);
ofVec3f v1 = p1 - p2;
ofVec3f v2 = p3 - p2;
float a, b, c, d;
a = v1.y * v2.z - v1.z * v2.y;
b = -(v1.x * v2.z - v1.z * v2.x);
c = v1.x * v2.y - v1.y * v2.x;
d = -(a * p1.x + b * p1.y …Run Code Online (Sandbox Code Playgroud) 我有n套A0,A2,...... An-1持有一套E的物品.
我将配置C定义为由n位组成的整数,因此C的值介于0和2 ^ n-1之间.现在,我定义以下内容:
(C) an item e of E is in configuration C
<=> for each bit b of C, if b==1 then e is in Ab, else e is not in Ab
Run Code Online (Sandbox Code Playgroud)
例如,对于n = 3,配置C = 011对应于在A0和A1中但不在A2中的E项(NOT是重要的)
C[bitmap]是在集合中具有完全存在/不存在模式的元素的数量. C[001]是A0中不在任何其他集合中的元素数量.
另一个可能的定义是:
(V) an item e of E is in configuration V
<=> for each bit b of V, if b==1 then e is in Ab
Run Code Online (Sandbox Code Playgroud)
例如,对于n = 3,(V)配置V = 011对应于A0和A1中的E项
V[bitmap]是所选集合的交集计数. (即位图为真的所有集合中有多少个元素的计数.) V[001]是A0中元素的数量. V[011] …