Matematicas con bloques

22
Matemática de bloques Author: lrcvs / Xkrouhn 01.06.2015

Transcript of Matematicas con bloques

Page 1: Matematicas con bloques

Matemática de

bloques

Author:

lrcvs / Xkrouhn

01.06.2015

Page 2: Matematicas con bloques

Agradecimientos:

A los amigos de: http://www.freebasic.net/forum

En orden alfabético:dodicatfxmRichard

Por el interés y desarrollo del programa con FreeBasic.

Page 3: Matematicas con bloques

La matemática de bloques es un juego de niños

Como vemos en la figura, los bloques, se componen de elementos, que son la unidad de trabajo con los bloques.

1 elemento = 1 unidad

Con los elementos, podemos crear filas o columnas.

La fila, es un conjunto de elementos agrupados horizontalmente.

La columna, es un conjunto de elementos agrupados verticalmente.

Agrupando filas o columnas, formamos superficies o niveles.

Si unimos varios niveles, obtenemos un bloque.

Page 4: Matematicas con bloques

Las Dimensiones

Algunas películas de ciencia ficción con temática espacial, casi siempresuelen decir que esta en una u otra dimensión

Definamos las dimensiones 1D, 2D, 3D, 4D, 5D y 6D....

1D: esta formada por filas O columnas de elementos.

2D: esta formada por filas Y columnas de elementos.

3D: esta formada por filas Y columnas, agrupados en niveles o capas.

4D: esta formado por varios bloques 3D, agrupados en filas.

5D: esta formado por varios bloques 3D, agrupados en filas Y columnas.

Page 5: Matematicas con bloques

6D: esta formado por varios bloques 3D, agrupados en filas Y columnasY niveles.

Uniendo bloques sucesivamente formaríamos 7D, 8D, 9d, etc, etc..

Estas tres figuras son equivalentes, todas tienen 27 elementos. Las podemos transformar de varias formas (dimensiones, bloques, 1D, 2D, 3D...) distintas, pero siguen teniendo los mismos elementos, pues son

Page 6: Matematicas con bloques

todas equivalentes, mantienen el mismo numero de elementos.

Los conceptos

En este trabajo, las posiciones de los elementos, filas, columnas y niveles, los contaremos del siguiente modo:

Filas, Columnas, Niveles y Bloques o Dimensiones

1 = Filas, siempre de arriba a bajo.2 = Columnas, siempre de izquierda a derecha3 = Niveles, siempre de arriba abajo.4 = Bloques o dimensiones, de izquierda a derecha y de arriba a bajo.

Una observación muy importante:

“El numero de filas <= al numero de columnas.”

Si fuese de otra forma, estos cálculos serian erróneos

Page 7: Matematicas con bloques

Calculo de las posiciones

Datos a conocer:

Los datos del bloque unidad:

FU = Numero de filas del bloque unidadCU = Numero de columnas del bloque unidadNU = Numero de niveles del bloque unidadBU = Numero de bloques iguales al bloque unidad

Los datos de la posicion del elemento a buscar:

PF = Posicion filaPC = Posicion ColumnaPN = Posicion Nivel PB = Numero de Bloque

Formula general para calcular la posicion del elemento a buscar =

((PF - 1) * CU) + PC + ((FU * CU * (PN - 1))) + ((FU * CU * NU) * (PB - 1))

Esta formula, es el resultado de unir los distintos niveles de calculo de la posicion de un elemento, dependiendo de la disposición de los bloques unidad.

Page 8: Matematicas con bloques

2D

Usando la formula general podemos calcular la posicion de un elemento en una tabla o nivel 2D

Datos del bloque unidad del ejemplo:FU = 5 CU = 6 NU = 1 BU = 1 Elementos = 5 * 6 * 1 * 1 = 30

Datos del elemento a buscar:PF = 4 PC = 5 PN = 1 PB = 1

Posicion del elemento = ((PF - 1) * CU) + PC + ((FU * CU * (PN - 1))) + ((FU * CU * NU) * (PB – 1))

((4 – 1) * 6) + 5 + ((5 * 6 * (1 – 1))) + ((5 * 6 * 1) * (1 – 1)) = 23

Tambien podemos calcular del siguiente modo:

Posicion 2D = ((PF - 1) * CU) + PC

Sustituyendo las variables por sus valores, obtenemos igualmente la posicion en un sistema 2D:

((4 – 1) * 6) + 5 = 23

Page 9: Matematicas con bloques

3D

Usando la formula general podemos calcular la posicion de un elemento en una tabla o nivel 3D

Datos del bloque unidad del ejemplo:FU = 3 CU = 3 NU = 3 BU = 1 Elementos = 3 * 3 * 3 * 1 = 27

Datos del elemento a buscar:PF = 3 PC = 3 PN = 3 PB = 1

Posicion del elemento = ((PF - 1) * CU) + PC + ((FU * CU * (PN - 1))) + ((FU * CU * NU) * (PB – 1))

