Python计算图形中三角形数量

简介:

看一个论坛里的.说如何用python计算图形中三角形的数量. 图如下:

wKioL1Wxzo6Azmd0AADVxRiHZ0M802.jpg


论坛那位兄弟是先把所有的边上的点放到一个list里面. 然后去生成相关组合. 

再去判断点的位置正确与否.


所有的点组合list:

1
[ 'abh' , 'acgi' , 'adfj' , 'aek' , 'bcde' , 'efgh' , 'hijk' ]


下图中三个框分别为三条线上的点集合.由图可知,要构成三角形必须三个集合两两之间取

交集得到相应的点.

wKiom1Wxza7jNPRDAAEAN8ShJ8o828.jpg


任意两个集合的交集.为一个点. 用itertools的组合方法生成三个集合的组合

再两个之间取交集得到相应的点.即为相应结果.


代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/usr/bin/env python
import  itertools
 
=  [ 'abh' , 'acgi' , 'adfj' , 'aek' , 'bcde' , 'efgh' , 'hijk' ]
=  set (i)  for  in  a ]
 
def  CounterTri():
     =  []
     for  in  itertools.combinations(a,  3 ):
         o, p, q  =  x[ 0 ] & x[ 1 ], x[ 1 ] & x[ 2 ], x[ 2 ] & x[ 0 ]
         if  bool (o)  and  bool (p)  and  bool (q)  and  o ! =  p ! =  q:
             k.append( list (o | p | q))
             
     print  "Triangle Counter is %s"  %  len (k)
     
     for  in  k:
         print  i
     
CounterTri()

结果如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
$ python ttt.py
Triangle Counter  is  24
[ 'a' 'c' 'b' ]
[ 'a' 'h' 'g' ]
[ 'a' 'i' 'h' ]
[ 'a' 'b' 'd' ]
[ 'a' 'h' 'f' ]
[ 'a' 'h' 'j' ]
[ 'a' 'b' 'e' ]
[ 'a' 'h' 'e' ]
[ 'a' 'h' 'k' ]
[ 'h' 'b' 'e' ]
[ 'a' 'c' 'd' ]
[ 'a' 'g' 'f' ]
[ 'a' 'i' 'j' ]
[ 'a' 'c' 'e' ]
[ 'a' 'e' 'g' ]
[ 'a' 'i' 'k' ]
[ 'c' 'e' 'g' ]
[ 'i' 'h' 'g' ]
[ 'a' 'e' 'd' ]
[ 'a' 'e' 'f' ]
[ 'a' 'k' 'j' ]
[ 'e' 'd' 'f' ]
[ 'h' 'j' 'f' ]
[ 'h' 'k' 'e' ]



本文转自 nonono11 51CTO博客,原文链接:http://blog.51cto.com/abian/1677905,如需转载请自行联系原作者
相关文章
|
8月前
|
Python
Python中Cp、Cpk、Pp、Ppk的计算与应用
总的来说,Cp、Cpk、Pp、Ppk是衡量过程能力的重要工具,它们可以帮助我们了解和改进生产过程,提高产品质量。
798 13
|
8月前
|
存储 人工智能 算法
使用Python计算从位置x到y的最少步数
本文通过Python代码结合广度优先搜索(BFS)算法,解决从起点到终点的最少步数问题。以二维网格为例,机器人只能上下左右移动,目标是最短路径。BFS按层遍历,确保首次到达终点即为最短路径。文中提供完整Python实现,包括队列与访问标记数组的使用,并输出示例结果。此外,还探讨了双向BFS、Dijkstra及A*算法等优化方法,帮助读者深入理解最短路径问题及其高效解决方案。
264 0
|
Python
Python中的函数是**一种命名的代码块,用于执行特定任务或计算
Python中的函数是**一种命名的代码块,用于执行特定任务或计算
212 18
|
Python
使用Python计算字符串的SHA-256散列值
使用Python计算字符串的SHA-256散列值
344 7
|
机器学习/深度学习 算法 编译器
Python程序到计算图一键转化,详解清华开源深度学习编译器MagPy
【10月更文挑战第26天】MagPy是一款由清华大学研发的开源深度学习编译器,可将Python程序一键转化为计算图,简化模型构建和优化过程。它支持多种深度学习框架,具备自动化、灵活性、优化性能好和易于扩展等特点,适用于模型构建、迁移、部署及教学研究。尽管MagPy具有诸多优势,但在算子支持、优化策略等方面仍面临挑战。
548 3
|
数据可视化 算法 JavaScript
基于图论的时间序列数据平稳性与连通性分析:利用图形、数学和 Python 揭示时间序列数据中的隐藏模式
本文探讨了如何利用图论分析时间序列数据的平稳性和连通性。通过将时间序列数据转换为图结构,计算片段间的相似性,并构建连通图,可以揭示数据中的隐藏模式。文章介绍了平稳性的概念,提出了基于图的平稳性度量,并展示了图分区在可视化平稳性中的应用。此外,还模拟了不同平稳性和非平稳性程度的信号,分析了图度量的变化,为时间序列数据分析提供了新视角。
363 0
基于图论的时间序列数据平稳性与连通性分析:利用图形、数学和 Python 揭示时间序列数据中的隐藏模式
|
Python
【10月更文挑战第15天】「Mac上学Python 26」小学奥数篇12 - 图形变换与坐标计算
本篇将通过 Python 和 Cangjie 双语实现图形变换与坐标计算。这个题目帮助学生理解平面几何中的旋转、平移和对称变换,并学会用编程实现坐标变化。
286 1
|
数据可视化 Python
【10月更文挑战第12天】「Mac上学Python 23」小学奥数篇9 - 基础概率计算
本篇将通过 Python 和 Cangjie 双语实现基础概率的计算,帮助学生学习如何解决简单的概率问题,并培养逻辑推理和编程思维。
190 1
|
Python
Python基础(输出五行五角星,数量每行递增/输出九九乘法表)
需求:在控制台连续输出五行*, 每一行星星的数量依次递增 思路:使用while循环输出五行内容, 依次输出数字1到5, 再使用数字乘以字符串'*', 即可在每行输出一个星星, 两个星星, ... 五个星星, 从而实现递增
949 1
Python基础(输出五行五角星,数量每行递增/输出九九乘法表)
|
3月前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
315 102

推荐镜像

更多