Simulando el cubo de Rubik en Excel

Hace ya unos tres años que comencé a estudiar el cubo de Rubik, aquel rompecabezas inventado por Erno Rubik en 1974 y que se convertió en el juguete más vendido de la historia. Coincidió la compra de mi primer cubo (hace muchos más años, uno muy barato y malo en una cacharrería) con la lectura de un artículo de una revista sobre su historia y el hallazgo de métodos para resolverlo y de todas sus curiosidades matemáticas. También descubrí que es una afición muy popular (sobre todo entre coleccionistas) y para muchos, casi un deporte. Así pues, también comencé una pequeña colección de estos rompecabezas:

Mi pequeña colección de cubos de Rubik y sus variantes.

Si bien hay simuladores en línea o para PC, siempre pensé que una buena forma de entender cómo funciona el cubo de Rubik y sus variantes (porque a Rubik sólo puede atribuírsele el clásico de 3x3x3 capas), era poder ver todas sus caras al tiempo (es decir, como un cubo desplegado). Y las únicas aplicaciones que encontré para ver un cubo en 2D eran archivos de Excel, muy ingeniosos pero que se limitaban al cubo de 3x3x3. Así que pensé que podría hacer un simulador 2D de cubos desde 2 hasta n capas. Todavía está en proceso, pero para quien le interese (y tenga sugerencias), el resultado a día de hoy está aquí.

Ejemplo con valor de n=4. Se puede seleccionar cada cara, un punto de la cara (flechas de arriba), y la dirección de giro de la capa (flechas de abajo)

Es más bien un pasatiempo y un repaso de programación que una aplicación ready-to-use, pero permite ver cómo funciona no sólo el cubo, sino los algoritmos que permiten resolverlo o generar patrones.

Cómo girar una matriz cuadrada

Como uso Excel para repasar mis ejercicios de programación, resulta que para poder girar las capas del cubo simulado en Excel necesitaba saber algo que no pude encontrar ni en mis apuntes ni en la web: cómo girar una matriz de n x n (al menos no en Visual Basic). Así que aquí va una propuesta de cómo resolví el problema en Excel a partir de una hoja en blanco y una matriz de 4×4 con los números del 1 al 16:

Girar a la derecha

Sub GirarR()
Dim i, j, n, x, y As Integer
Dim m() As Integer
n = 4 'Este valor se puede obtener de otra forma
ReDim m(1 To n, 1 To n) As Integer
'Girar matriz
x = n
y = 1
For i = 1 To n
For j = 1 To n
m(i, j) = Cells(x, y)
x = x - 1
Next j
y = y + 1
x = n
Next i
'Mostrar en pantalla
For i = 1 To n
For j = 1 To n
Cells(i, j) = m(i, j)
Next j
Next i
End Sub

Girar a la izquierda

Sub GirarL()
Dim i, j, n, x, y As Integer
Dim m() As Integer
n = 4 'Este valor se puede obtener de otra forma
ReDim m(1 To n, 1 To n) As Integer
'Girar matriz
x = 1
y = n
For i = 1 To n
For j = 1 To n
m(i, j) = Cells(x, y)
x = x + 1
Next j
y = y - 1
x = 1
Next i
'Mostrar en pantalla
For i = 1 To n
For j = 1 To n
Cells(i, j) = m(i, j)
Next j
Next i
End Sub

One response to “Simulando el cubo de Rubik en Excel

Responder a Permutaciones en matrices (Visual Basic y C++) | El blog de Wedrey Cancelar respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.