Python计算图形中三角形数量

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

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

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

所有的点组合list:

[‘abh‘,‘acgi‘,‘adfj‘,‘aek‘,‘bcde‘,‘efgh‘,‘hijk‘]

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

交集得到相应的点.

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

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

代码如下:

#!/usr/bin/env python
import itertools

a = [‘abh‘,‘acgi‘,‘adfj‘,‘aek‘,‘bcde‘,‘efgh‘,‘hijk‘]
a = [ set(i) for i in a ]

def CounterTri():
    k = []
    for x 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 i in k:
        print i
    
CounterTri()

结果如下:

$ 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‘]
时间: 2024-10-13 20:23:24

Python计算图形中三角形数量的相关文章

python计算列表中素数的个数

1 #!/usr/bin/env python 2 # Gets the number of primes in the list 3 4 list1 = [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 29] 5 # Get prime function . 6 def get_num(n): 7 count = False 8 for x in range(2,n-1): 9 if n % x == 0: 10 count = True 11 break 12 if not

python计算数组中对象出现的次数并且按照字典输出

解决的问题如题,如果对Python不是很熟悉,解决的办法可能如下: test_array=[1,2,3,1,2,3]; def count_object1(array): result_obj={} for item in test_array: count=0 for item_t in test_array: if item is item_t : count+=1 result_obj[item]=count return result_obj if __name__ == '__main

python文本联系--计算字符串中各个字符的数量

1 #!/usr/bin/python3 2 #-*- coding:utf-8 -*- 3 #计算字符串中,各个字符串的含量 4 str='adfadfafdfaafasdfasdcadf' 5 from collections import Counter 6 str1=Counter(str) 7 keys=sorted(str1) #可以返回str中的唯一值,且按照字母排序 8 #keys ['a', 'c', 'd', 'f', 's'] 9 values=str1.values()

数学之路-python计算实战(17)-机器视觉-滤波去噪(中值滤波)

Blurs an image using the median filter. C++: void medianBlur(InputArray src, OutputArray dst, int ksize) Python: cv2.medianBlur(src, ksize[, dst]) → dst Parameters: src – input 1-, 3-, or 4-channel image; when ksize is 3 or 5, the image depth should

Python 对Twitter中指定话题的被转载Tweet数量的频谱分析

CODE: #!/usr/bin/python # -*- coding: utf-8 -*- ''' Created on 2014-7-10 @author: guaguastd @name: retweet_frequency_map.py ''' if __name__ == '__main__': # import visualize from visualize import visualize_frequency_map # pip install prettytable # fr

python之Counter类:计算序列中出现次数最多的元素

Counter类:计算序列中出现次数最多的元素 1 from collections import Counter 2 3 c = Counter('abcdefaddffccef') 4 print('完整的Counter对象:', c) 5 6 a_times = c['a'] 7 print('元素a出现的次数:', a_times) 8 9 c_most = c.most_common(3) 10 print('出现次数最多的三个元素:', c_most) 11 12 times_dic

用python计算lda语言模型的困惑度并作图

转载请注明:电子科技大学EClab——落叶花开http://www.cnblogs.com/nlp-yekai/p/3816532.html 困惑度一般在自然语言处理中用来衡量训练出的语言模型的好坏.在用LDA做主题和词聚类时,原作者D.Blei就是采用了困惑度来确定主题数量.文章中的公式为: perplexity=exp^{ - (∑log(p(w))) / (N) } 其中,P(W)是指的测试集中出现的每一个词的概率,具体到LDA的模型中就是P(w)=∑z p(z|d)*p(w|z)[z,d

实时计算平台中的弹性集群资源管理

本文系微博运维数据平台(DIP)在实时计算平台的研发过程中集群资源管理方面的一些经验总结和运用,主要关注以下几个问题: 异构资源如何整合? 实时计算应用之间的物理资源如何隔离? 集群资源利用率如何提高? 集群运维成本如何降低? 1. 背景 这是我们初期的一个实时计算架构,大致划分为三个部分: (1)日志收集: 使用Rsynlog.Flume.Scribe汇聚各个业务方发送过来的日志数据:如果条件允许,业务方也可以直接将数据写入Kafka. (2)日志传输: 使用Kafka作为日志收集组件与实时应

用Python计算北京地铁的两站间最短换乘路线

用Python计算北京地铁的两站间最短换乘路线 地铁数据 地铁数据用字典表示: {station:{neighbor1:line number,neighbor2:line number,-},station2:{-},-} 现在我们有地铁的站名,下面就是如何将地铁站名转化为上面所需要的标准字典格式. 从网上找到的地铁站名为字符串: line1=u'''苹果园 古城路 八角游乐园 八宝山 玉泉路 五棵松 万寿路 公主坟 军事博物馆 木樨地 南礼士路 复兴门 西单 天安门西 天安门东 王府井 东单