Skip to content
Snippets Groups Projects
Commit 81da4cd3 authored by Bernard Blackham's avatar Bernard Blackham
Browse files

Remove vending machine bootup time. Generate permutation in a smarter fashion.

parent 57691696
Branches
Tags
No related merge requests found
...@@ -93,28 +93,37 @@ class TrainIdler(Idler): ...@@ -93,28 +93,37 @@ class TrainIdler(Idler):
class OrderMaker: class OrderMaker:
def __init__(self, n=8): def __init__(self, n=8):
self.n = n self.n = n
self.a = [] self.make_factorials(n)
self.u = []
self.s = [] def make_factorials(self, n):
for x in range(0,n): self.factorial = []
self.u.append(False) a = 1
self.go() for i in range(1,n+1):
self.factorial.append(a)
def go(self): a *= i
from copy import deepcopy
if len(self.s) == self.n: def order(self, index):
self.a.append(deepcopy(self.s)) used = []
else: for i in range(0,self.n):
for x in range(0,self.n): used.append(i)
if self.u[x]: continue i = self.n-1
self.s.append(x) j = 0
self.u[x] = True res = []
self.go() while i >= 0:
self.u[x] = False a = index/self.factorial[i]
self.s.pop() index %= self.factorial[i]
res.append(a+1)
def order(self): i -= 1
return self.a j += 1
for i in range(0,self.n):
tmp = used[res[i]-1]
for j in range(res[i],self.n):
used[j-1] = used[j]
res[i] = tmp
return res
def __getitem__(self, i):
return self.order(i)
class GrayIdler(Idler): class GrayIdler(Idler):
def __init__(self, v, one=None, zero=None, reorder=0): def __init__(self, v, one=None, zero=None, reorder=0):
...@@ -128,7 +137,7 @@ class GrayIdler(Idler): ...@@ -128,7 +137,7 @@ class GrayIdler(Idler):
self.reorder = reorder self.reorder = reorder
global orderings global orderings
if not orderings: if not orderings:
orderings = OrderMaker().order() orderings = OrderMaker()
def next(self): def next(self):
output = self.do_next_state() output = self.do_next_state()
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment