Skip to content

Commit c1f0be7

Browse files
committed
added
1 parent 2ebc8a7 commit c1f0be7

4 files changed

Lines changed: 157 additions & 0 deletions

File tree

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# o p t F i b . p y
2+
#
3+
# Chris Meyers. 09/25/2013
4+
#
5+
from htmlFrame import HtmlFrame
6+
from matrix import Matrix
7+
8+
htmlPage = HtmlFrame()
9+
htmlPage.banner = "Animated Fibonacci Sequence"
10+
BOLD = "color:red;font-weight:bold;"
11+
12+
fibs = Matrix(1,20)
13+
fibs.tableAttr = 'cellspacing="0" cellpadding="10"'
14+
fibs[0,0] = 1
15+
fibs[0,1] = 1
16+
17+
for i in range(2,100) :
18+
fibs.style[0,i-1] = BOLD
19+
fibs.style[0,i-2] = BOLD
20+
fibs[0,i] = fibs[0,i-1]+fibs[0,i-2]
21+
fibs.title = "Last 2 elements add for new one"
22+
htmlPage.item1 = fibs.renderHtml(wrap=10)
23+
htmlPage.makeFrame() #break
24+
fibs.style[0,i-2] = "" # uncolor behind
25+
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
# o p t K n a p s a c k . p y
2+
#
3+
# Chris Meyers. 09/25/2013
4+
#
5+
from htmlFrame import HtmlFrame
6+
from matrix import Matrix
7+
8+
maxwgt = 10
9+
vals = [0,10,40,30,50]
10+
wgts = [0, 5, 4, 6, 3]
11+
12+
htmlPage = HtmlFrame()
13+
htmlPage.banner = "Knapsack Problem"
14+
headers=['wt'+str(i) for i in range(maxwgt+1)]
15+
16+
inp = Matrix(len(vals),3)
17+
inp.title = "Sack holds weight %s" % maxwgt
18+
inp.dftFormat = "<pre>%03s</pre>"
19+
inp.tableAttr = 'border="1" cellspacing="0" cellpadding="4"',
20+
inp.tableHeaders=['Item #','Weight','Value']
21+
for i in range(len(vals)) :
22+
inp.setrowVals(i, [i, wgts[i], vals[i]])
23+
24+
frame = Matrix(1,2)
25+
frame[0,0] = inp.renderHtml()
26+
nItems = len(vals)
27+
best = Matrix(nItems,maxwgt+1)
28+
best.dftFormat = "<pre>%03s</pre>"
29+
30+
for i in range(1,nItems) :
31+
best.setrowVal(i,0)
32+
for i in range(1,nItems) :
33+
for w in range(0,maxwgt+1) :
34+
remBest = best[i-1,w-wgts[i]]
35+
if remBest == None : remBest = 0
36+
newSolution = vals[i]+remBest
37+
if ((wgts[i] <= w and newSolution > best[i-1,w])) :
38+
best[i,w] = newSolution
39+
best.style[i,w] = "background-color:pink"
40+
best.title = "Optimal solution for weight %s includes item %s" % (w,i)
41+
best.tableAttr='border="1" cellspacing="0" cellpadding="4"'
42+
best.tableHeaders=headers
43+
frame[0,1] = best.renderHtml()
44+
htmlPage.item1 = frame.renderHtml()
45+
htmlPage.makeFrame() #break
46+
else :
47+
best[i,w] = best[i-1,w]
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
# o p t M i n p a t h . p y
2+
#
3+
# Chris Meyers. 09/25/2013
4+
#
5+
from htmlFrame import HtmlFrame
6+
from matrix import Matrix
7+
8+
from random import randint
9+
htmlPage = HtmlFrame()
10+
htmlPage.banner = "Minimum Path from top to bottom"
11+
12+
def renderTriangle(t) :
13+
t.dftFormat = "<pre>%03s</pre>"
14+
t.tableAttr='border="0" cellspacing="0" cellpadding="4"'
15+
return t.renderHtml()
16+
17+
def minpath(nrows) :
18+
mat = Matrix(1,2)
19+
tri = Matrix(nrows,nrows)
20+
org = Matrix(nrows,nrows)
21+
for r in range(nrows) :
22+
vals = [randint(1,9) for c in range(r+1)]
23+
tri.setrowVals(r,vals)
24+
org.setrowVals(r,vals)
25+
26+
org.title = "Original Values"
27+
mat[0,0] = renderTriangle(org)
28+
mat.tableAttr='border="1" cellspacing="0" cellpadding="4"'
29+
30+
tri.style.setrowVal(nrows-1,"background-color:lightgreen")
31+
for row in range(nrows-2,-1,-1) :
32+
for col in range(row+1) :
33+
left = tri[row+1,col]
34+
right= tri[row+1,col+1]
35+
this = tri[row,col]
36+
tri.style[row,col] = "background-color:pink"
37+
tri.title = "Set to min(%s+%s, %s+%s)" % (this,left,this,right)
38+
mat[0,1] = renderTriangle(tri)
39+
htmlPage.item1 = mat.renderHtml()
40+
htmlPage.makeFrame() #break
41+
tri[row,col] = best = min(this+left,this+right)
42+
tri.style[row,col] = "background-color:lightgreen"
43+
mat[0,1] = renderTriangle(tri)
44+
htmlPage.item1 = mat.renderHtml()
45+
htmlPage.banner = "Miniumum cost is %s" % best
46+
htmlPage.makeFrame() #break
47+
48+
minpath(4)
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# o p t S i e v e . p y
2+
#
3+
# Chris Meyers. 09/25/2013
4+
#
5+
from htmlFrame import HtmlFrame
6+
from matrix import Matrix
7+
8+
htmlPage = HtmlFrame()
9+
htmlPage.banner = "Animated Sieve of Erastosthenes"
10+
BOLD = "color:red;font-weight:bold;"
11+
12+
primes = Matrix(1,20)
13+
primes.tableAttr = 'cellspacing="0" cellpadding="10"'
14+
primes[0,0] = 2
15+
nprimes = 1
16+
17+
for x in range(3,21) :
18+
primeSofar = True
19+
for px in range(nprimes) :
20+
primes.title = "Testing if %s is divisible by primes so far" % x
21+
primes.style[0,px] = BOLD
22+
htmlPage.item1 = primes.renderHtml(wrap=5)
23+
htmlPage.makeFrame() #break
24+
primes.style[0,px] = ""
25+
div = primes[0,px]
26+
if x % div == 0 : primeSofar = False
27+
if not primeSofar : break
28+
29+
if primeSofar :
30+
primes[0,nprimes] = x
31+
nprimes += 1
32+
primes.title = "Found a new prime %s" % x
33+
else :
34+
primes.title = "Not Prime: %s mod %s is zero" % (x,div)
35+
htmlPage.item1 = primes.renderHtml(wrap=5)
36+
htmlPage.makeFrame()
37+

0 commit comments

Comments
 (0)