((3 – 1) * 3) + 3 + ((3 * 3 * (3 – 1))) + ((3 * 3 * 3) * (1 – 1)) = 27

Tambien podemos calcular la posicion del siguiente modo:

Posicion 3D = ((PF - 1) * CU) + PC + ((FU * CU * (PN - 1)))

Sustituyendo las variables por sus valores, obtenemos igualmente la posicion en un sistema 3D:

((3 – 1) * 3) + 3 + ((3 * 3 * (3 – 1))) = 27

Page 10: Matematicas con bloques

4D

Usando la formula general podemos calcular la posicion de un elemento en una tabla o nivel 4D

Datos del bloque unidad del ejemplo:FU = 3 CU = 3 NU = 3 BU = 3 Elementos = 3 * 3 * 3 * 3 = 81

Datos del elemento a buscar:PF = 2 PC = 2 PN = 2 PB = 3

Posicion del elemento = ((PF - 1) * CU) + PC + ((FU * CU * (PN - 1))) + ((FU * CU * NU) * (PB – 1))

((2 – 1) * 3) + 2 + ((3 * 3 * (2 – 1))) + ((3 * 3 * 3) * (3 – 1)) = 68

A partir de 3D, siempre usaremos formula general, simplemente deberemos conocer el numero de bloques que tenemos en el sistema.

Page 11: Matematicas con bloques

5D

Datos del bloque unidad del ejemplo:FU = 3 CU = 3 NU = 3 BU = 9 Elementos = 3 * 3 * 3 * 9 = 243

Datos del elemento a buscar:PF = 1 PC = 1 PN = 1 PB = 9

Posicion del elemento = ((PF - 1) * CU) + PC + ((FU * CU * (PN - 1))) + ((FU * CU * NU) * (PB – 1))

((1 – 1) * 3) + 1 + ((3 * 3 * (1 – 1))) + ((3 * 3 * 3) * (9 – 1)) = 217

Page 12: Matematicas con bloques

6D

Datos del bloque unidad del ejemplo:FU = 3 CU = 3 NU = 3 BU = 27 Elementos = 3 * 3 * 3 * 9 = 729

Datos del elemento a buscar:PF = 3 PC = 3 PN = 2 PB = 27

Posicion del elemento = ((PF - 1) * CU) + PC + ((FU * CU * (PN - 1))) + ((FU * CU * NU) * (PB – 1))

((3 – 1) * 3) + 3 + ((3 * 3 * (2 – 1))) + ((3 * 3 * 3) * (27 – 1)) = 720

Page 13: Matematicas con bloques

Dando la vuelta al problema

En este capitulo, le damos la vuelta al problema, conocemos la composición (filas, columnas, niveles) del bloque unidad y la posición del elemento.

Ahora buscaremos la fila, la columna, nivel y bloque donde se encuentra el elemento indicado.

Usare psudocodigos para calcular cada etapa del proceso, al final de todos los procesos, hay un programa en Basic, que reúne las distintas etapas, para calcular la fila del elemento que buscamos.

Si no realizamos las distintas etapas secuencialmente, no podemos calcular los datos parciales.

El usar pseudocodigos, es por que son muy simples y cada persona lospuede interpretar a su modo, lo mas simple posible.

Estos procesos son generales, sirven para todos los casos.

Page 14: Matematicas con bloques

Usaremos este ejemplo mas complejo:

Datos que necesitamos de este ejemplo:

F = Numero de filas del bloque unidad = 3C = Numero de columnas del bloque unidad = 3N = Numero de niveles del bloque unidad = 3B = Numero de bloque a buscarP = Posicion del elemento a buscar = 683

INT = Parte entera Mod = Resto división

Page 15: Matematicas con bloques

El BLOQUE

Aquí calculamos el bloque donde se encuentra el elemento a buscar.

Descartamos calcular en 1D, por obiedad.

En 2D, el nivel es = 1.

CALCULAR_BLOQUE

F=3 C=3 N=3P=683Si P MOD (F*C*N) <> 0 Entonces

B=INT(P/(F*C*N))+1Sino

B=INT(P/(F*C*N))Fin SiEscribir "BLOQUE = ",BFin

BLOQUE = 26

Comentario:Por sentido común, si la posicion del elemento a buscar, la dividimos entre los elementos del bloque unidad (F * C * N) , obtendremos los bloques unidad que contiene el elemento a buscar o dicho de otro modo la posicion donde se encuentra el elemento a buscar.

Observamos que si el resto es “0”, significa que la posiciona buscar, esta en el ultimo elemento de un bloque.

En caso contrario, se encuentra en cualquier posicion de otro bloque o del bloque unidad (el primero), por eso al cociente le sumamos un “1”.

Page 16: Matematicas con bloques

El NIVEL

CALCULAR NIVELF=3C=3N=3B=26P=683Nivel=INT(P/(F*C))+1Si P MOD (F*C) = 0 Entonces

