• Sign Up
• Login
• API
• FAQ
• Tools
• Archive
SHARE
TWEET # mirror.py a guest Aug 12th, 2014 316 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
1. class OffsetMirrorSet(object):
2.         """
3.         A class to compute the grammar description of mirrors.
4.
5.         c.f. http://puzzling.stackexchange.com/a/2059/1779
6.         """
7.         def __init__(self, f, u, v):
8.                 terminal = []
9.                 non_terminal = []
10.                 #First we look for 1 digit terminals
11.                 for i in xrange(10):
12.                         if i * f + v - u * 10 == i:
13.                                 terminal.append(str(i))
14.
15.                 #If it's not a 1 digit number then it has at least 2:
16.                 for a0 in xrange(10):
17.                         for an in xrange(10):
18.                                 right = a0 * f + v - an
19.                                 left = u *10 + a0 - an * f
20.                                 if right % 10 == 0 and left >= 0 and left < f:
21.                                         new_u = left
22.                                         new_v = right / 10
23.
24.                                         #can it be a 2 digit terminal ?
25.                                         if new_u == new_v:
26.                                                 terminal.append(str(an) + str(a0))
27.
28.                                         non_terminal.append( (str(an), (new_u, new_v), str(a0)) )
29.
30.                 self.info = (f, u, v)
31.                 self.terminal = terminal
32.                 self.non_terminal = non_terminal
33.
34.         def __repr__(self):
35.                 f = self.info
36.                 return (("S_%d(%d, %d) = " %self.info)
37.                         + " + ".join(self.terminal) + " + "
38.                         + " + ".join("%s.S_%d(%d, %d).%s" %(a,f,u,v,b) for (a,(u,v),b) in self.non_terminal))
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy.

Top