Advertisement
Guest User

Untitled

a guest
Jul 9th, 2013
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.10 KB | None | 0 0
  1. import sys
  2. from decimal import *
  3. from Carbon.Aliases import true
  4.  
  5. def shift(s, d):
  6.     if d > 0:
  7.         return s[d:] + s[:d]
  8.     else:
  9.         return shift(s, len(s)-(abs(d)))
  10.  
  11. k_number = int(sys.argv[1])
  12.  
  13. getcontext().prec = 2*(k_number-1)
  14. patterns = []
  15. for k in range(1, k_number):
  16.     bits = str(Decimal(float(k))/Decimal(k_number))[2:]
  17.     bits = bits[:len(bits)/2]
  18.     patternFound = False
  19.     shift_d = 0
  20.     pattern_num = 0
  21.     for pnum, p in enumerate(patterns):
  22.         for d in range(1,len(bits)):
  23.            
  24.             if shift(bits,d) == p:
  25.                 patternFound = true
  26.                 pattern_num = pnum+1
  27.                 shift_d = d
  28.                 if shift_d > len(bits)/2: shift_d = shift_d - len(bits)
  29.                 break
  30.            
  31.         if patternFound: break
  32.     if not patternFound:
  33.         patterns.append(bits)
  34.         pattern_num = len(patterns)
  35.    
  36.     sformatter = "{:<" + str(k_number*2 + 4) + "}, shift={:3},pattern#={:3},{}"    
  37.     print sformatter.format(Decimal(float(k))/Decimal(k_number), shift_d, pattern_num, pattern_num*"*")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement