Las matrices son una herramienta fundamental en muchas áreas de la computación y las matemáticas. En Python, podemos usar listas dentro de listas para representar matrices bidimensionales (2D). Hoy, vamos a explorar varias aplicaciones prácticas de las matrices y cómo estas estructuras pueden ser usadas para representar tableros de juego.
Representación de Tableros de Juego
Las matrices son ideales para representar tableros de juego en programación, como tableros de ajedrez, damas y otros juegos de mesa. Usar matrices para estos fines permite manejar fácilmente la disposición de las piezas y las reglas del juego.
Ejemplo: Tablero de Ajedrez
Un tablero de ajedrez es una matriz de 8x8. En vez de representar solo las casillas blancas y negras, podemos representar las piezas de ajedrez. Usaremos letras para representar las piezas: P para peón, R para torre, N para caballo (knight), B para alfil, Q para reina y K para rey. Las piezas negras se representan con letras minúsculas y las blancas con letras mayúsculas.
En este ejemplo, el 0 representa una casilla vacía.
Movimiento de un Caballo
En ajedrez, los caballos (N para blanco y n para negro) se mueven en forma de "L". Esto significa que pueden moverse dos casillas en una dirección y luego una casilla perpendicularmente, o una casilla en una dirección y luego dos casillas perpendicularmente.
Por ejemplo, si el caballo blanco está en la posición (7, 1) (segunda casilla de la última fila), las posiciones posibles a las que puede moverse son:
(5, 0)
(5, 2)
(6, 3)
Es importante verificar que estas posiciones estén dentro de los límites del tablero y no contengan piezas blancas.
Si movemos el caballo de (7, 1) a (5, 2), el tablero se vería así:
chess_board[7][1]=0# Casilla original del caballo ahora está vacíachess_board[5][2]='N'# Nueva posición del caballoprint(chess_board)
Ejemplo: Tablero de Damas
Un tablero de damas también es una matriz de 8x8, pero además de las casillas alternas, debemos representar las piezas de los dos jugadores.
En este ejemplo, el 0 representa una casilla vacía, 'w' representa una pieza blanca, y 'b' representa una pieza negra. Las filas superiores e inferiores están llenas de piezas en sus posiciones iniciales, mientras que las filas centrales están vacías.
Aplicación de Matrices a Imágenes
Las matrices también son esenciales para la representación y manipulación de imágenes. Cada píxel de una imagen en escala de grises se puede representar como un valor en una matriz, donde cada valor varía del 0 (negro) al 255 (blanco).
Ejemplo: Representación de una Imagen en Escala de Grises
Imaginemos una matriz de 5x5 que representa una imagen en escala de grises con un simple patrón.
En esta matriz, el 255 representa píxeles blancos y el 0 representa píxeles negros. Este patrón podría visualizarse como una "X" blanca sobre un fondo negro si se dibujara.
Aplicaciones en Otros Campos
Las matrices se utilizan en muchos otros campos además de los juegos y las imágenes. Aquí hay algunos ejemplos:
Análisis de Datos: Las matrices se utilizan para almacenar y manipular grandes conjuntos de datos, realizar cálculos estadísticos y análisis de datos.
Inteligencia Artificial y Machine Learning: Las matrices son esenciales para representar datos de entrada y salida, pesos de redes neuronales y otros parámetros en algoritmos de aprendizaje automático.
Computación Científica: Las matrices se utilizan para resolver ecuaciones lineales, realizar simulaciones y modelar fenómenos científicos.
Gráficos por Computadora: Las matrices se utilizan para representar y transformar objetos en gráficos 2D y 3D.
Las matrices son una herramienta poderosa que no solo facilita la representación de datos complejos, sino que también permite realizar operaciones y transformaciones avanzadas de manera eficiente. Al dominar el uso de matrices en Python, puedes abrir la puerta a un mundo de posibilidades en diversos campos de la ciencia, la ingeniería y la tecnología.
Uy! Muy buenos ejemplos!
Me dieron ganas de programar ese tablero de Ajedrez.
Otro ejemplo también podria ser para programar un Batalla Naval. :D
Ese es el proyecto final :P
que padre idea
Tengo dos años pagando Platzi, diciendo "Luego comienzo" pués ahora si llegó el momento de aprender, y que buen curso para comenzar con Carli ♥ ¡me encanta!
casi igual jeje
total !!!
Las matrices son una increíble herramienta matemática. Algunos softwares especializados como Matlab se basan en este concepto matemático.
Para programar ese juego de ajedrez ya almenos se el primer paso... crear una matriz, lo demas pues es otro mundo😅😅
Lo leí con la voz de Carli
HAHA! Que bello comentario :3
Opa, interesting experience hahaha
Me latió un buen el ejemplo del tablero de ajedrez y los movimientos que realiza la pieza del caballo. En lo personal, siento que se ejemplifica de mejor manera cómo se ubica un determinado punto (es este caso, una casilla) a partir de la combinación de dos índices, uno para identificar la fila y segundo, que corresponde a la columna.
Voy a investigar cómo meterle un poco de diseño con CSS. Saludos, comunidad 🚀!
En ciencia de datos, las matrices y los tensores son herramientas fundamentales para organizar y manipular datos, especialmente en análisis de grandes volúmenes de información y modelos de aprendizaje automático. Aquí te explico cómo se utilizan en cada contexto:
Matrices:
Organización y manipulación de datos: Una matriz permite organizar datos en formato bidimensional (filas y columnas). Esto es útil para representar datos tabulares como los que se encuentran en hojas de cálculo o bases de datos.
Álgebra lineal en modelos de ML: Muchas operaciones de machine learning, como el cálculo de distancias, transformaciones y predicciones, se basan en álgebra lineal. Las matrices son esenciales para representar sistemas de ecuaciones y aplicar métodos como la descomposición en valores singulares (SVD) o PCA.
Redes neuronales: En redes neuronales, las matrices permiten gestionar las conexiones y pesos entre neuronas de diferentes capas, y facilitan las operaciones de multiplicación y suma necesarias para la propagación hacia adelante y hacia atrás en los modelos.
Tensores:
Datos de más de dos dimensiones: Los tensores extienden la idea de una matriz a tres o más dimensiones. Por ejemplo, una imagen en color se representa como un tensor tridimensional (ancho, alto y canales de color).
Modelos de redes neuronales profundas: En deep learning, los tensores permiten representar conjuntos de datos complejos (como series de tiempo o datos de imágenes) y realizar operaciones avanzadas que calculen representaciones jerárquicas. Las bibliotecas de deep learning (TensorFlow y PyTorch, por ejemplo) están diseñadas para trabajar con tensores, lo que permite operaciones eficientes en GPU y paralelización.
Series temporales y modelos predictivos complejos: En aplicaciones de predicción de series temporales, se utilizan tensores para representar datos secuenciales y construir modelos que analicen relaciones en datos de múltiples variables temporales.
no se puede agregar imagenes pero aquí puse en practica en html y css la representacion de una imagen
<style>*{background-color:#000;}.grid-container{display: grid;grid-template-columns:repeat(5,1fr);grid-template-rows:repeat(5,1fr);gap:2px;/* Espacio entre las celdas */width:500px;/* Ancho total de la cuadrícula */height:500px;/* Altura total de la cuadrícula */margin:0 auto;/* Centrar la cuadrícula en la página */border:2px solid black;/* Borde de la cuadrícula */}.grid-item0{display: flex;align-items: center;justify-content: center;background-color:#000;/* Color de fondo de cada celda */}.grid-item255{display: flex;align-items: center;justify-content: center;color:#fff;background-color:#fff;/* Color de fondo de cada celda */}</style><body><divclass="grid-container"><!-- Crear 25 elementos para llenar la cuadrícula --><divclass="grid-item255">1</div><divclass="grid-item0">2</div><divclass="grid-item0">3</div><divclass="grid-item0">4</div><divclass="grid-item255">5</div><divclass="grid-item0">6</div><divclass="grid-item255">7</div><divclass="grid-item0">8</div><divclass="grid-item255">9</div><divclass="grid-item0">10</div><divclass="grid-item0">11</div><divclass="grid-item0">12</div><divclass="grid-item255">13</div><divclass="grid-item0">14</div><divclass="grid-item0">15</div><divclass="grid-item0">16</div><divclass="grid-item255">17</div><divclass="grid-item0">18</div><divclass="grid-item255">19</div><divclass="grid-item0">20</div><divclass="grid-item255">21</div><divclass="grid-item0">22</div><divclass="grid-item0">23</div><divclass="grid-item0">24</div><divclass="grid-item255">25</div></div>```\<style>\*{background-color:#000;}.grid-container{display: grid;grid-template-columns:repeat(5,1fr);grid-template-rows:repeat(5,1fr);gap:2px; /\* Espacio entre las celdas \*/ width:500px; /\* Ancho total de la cuadrícula \*/ height:500px; /\* Altura total de la cuadrícula \*/ margin:0 auto; /\* Centrar la cuadrícula en la página \*/ border:2px solid black; /\* Borde de la cuadrícula \*/}.grid-item0{display: flex;align-items: center;justify-content: center;background-color:#000; /\* Color de fondo de cada celda \*/}.grid-item255{display: flex;align-items: center;justify-content: center;color:#fff;background-color:#fff; /\* Color de fondo de cada celda \*/}\</style>\<body> \<divclass="grid-container"> \<!-- Crear 25 elementos para llenar la cuadrícula --> \<divclass="grid-item255">1\</div> \<divclass="grid-item0">2\</div> \<divclass="grid-item0">3\</div> \<divclass="grid-item0">4\</div> \<divclass="grid-item255">5\</div> \<divclass="grid-item0">6\</div> \<divclass="grid-item255">7\</div> \<divclass="grid-item0">8\</div> \<divclass="grid-item255">9\</div> \<divclass="grid-item0">10\</div> \<divclass="grid-item0">11\</div> \<divclass="grid-item0">12\</div> \<divclass="grid-item255">13\</div> \<divclass="grid-item0">14\</div> \<divclass="grid-item0">15\</div> \<divclass="grid-item0">16\</div> \<divclass="grid-item255">17\</div> \<divclass="grid-item0">18\</div> \<divclass="grid-item255">19\</div> \<divclass="grid-item0">20\</div> \<divclass="grid-item255">21\</div> \<divclass="grid-item0">22\</div> \<divclass="grid-item0">23\</div> \<divclass="grid-item0">24\</div> \<divclass="grid-item255">25\</div> \</div>
Un ejemplo de matrices en Sistemas de Información Geográfica son los datos de un ráster, que pueden ser imágenes satelitales en los que cada pixel almacena un valor de reflectancia, altitud o índice de vegetación normalizado :)
El mejor ejemplo para demostrar que las matrices son la tiza
GENIAL, Muy Buen Resumen de ListasX3D as Matrices \nYo agregaria mas aplicaciones avanzadas como Mecanica de Fluidos por Computadora donde se utilian enormes matrices multidimension para modelar variables Termodinamicas de los fluidos en movimiento, por tanto que matrices son usadas para almacenar informacion como float de numeros reales con alta precision. Numpy es muy buen Library y funciona excelente para esto . \n
Este comentario me ha volado la cabeza
en el ejemplo: "si el caballo blanco está en la posición (7, 1) (segunda casilla de la última fila)", no veo como sea posible la posicion (5,0)
Se mover'ia a la quinta fila primera casilla (3b)
estoy igual, no se como se movería ese (5,0), o sea no me cuadra el movimiento para el caballo
Tardé un buen rato intentando entender los ejemplos y no sabía de donde salían esos resultados. Al final me di cuenta de que era más fácil de lo que pensaba 😒
Para el que no entienda, dibujen el tablero 8x8 y asignen un numero de 0 a 7 de arriba hacia abajo. Luego de 0 a 7 de izquierda a derecha.
El primer caballo está ubicado en el (7,1) y solo podría ir a (5,0) o (5,2).
El (6,3) es un movimiento válido, pero en este caso el caballo no podría ir porque se encuentra un peón.
Es muy interesante conocer la utilidad de las matrices no solo en el ámbito de la algebra lineal , si no que también su uso se expande a informática , robótica, computación , gráficos por computadora , análisis de datos etc.
Las matrices son una herramienta que nos ayuda a la representación de datos complejos y realizar operaciones de forma avanzada
Para imprimir el tablero de ajedrez de manera cuadrada, puedes iterar sobre cada fila y usar join para unir los elementos con un espacio. Aquí tienes un ejemplo:
for row in chess_board:print(' '.join(str(element)for element in row))
Este código mostrará el tablero en formato cuadrado, facilitando la visualización de las piezas y la estructura del tablero. ¡Sigue practicando en el curso!
estaba buscando justo esto ! gracias
si este principio se aplica al de guerra naval
Para imprimir el tablero de ajedrez como se muestra en la lección, puedes usar el siguiente código:
for row in chess_board:print(' '.join(str(piece)for piece in row))
Este código recorre cada fila del tablero y utiliza join para convertir las piezas en una cadena, separándolas con espacios, lo que facilita la visualización del tablero.
*Una matriz es simplemente una lista que contiene otras listas (filas de la matriz).
*Para acceder a un elemento, usas índices como en cualquier lista [ ]
¡Excelentes ejemplos! Con lo del tablero de ajedrez logré entenderlo bien :D