
Tal vez ya has escuchado sobre un simple y adictivo juego llamado 2048 (leer más al respecto aquí). ). En esta misión, vamos a ver qué hay tras el telón y trataremos de recrear su funcionalidad básica de movimiento.
[[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11], [12, 13, 14, 15]]
[[0, 1, 2, 3], [4, 5,...Al inicio, existen dos números en el tablero.
Datos de Entrada: El estado del juego, como una lista de listas con enteros (int) y y la dirección del movimiento del jugador, como una cadena (str): 'up', 'down', 'left' or 'right'
Salida: El estado del juego después de aplicar el movimiento indicado, como una lista de listas con enteros (int) o letras (matriz “ganar”/”perder”).
¿Cómo se usa?: Esta misión puede ser la base de una implementación con GUI del juego 2048 en Python.
Ejemplo:
move2048([[0, 2, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 2, 0, 0]], 'up') == [[0, 4, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 2]] move2048([[4, 0, 0, 0], [0, 4, 0, 0], [0, 0, 0, 0], [0, 0, 8, 8]], 'right') == [[0, 0, 0, 4], [0, 0, 0, 4], [0, 0, 0, 0], [0, 0, 2, 16]] move2048([[2, 0, 2, 2], [0, 4, 4, 4], [8, 8, 8, 16], [0, 0, 0, 0]], 'right') == [[0, 0, 2, 4], [0, 0, 4, 8], [0, 8, 16, 16], [0, 0, 0, 2]] move2048([[256, 0, 256, 4], [16, 8, 8, 0], [32, 32, 32, 32], [4, 4, 2, 2]], 'right') == [[0, 0, 512, 4], [0, 0, 16, 16], [0, 0, 64, 64], [0, 2, 8, 4]] move2048([[4, 4, 0, 0], [0, 4, 1024, 0], [0, 256, 0, 256], [0, 1024, 1024, 8]], 'down') == [['U', 'W', 'I', 'N'], ['U', 'W', 'I', 'N'], ['U', 'W', 'I', 'N'], ['U', 'W', 'I', 'N']] move2048([[2, 4, 8, 16], [32, 64, 128, 256], [512, 1024, 2, 4], [8, 16, 32, 64]], 'left') == [['G', 'A', 'M', 'E'], ['O', 'V', 'E', 'R'], ['G', 'A', 'M', 'E'], ['O', 'V', 'E', 'R']]
Condiciones: len(state) == 4
all(len(row) == 4 for row in state)
all(all(x in (0, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024) for x in row) for row in state)