Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Clear category for Colder-Warmer by kurosawa4434
FIX = 'fix'
MIN = 'min'
MAX = 'max'
CELL_MAX = 9
def checkio(steps):
# firstStep
if len(steps) == 1:
y, x = steps[0][0], steps[0][1]
return max(0, y - 2) if y > 5 else min(9, y + 2), x
# evaluate_steps
y_state, x_state, y_border, x_border = '', '', 0, 0
for st in range(1, len(steps)):
y, x, rs = steps[st]
py, px, _ = steps[st - 1]
# neutral
if rs == 0:
# up down
if y_state != FIX and y - py:
y_border = min(y, py) + abs(y - py) // 2
y_state = FIX
# left right
if x_state != FIX and x - px:
x_border = min(x, px) + abs(x - px) // 2
x_state = FIX
# hot
if rs > 0:
if y_state != FIX:
# up
if y < py:
y_border, y_state = (0, FIX) if y == 0 else (y, MAX)
# down
if y > py:
y_border, y_state = (CELL_MAX, FIX) if y == CELL_MAX else (y, MIN)
if x_state != FIX:
# left
if x < px:
x_border, x_state = (0, FIX) if x == 0 else (x, MAX)
# right
if x > px:
x_border, x_state = (CELL_MAX, FIX) if x == CELL_MAX else (x, MIN)
# cold
if rs < 0:
if y_state != FIX:
# up
if y < py:
y_border, y_state = (1, FIX) if py == 1 else (y, MIN)
# down
if y > py:
y_border, y_state = (CELL_MAX - 1, FIX) if py == CELL_MAX - 1 else (y, MAX)
if x_state != FIX:
# left
if x < px:
x_border, x_state = (1, FIX) if px == 1 else (x, MIN)
# right
if x > px:
x_border, x_state = (CELL_MAX - 1, FIX) if x == CELL_MAX - 1 else (x, MAX)
# moveCell plot
y_move, x_move = steps[-1][0], steps[-1][1]
modify = 2 if steps[-1][2] == 1 else 1
# state(1) Y move mode
if y_state == FIX:
y_move = y_border
elif y_state == MIN:
y_move = min(y_border + modify, 9)
elif y_state == MAX:
y_move = max(y_border - modify, 0)
# state(2) X move start
if y_state == FIX and x_state == '':
return y_move, x_move + 2 if x_move < 5 else x_move - 2
# state(3) X move mode
if x_state == FIX:
x_move = x_border
elif x_state == MIN:
x_move = min(x_border + modify, 9)
elif x_state == MAX:
x_move = max(x_border - modify, 0)
return y_move, x_move
July 24, 2016
Comments: