#check consistency of headline alphabets #put test alphabets here a0="T-S-P-U-L--B-EI--CGD------" a1="K-MOH-N-J--WSU---XZV-D----" a2="VE----A----N--F-----------" #global #a2="--E-V-A-------F--N--------"#grocer #a2="--E-V-A-X----KF--N--------" #grocer ..ing a3="--------------------------" #a3="O--TQ---------------------" #dead #a3="-------------O----T-Q-----" #suns a4="--------------------------" EMPTY = 26 period = 5 #room for 5 headlines symbols = "abcdefghijklmnopqrstuvwxyz-" def convert_alpha(data): data = data.lower() alpharow = [symbols.index(c) for c in data if c in symbols] return alpharow #initialize alpha array and its inverse alpha = [ [] ] * period inverse_alpha = [[]]*period #convert the test alphabets alpha[0] = convert_alpha(a0) alpha[1] = convert_alpha(a1) alpha[2] = convert_alpha(a2) alpha[3] = convert_alpha(a3) alpha[4] = convert_alpha(a4) #set up inverses for row in range(period): inverse_alpha[row]=[EMPTY]*26 for n in range(26): c = alpha[row][n] if c != EMPTY: inverse_alpha[row][c]=n def complete_the_squares(): change_flag = 0 for r1 in range(period): for c1 in range(26): c2 = alpha[r1][c1] if c2 != EMPTY: for r2 in range(period): if r1 == r2 : continue # vertical extension c3 = inverse_alpha[r2][c1] if c3 != EMPTY: c4 = alpha[r1][c3] if c4 != EMPTY: c5 = alpha[r2][c4] if c5 != EMPTY and c5 != c2: print "Alphabets Inconsistent!" return 0 alpha[r2][c4] = c2 inverse_alpha[r2][c2] = c4 if c5 == EMPTY: change_flag = 1 # horizontal extension c4 = alpha[r2][c2] if c4 != EMPTY: c3 = inverse_alpha[r1][c4] if c3 != EMPTY: c5 = alpha[r2][c1] if c5 != EMPTY and c5 != c3: print "Alphabets Inconsistent!" return 0 alpha[r2][c1] = c3 inverse_alpha[r2][c3] = c1 if c5 == EMPTY: change_flag = 1 return change_flag #main loop flag = complete_the_squares() while flag != 0: flag = complete_the_squares() print "Consistency check complete"