Nivel = Nivel -1Sino

Nivel = NivelFin SiK = Nivel-((B-1)*N)Escribir "NIVEL = ", KFin

NIVEL = 1

Comentario:Un nivel, esta formado por filas y columnas = F * C = Nivel.Si dividimos la posicion que estamos, entre el numero de elementos de un nivel, “P/(F*C)”, obtendremos en que nivel nos encontramos, ahora bien, este calculo, seria como si nuestro ejemplo fuese un bloque de 3 F* 3C * 81N, si al total de niveles de nuestro sistema, le restamos el nivel donde nos encontramos, “Nivel – ((B-1) * N)”, obtendremos el nivel de un solo bloque.

Page 17: Matematicas con bloques

La columna

CALCULAR COLUMNAC=3P=683Si P<C Entonces

CO=PSino

CO=P MOD CFin SiSi P MOD C = 0 Entonces

CO=CSino

CO=COFin SiEscribir "COLUMNA = ",CO

Fin

COLUMNA = 2

Comentario:Vemos que si la posicion a buscar, es menor que el numero de columnas del bloque unidad, la posicion de la columna a buscar, es igual a la posicion donde estamos.

Si P<C entonces CO = P

El resto del proceso es igual al del nivel.

Page 18: Matematicas con bloques

La Fila

CALCULAR FILAF=3C=3N=3B=26P=683Nivel=INT(P/(F*C))+1Si P MOD (F*C) = 0 Entonces

Nivel = Nivel -1Sino

Nivel = NivelFin Si

N=Nivel <<< ver comentario sobre el nivel

F=INT(((P-CO-((F*C)*(N-1)))/C)+1) <<< Formula para calcular la fila

Escribir "FILA = ",F

FILA = 3

Tras esta secuencia de calculo, obtenemos todos los datos, el elementoa buscar se encuentra en:

BLOQUE = 26NIVEL = 1COLUMNA = 2FILA = 3

Page 19: Matematicas con bloques

Epilogo

Sigues pensando que la matemática de bloques es un juego de niños?

Que aplicaciones encuentras a estas formulas?

Posibles aplicaciones:Informática, Robótica, Almacenamiento 3D Automatizado, Criptografía, Gráficos 3D con números enteros.

En informática, se demuestra que todo Vector/Dim 2D, 3D, 4D..., se puede transformar en un Vector/Dim 1D.

En almacenamiento 3D, sabiendo el numero de filas, columnas y nivelesdel almacén, simplemente es necesario indicar la posición y el programa la descompone en numero de fila, numero de columna y numero de nivel donde se encuentra el objeto a buscar.

Gráficos 3D, podemos indicar un punto 3D, mediante un valor, por ejemplo el punto 3*3*3, su posición es 27, después descomponemos y obtenemos X,Y,Z ( Fila, Columna, Nivel).

En criptografía como codificación de coordenadas, etc, etc.

Para mas información y ver el inicio de este trabajo en:

http://www.freebasic.net/forum/viewtopic.php?f=3&t=19820

Repositorio:

http://es.slideshare.net/ZkrouhnZyx/matematicas-con-bloques

Para escribir comentarios:

[email protected]

Dedicado a todas las personas que tienen curiosidad.

Page 20: Matematicas con bloques

Programas en BasicPrograma para calcular la posicion del elemento a buscar.

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

clsinput "Filas del bloque unidad = ";roinput "Columnas del bloque unidad = ";coinput "Niveles del bloque unidad = ";leprintinput "Posicion Fila = ";ainput "Posicion Columna = ";binput "Posicion Nivel = ";cinput "Numero de Bloque = ";d

P = ((a - 1) * co) + b + ((ro * co * (c - 1))) + ((ro * co * le) * (d-1))

print "Posicion = ";pend:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Page 21: Matematicas con bloques

Programa para buscar la fila, columna, nivel y bloque donde se encuentra un elemento a buscar.

Datos necesarios:

Filas del bloque unidadColumnas del bloque unidadNiveles del bloque unidadPosicion a buscar

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

clsinput "Numero de filas del bloque unidad (filas <= columnas) = "; rinput "Numero de columnas del bloque unidad (columnas >= filas) = ";cinput "Numero de niveles del bloque unidad = ";linput "Posicion a buscar = ";ph = l

'calcular bloqueif p mod (r*c*l) <> 0 thend = int(p/(r*c*l))+1elsed = int(p/(r*c*l))end if

'calcular nivell = int(p/(r*c))+1if p mod (r*c) = 0 then l = l-1

'calcular columnaif p < c then co = pif p >= c then co = p mod cif p mod c = 0 then co = c

'calcular filaf = ((p-co-((r*c)*(l-1)))/c)+1':::::::::::::::::::::::::::::::::

printcolor 12print "blo = ";d;" fil = ";f; " col = ";co; " niv = ";l-((d-1)*h)end

Page 22: Matematicas con bloques

Fin