1400字制限

最近の記事のほとんどが1400字を超えているのでタイトル無視も甚だしいが1400字「以下」に制限するとは言っていない

首都大学東京女子医科歯科

似たような大学名が多いので、Graphviz でこういう図(なんという図なのかは知らない)を作ってみた。首都大学東京のせいでこの有向グラフにはサイクルが存在する。

「東京」とつく大学全部で試してみることにした。

#!/usr/bin/env python3

from more_itertools import chunked
from graphviz import Digraph

# 「東京」を含む大学
univs = """
東京大学
東京有明医療大学
東京医科大学
東京医科歯科大学
東京医療学院大学
東京医療保健大学
東京音楽大学
東京海洋大学
東京学芸大学
東京家政大学
東京家政学院大学
東京経済大学
東京芸術大学
東京工科大学
東京工業大学
東京工芸大学
東京国際大学
東京歯科大学
東京純心大学
東京聖栄大学
東京情報大学
東京女子大学
東京女子医科大学
東京女子体育大学
東京神学大学
東京成徳大学
東京造形大学
東京通信大学
東京電機大学
東京都市大学
東京農業大学
東京農工大学
東京福祉大学
東京富士大学
東京未来大学
東京薬科大学
東京理科大学
首都大学東京
山口東京理科大学
諏訪東京理科大学
"""
univs = univs.strip().split('\n')

# 2文字ごとに区切る
def twogram(name):
    return list(map(lambda x: ''.join(x), chunked(name, 2)))
univs = list(map(twogram, univs))

# 3文字は面倒なので手動
univs.append( ["東京", "基督教", "大学"] )
univs.append( ["東京", "外国語", "大学"] )
univs.append( ["東京", "慈恵会", "医科", "大学"] )

# 区切ったものを格納する集合
word = set( [ e for ilist in univs for e in ilist ] )

# グラフの生成
G = Digraph(format='png', engine='dot')
G.attr('node', shape='circle')
[ G.node(w) for w in word ]

edges = []
for univ in univs:
    edges += [ ( univ[i], univ[i+1] ) for i in range(len(univ)-1) ]
edges = set(edges)

[ G.edge(*e) for e in edges ]

print(G)
G.render(view=True)

ポイントは右端のこの部分で、ここだけ線が二重になっている。これは「東京→大学」と「大学→東京」の両方のエッジが存在するためである。

f:id:yubais:20180805115644p:plain