[Tutor] Re: Percolation model in python
Lee Harr
missive at hotmail.com
Tue Feb 8 00:48:36 CET 2005
> I have two questions. Once a MxN world is generated how would you
>search for nearest neighbors (to see who is connected) and then color
Does this help?
import random
PERSON, EMPTY = '*', '.'
def get_threshold():
perc = raw_input("Please enter a thresold between 0-1. ")
perc = float(perc)
return perc
def make_random_world(M, N):
"""Constructs a new random game world of size MxN."""
perc = get_threshold()
world = {}
for j in range(N):
for i in range(M):
world[i, j] = percolation(perc)
world['dimensions'] = (M, N)
return world
def percolation(perc):
randval = random.random()
if randval > perc:
return EMPTY
else:
return PERSON
def neighbors(world, x, y):
M, N = world['dimensions']
nxmin = max(0, x-1)
nxmax = min(M, x+1)
nymin = max(0, y-1)
nymax = min(N, y+1)
r = []
for nx in range(nxmin, nxmax+1):
for ny in range(nymin, nymax+1):
if nx != x or ny != y:
r.append((nx, ny))
return r
def print_world(world):
"""Prints out a string representation of a world."""
M, N = world['dimensions']
for j in range(N):
for i in range(M):
print world[i, j],
print
def make_world_option():
m = int(raw_input("Please enter a m dimension. "))
n = int(raw_input("Please enter a n dimension. "))
raw_input("Press return to make a world")
return make_random_world(m, n)
def show_neighbors_option(world):
x = int(raw_input("Please enter an x coord. "))
y = int(raw_input("Please enter a y coord. "))
print neighbors(world, x, y)
def menu():
print """
Please pick your option:
1) Percolation model for Small Pox
2) Show world
3) Instructions
4) Show neighbors
5) Exit
"""
option = int(raw_input("Which option[1,2,3,4,5]? "))
return option
if __name__ == '__main__':
option = None
while option != 5:
if option == 1:
world = make_world_option()
elif option == 2:
print_world(world)
elif option == 4:
show_neighbors_option(world)
option = menu()
_________________________________________________________________
Don't just search. Find. Check out the new MSN Search!
http://search.msn.com/
More information about the Tutor
mailing list