Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import sys
- from decimal import *
- from Carbon.Aliases import true
- def shift(s, d):
- if d > 0:
- return s[d:] + s[:d]
- else:
- return shift(s, len(s)-(abs(d)))
- k_number = int(sys.argv[1])
- getcontext().prec = 2*(k_number-1)
- patterns = []
- for k in range(1, k_number):
- bits = str(Decimal(float(k))/Decimal(k_number))[2:]
- bits = bits[:len(bits)/2]
- patternFound = False
- shift_d = 0
- pattern_num = 0
- for pnum, p in enumerate(patterns):
- for d in range(1,len(bits)):
- if shift(bits,d) == p:
- patternFound = true
- pattern_num = pnum+1
- shift_d = d
- if shift_d > len(bits)/2: shift_d = shift_d - len(bits)
- break
- if patternFound: break
- if not patternFound:
- patterns.append(bits)
- pattern_num = len(patterns)
- sformatter = "{:<" + str(k_number*2 + 4) + "}, shift={:3},pattern#={:3},{}"
- 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