Python识别璇玑图中诗的数量
一、璇玑图简介
璇玑图的读法有很多,这里我使用七七棋盘格的读法,在璇玑图中分离出一个七七棋盘格,如下表
吏 | 官 | 同 | 流 | 污 | 合 | 玩 | 痞 | 悍 | 蒙 | 骗 | 造 | 假 | 蛋 | 鸡 | 宴 | 请 | 客 | 友 | 朋 | 远 | 戚 | 偏 | 正 | 反 | 拨 | 乱 | 冤 | 隶 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
奸 | 贪 | 险 | 冠 | 眷 | 阉 | 佃 | ||||||||||||||||||||||
味 | 道 | 人 | 味 | 爱 | 公 | 荒 | ||||||||||||||||||||||
投 | 背 | 渣 | 辣 | 宠 | 猪 | 田 | ||||||||||||||||||||||
臭 | 终 | 灭 | 麻 | 姬 | 汗 | 地 | ||||||||||||||||||||||
相 | 诚 | 明 | 香 | 美 | 血 | 天 | ||||||||||||||||||||||
烂 | 俭 | 贤 | 馋 | 甜 | 粘 | 寒 | ||||||||||||||||||||||
妓 | 贱 | 贫 | 苦 | 断 | 礼 | 谦 | 妻 | 仙 | 女 | 桃 | 花 | 妹 | 嫣 | 姐 | 懒 | 惰 | 猪 | 狗 | 低 | 贱 | 妾 | 酸 | 流 | 泪 | 目 | 满 | 惨 | 婢 |
惨 | 妍 | 淡 | 廉 | 奸 | 艳 | 难 | ||||||||||||||||||||||
败 | 羞 | 雅 | 美 | 猴 | 心 | 家 | ||||||||||||||||||||||
花 | 月 | 和 | 勤 | 狐 | 嘴 | 破 | ||||||||||||||||||||||
佛 | 花 | 温 | 耕 | 鬼 | 手 | 颜 | ||||||||||||||||||||||
心 | 闭 | 娴 | 洁 | 神 | 眼 | 抢 | ||||||||||||||||||||||
虔 | 腼 | 恬 | 俭 | 欢 | 馋 | 欢 | ||||||||||||||||||||||
姊 | 俭 | 食 | 衣 | 胖 | 兄 | 短 | 弟 | 闲 | 柳 | 细 | 云 | 风 | 谦 | 爷 | 叛 | 雷 | 鸣 | 闪 | 电 | 悍 | 爹 | 严 | 管 | 制 | 规 | 家 | 善 | 娣 |
善 | 安 | 瘫 | 憨 | 烦 | 喘 | 谦 | ||||||||||||||||||||||
慈 | 龙 | 身 | 猫 | 厌 | 呼 | 戴 | ||||||||||||||||||||||
猫 | 虎 | 软 | 熊 | 疯 | 吸 | 佩 | ||||||||||||||||||||||
封 | 凰 | 心 | 仔 | 野 | 胸 | 宝 | ||||||||||||||||||||||
挡 | 凤 | 肠 | 免 | 狂 | 肺 | 剑 | ||||||||||||||||||||||
栏 | 健 | 忐 | 变 | 癫 | 惨 | 短 | ||||||||||||||||||||||
鸽 | 馆 | 舍 | 弃 | 反 | 姑 | 叛 | 子 | 贤 | 方 | 圆 | 规 | 法 | 严 | 哥 | 贪 | 仁 | 义 | 德 | 道 | 善 | 姨 | 残 | 心 | 狠 | 断 | 斩 | 弯 | 蛇 |
店 | 犬 | 廉 | 灿 | 侃 | 怨 | 癍 | ||||||||||||||||||||||
亏 | 惧 | 母 | 姐 | 伴 | 解 | 布 | ||||||||||||||||||||||
盈 | 猫 | 慈 | 艳 | 舞 | 化 | 衣 | ||||||||||||||||||||||
叔 | 女 | 爱 | 戏 | 刀 | 利 | 缝 | ||||||||||||||||||||||
舅 | 弱 | 君 | 龙 | 斩 | 让 | 勤 | ||||||||||||||||||||||
乱 | 软 | 侃 | 潭 | 尖 | 谦 | 俭 | ||||||||||||||||||||||
嫡 | 远 | 亲 | 疏 | 羞 | 伯 | 谗 | 娌 | 蛮 | 父 | 鬼 | 通 | 神 | 仙 | 鹅 | 卵 | 洁 | 石 | 藏 | 隐 | 山 | 蝎 | 患 | 病 | 痛 | 寒 | 门 | 艳 | 媳 |
针对上表所示的七七棋盘格图,在苏蕙璇玑图中,前人们总结了上百种很零碎的读法,让普通读者眼花缭乱。其实,我们可以用一句话就把前人的所有读法涵盖了,即,从这个棋盘格的任何一个“交叉结点字”起,沿任何一条线段阅读,当读完第4条线段时,一首七言四绝诗就诞生了,同时,该诗反序逆读后,也是另一首七言四绝诗!(注1:图3共有25个“交叉结点字”,它们分别是:吏、痞、鸡、戚、隶、婢、妾、姐、妻、妓、姊、弟、爷、爹、娣、蛇、姨、哥、子、鸽、嫡、娌、鹅、媳、蝎。注2:每个“线段”都由8个汉字连接而成,其中顶端的两个汉字就是两个“交叉结点字”)
二、算法实现
我们将上面的表格简化成一张图,如下所示:
代码如下:
class Gragh():
def __init__(self, nodes, sides):
'''
nodes 表示点
sides 表示边
'''
# self.sequense是字典,key是点,value是与key相连接的点
self.sequense = {}
# self.side是临时变量,主要用于保存与指定点相连接的点
self.side = []
for node in nodes:
for side in sides:
u, v = side
# 指定点与另一个点在同一个边中,则说明这个点与指定点是相连接的点,则需要将这个点放到self.side中
if node == u:
self.side.append(v)
elif node == v:
self.side.append(u)
self.sequense[node] = self.side # 统计出各个节点与哪一些节点直接连接
self.side = []
'''
做五个循环,五个点确定四句诗
'''
def search(self):
res = []
for i in range(1, 26):
for j in self.sequense[i]:
for k in self.sequense[j]:
if k != i:
for z in self.sequense[k]:
if z != j:
for y in self.sequense[z]:
if y != k:
a = [i, j, k, z, y]
if a not in res:
res.append(a)
return res
if __name__ == "__main__":
nodes = [i + 1 for i in range(25)]
sides = [(1, 2), (2, 3), (3, 4), (4, 5), (1, 6), (1, 7), (2, 7), (3, 8), (4, 9), (5, 10), (5, 9), (6, 7),(7, 8), (8, 9), (9, 10), (6, 11), (7, 12), (7, 13), (8, 13), (9, 13),(9, 14), (10, 15), (11, 12), (12, 13), (13, 14), (14, 15), (11, 16), (12, 17), (13, 18), (13, 17),(13, 19), (14, 19), (15, 20), (16, 17), (17, 18), (18, 19), (19, 20), (16, 21), (17, 21), (17, 22),(18, 23), (19, 24), (19, 25), (20, 25), (21, 22), (22, 23), (23, 24), (24, 25)]
G = Gragh(nodes, sides)
print(len(G.search()))
运行结果
Python识别璇玑图中诗的数量的更多相关文章
- python matplotlib给图中的点加标签
在写论文用到matplotlib画散点图,想着如果能把每个点对应的ID打在点的旁边就好了,经过一番搜索,最后找到了方法. 首先是打点,先把所有的点画好,举例如下: p1 = ax.scatter(X[ ...
- Python使用tesserocr识别文字过程中遇到的一个问题
最近在使用Python识别PNG图像中包含的文字时遇到一个问题.解决过程记录如下. (Python使用tesserocr的安装过程不再描述.) 在使用tesserocr识别PNG图像中的文字时,如果P ...
- python—networkx:在一张图中画出多个子图
通过plt.subplot能够在一张图中画出多个子图 #coding: utf-8 #!/usr/bin/env python """ Draw a graph with ...
- [hdu2460]network(依次连边并询问图中割边数量) tarjan边双联通分量+lca
题意: 给定一个n个点m条边的无向图,q个操作,每个操作给(x,y)连边并询问此时图中的割边有多少条.(连上的边会一直存在) n<=1e5,m<=2*10^5,q<=1e3,多组数据 ...
- python利用dijkstra算法求解图中最短距离
利用dijkstra算法,来完成图中两个顶点间最短的距离,可以直接复制使用,只需要修改参数即可 def dijkstra_raw(edges, from_node, to_node): "& ...
- 使用DeepWalk从图中提取特征
目录 数据的图示 不同类型的基于图的特征 节点属性 局部结构特征 节点嵌入 DeepWalk简介 在Python中实施DeepWalk以查找相似的Wikipedia页面 数据的图示 当你想到" ...
- 如何用python搞定验证码中的噪点
背景:朋友在为"关山口男子职业技术学校"写一款校园应用,于是找MoonXue写一个学生选课系统的登录接口.为了搞定这个接口,不得不先搞定这个系统的验证码. 验证码大概是这个样子 看 ...
- Python识别网站验证码
http://drops.wooyun.org/tips/6313 Python识别网站验证码 Manning · 2015/05/28 10:57 0x00 识别涉及技术 验证码识别涉及很多方面的内 ...
- [PyImageSearch] Ubuntu16.04 使用OpenCV和python识别信用卡 OCR
在今天的博文中,我将演示如何使用模板匹配作为OCR的一种形式来帮助我们创建一个自动识别信用卡并从图像中提取相关信用卡数位的解决方案. 今天的博文分为三部分. 在第一部分中,我们将讨论OCR-A字体,这 ...
随机推荐
- Keepalived双主模式配置流程
实验说明 1)keepalived 支持配置多个VRRP实例,每个实例对应一个业务 2)本次实验将实现 keepalived 的互为主备: 业务A:keepalived01为Master,keepal ...
- 重定向Redirect 的知识
今天下班的时候看到了一些重定向的基础知识,也算开了眼界.以前也经常使用301和302,但从来没有使用过和了解过其他的3XX的状态码,发现原来里面涉及的知识和解决的问题的还不少. 重定向的流程 浏览器首 ...
- Python自学day-5
电影推荐: 阿甘正传 辛德勒名单 肖申克的救赎 勇敢的心 角斗士 美国丽人 教父 指环王 钢琴师 血钻 战争之王 ...
- 【JAVA8】Set排序四种写法
工作中遇到,写了很久以前的写法,师兄给了很多建议,于是整理了一下.孔子曰:"你知道茴香豆的茴字有几种写法吗?" 第一种,平常的写法: public class App { publ ...
- 8天入门docker系列 —— 第六天 搭建自己的私有镜像仓库Registry
这一篇我们来聊聊私有仓库的搭建,其实不管你是通过docker build还是compose的方式进行构建,最终还是要将生成好的镜像push到远程的仓库中,这样多个 平台可以方便的获取你registry ...
- 微信小程序ES6方法Promise封装接口
为何要封装接口? 有小程序开发的经验者,相信对微信API Request很熟悉了.对接接口时,有大部分的开发者都是直接调用request方法,去请求后台接口并渲染数据.诚然,直接使用api发起请求对接 ...
- python函数之 range()
Python range() 函数用法 python range() 函数可创建一个整数列表,一般用在 for 循环中. 函数语法 range(start, stop[, step]) 参数说明: ...
- 你真的会用mysql行级锁吗?mysql 行级锁全解析
在互联网大并发应用大行其道的今天,应用的开发总是离不开锁,在分布式应用中,最常见的莫过于基于数据库的行级锁了,由于互联网公司中比较主流的数据库还是mysql,所以这一话题绕不开的就是mysql了,但是 ...
- 2019.6.5 NOIP2014 day2 t2 寻找道路
我竟然一个人敲了NOIP提高组的t2? 题目描述 在有向图 G 中,每条边的长度均为 1,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件: 路径上的所有点的出边所指向的点都直 ...
- HDU 2795:Billboard(线段树)
http://acm.hdu.edu.cn/showproblem.php?pid=2795 Billboard Problem Description At the entrance to th ...