Slava
BAN USERs = "123456789"
def to_chars(l):
return chr(int(l) + 96)
print map(to_chars, list(s))
for i in xrange(len(s)-1):
res = list()
if int(s[i:i+2]) < 26:
if i > 0:
res += list(s[0:i])
res.append(s[i:i+2])
if i < len(s)-2:
res += list(s[i+2:len(s)])
if res:
print map(to_chars, res)
Simple algorithm: on each iteration we check the nearest cells and set the current value as smallest + 1. Then just iterate until there's no updates.
from pprint import pprint
m0 = [
['W', 'W', 'O', 'W', 'G'],
['W', 'W', 'O', 'O', 'O'],
['O', 'O', 'O', 'W', 'O'],
['O', 'W', 'W', 'W', 'O'],
['O', 'O', 'O', 'W', 'O'],
]
m1 = [
["O", "O", "O", "O", "O", "O", "O", "W", "O", "G"],
["O", "O", "O", "O", "O", "O", "O", "W", "O", "O"],
["O", "O", "O", "O", "W", "O", "O", "W", "O", "O"],
["O", "O", "O", "O", "W", "O", "O", "W", "W", "W"],
["O", "O", "O", "O", "W", "O", "G", "O", "O", "O"],
["W", "W", "W", "O", "W", "O", "O", "O", "O", "O"],
["O", "O", "O", "O", "W", "O", "O", "O", "O", "O"],
["O", "O", "O", "O", "W", "O", "O", "O", "O", "O"],
["O", "O", "O", "O", "W", "O", "O", "O", "O", "O"],
["G", "O", "O", "O", "W", "O", "O", "O", "O", "O"],
]
m2 = [
["O", "O", "O", "O", "O", "O", "O", "W", "O", "G"],
["O", "O", "O", "O", "O", "O", "O", "W", "O", "O"],
["O", "O", "O", "O", "W", "O", "O", "W", "O", "O"],
["O", "O", "O", "O", "W", "O", "O", "W", "W", "W"],
["O", "O", "O", "O", "W", "O", "G", "O", "O", "O"],
["W", "W", "W", "O", "W", "O", "O", "O", "O", "O"],
["O", "O", "O", "O", "W", "O", "O", "O", "O", "O"],
["O", "O", "O", "O", "W", "O", "O", "O", "O", "O"],
["O", "O", "O", "O", "W", "O", "O", "O", "O", "O"],
["G", "O", "O", "O", "W", "O", "O", "O", "O", "O"],
]
def calculate_museum(museum):
size = len(museum)
updates = 0
for x in xrange(size):
for y in xrange(size):
res = None
if museum[x][y] is 'O':
if x > 0:
res = test_cell(museum[x-1][y], museum[x][y])
if res:
museum[x][y] = res
updates += 1
if x < (size-1):
res = test_cell(museum[x+1][y], museum[x][y])
if res:
museum[x][y] = res
updates += 1
if y > 0:
res = test_cell(museum[x][y-1], museum[x][y])
if res:
museum[x][y] = res
updates += 1
if y < (size-1):
res = test_cell(museum[x][y+1], museum[x][y])
if res:
museum[x][y] = res
updates += 1
if updates > 0:
calculate_museum(museum)
def test_cell(cell, cur):
if cell is 'G':
return 1
if isinstance(cell, int):
if cur and cell > cur:
return None
return cell+1
return None
pprint(m0)
calculate_museum(m0)
print("Result:")
pprint(m0)
print
pprint(m1)
calculate_museum(m1)
print("Result:")
pprint(m1)
print
pprint(m2)
calculate_museum(m2)
print("Result:")
pprint(m2)
- Slava June 08, 2016