Un rombo.

Cuestiones y dudas acerca de lenguajes de programación diversos.

Moderador: Moderadores

Avatar de Usuario
GepetoBerne

Un rombo.

Mensaje por GepetoBerne » Lun Dic 12, 2005 8:30 pm

todo comenzo con un rombo.

habia que dibujar un rombo en la pantalla, en c y con los printf.

1 2 3 4 5
1 *
2 * * *
3 * * * * *
4 * * *
5 *


primero probe con todo lo que uno prueba primero. diagonales, sectores
y demas. todo funciona pero no tiene sabor, entonces pense
"tiene que haber una relacion que dibuje el rombo".
una relacion cuya entrada sea un par ordenado y cuya salida indique
si el par ordenado pertenece a algun punto del rombo o no.

la relacion: los pares implicados son aquellos cuya diferencia abs no es mayor que 2 y
cuya suma es igual al cardinal del conjunto de entrada
dividido por 2 mas 1 mas un numero n que se incrementa tantas veces como el
cardinal (n = n + 1; n >= 1)

esta relacion es solo para una grilla de 5*5. la generalizacion es facil pero ahora
no importa.

los pares:
(1,1) => es su diferencia no mayor que 2? (o menor que 3) 1-1 = 0
=> si, la dif abs es menor que 3, ahora, es su suma igual al cardinal (5) dividido
por 2 mas uno mas un n que empieza en 1 y se incrementa.

1 + 1 = 2

5 /(ent) 2 = 2 + 1 = 3 ; 3 + (n=1) = 4

2 <> 4 y por eso el punto de cordenadas 1,1 no pertenece a la figura del rombo
(1,2) => 1-2 = 1 ; 1 + 2 = 3 ; 1 <> 4. no pertenece.
(1,3) => 1-3 = 2 ; 1 + 3 = 4 ; 4 = 4. si pertenece.
(1,4) => 1-4 = 3. no es menor que 3, no pertenece

y asi...

el programa en c que dibuja el rombo basado en la relacion que lo genera es este:

#include <stdio.h>
#include <conio.h>
#include <math.h>

main()
{
int i,j;

for (i = 1; i <= 5; i++) {
for (j = 1; j <= 5; j++) {

if (fabs(i - j) < 3) {
if (i + j == 4 || i + j == 5 || i + j == 6 || i + j == 7 || i + j == 8) printf ("*");
else printf (" ");
}
else printf (" ");
}
printf ("\n");
}

getche();
return 0;
}

-----------------------------------------------------------------------------------

lo interesante de esto no es dibujar un rombo, se me ocurren algunas cosas.

poder demostrar que para cada dispersion de puntos en un plano existe una relacion que lo genera
ya sea que forme un rombo, o cualquier cosa. hacer un programa que encuentre la/s relacio/nes que
formar una dispersion dada.

entre las utilidades se me ocurre.

metodo de compresion de informacion
dibujos en 3d uniendo capas formadas por relaciones
reconocimiento de patrones

si vemos un programa como una dispersion de puntos en memoria...

memoria al antes de comenzar el programa

1 0 1 0 0 0 0 1 1 1 0 0 0 1 => al fin y al cabo es una dispersion de puntos
0 0 0 1 1 1 0 1 1 1 0 0 1 1
0 1 1 1 1 1 0 0 0 0 1 1 1 0

y una serie de intrucciones que cambian estas secuencias en memoria podriamos representar
un programa como una relacion que representa el estado inicial, una que representa el estado final
y otra que lleva de la primera a la segunda.

------------------------------------------------------------------------------------

que onda? esto tiene valides o es todo una estupides?
alguien sabe que parte de la informatica trata estos temas?