Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
30 lines solution in Clear category for Behind 2048 by CDG.Axel
def transpose(state):
return list(map(list, zip(*state)))
def line_left(line):
line = list(filter(None, line)) + [0] * line.count(0)
for i in range(3):
if line[i] == line[i + 1] != 0:
line = line[:i] + [2 * line[i]] + line[i + 2:] + [0]
return line
def move2048(state, move):
if move == 'up':
state = transpose(line_left(i) for i in transpose(state))
if move == 'right':
state = [line_left(i[::-1])[::-1] for i in state]
if move == 'left':
state = [line_left(i) for i in state]
if move == 'down':
state = transpose([line_left(i[::-1])[::-1] for i in transpose(state)])
if any(2048 in i for i in state):
return [list('U' + 'WIN')] * 4
if not any(0 in i for i in state):
return [list('GAME'), list('OVER')] * 2
i = next(iter(i for i in range(16)[::-1] if not state[i // 4][i % 4]))
state[i // 4][i % 4] = 2
return state
Oct. 14, 2021
Comments: