#! /usr/bin/env python import sys try: set() except: from sets import Set as set class Trie: def __init__(self): self.Q = {'': 0} self.E = {} self.F = set() return def add(self, w): q = '' for a in w: r = q + a if r not in self.Q: self.Q[r] = len(self.Q) if q not in self.E: self.E[q] = set() self.E[q].add(r) q = r self.F.add(self.Q[w]) return def toATT(self): for r in self.E['']: print self.Q[''], self.Q[r], r[-1] for q,i in self.Q.iteritems(): if q == '': continue if q not in self.E: continue for r in self.E[q]: print i, self.Q[r], r[-1] for i in self.F: print i return trie = Trie() for w in sys.argv[1:]: trie.add(w) trie.toATT()