Página 1 de 1

Duda con arrays

NotaPublicado: 2008-04-23 18:40 @820
por creating021
Tengo algo como esto:

1 1 1 0 1 0
1 0 1 1 0 1
1 0 1 0 1 0
1 1 1 0 0 0


¿Cómo puedo separar cada figura formada?

Hay que tener en cuenta que cada figura es diferente (las cosas se ponen difíciles al tener más figuras) y una está junto a la otra (además yo no conozco las figuras a buscar).

¿Alguna idea?

NotaPublicado: 2008-04-23 18:56 @831
por explorer
¿Qué es una 'figura'?

NotaPublicado: 2008-04-23 19:09 @839
por creating021
explorer escribiste:¿Qué es una 'figura'?

rae.es escribiste:Forma exterior de un cuerpo por la cual se diferencia de otro.


Digamos que tengo un cuadrado en ASCII y lo meto en un array:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my @cuadrado = (
1, 1, 1, 1,
1, 0, 0, 1,
1, 0, 0, 1,
1, 1, 1, 1
);
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


O un triángulo:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
 my @triangulo = (
0, 0, 1, 0, 0,
0, 1, 0, 1, 0,
1, 1, 1, 1, 1
);
 
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Si en un archivo tengo muchas de estas figuras, todas juntas... ¿Cómo las puedo separar?

NotaPublicado: 2008-04-23 19:21 @848
por explorer
Falta por definir muchas cosas de este problema...

¿Cómo es de grande el escenario del trabajo? ¿No hay límite o digamos que no está definido?

¿Cuántas figuras distintas hay? ¿Son conocidas? ¿Son conocidas sus dimensiones o formas?

Una posible solución sería:
* Empezar por separar las figuras que están aisladas. Una figura aislada es la que tiene un borde de '0' alrededor de ellas
* Del resto, hay que hacer operaciones de localización e identificación de cada posible figura, para quitarlas una a una.

NotaPublicado: 2008-04-23 20:09 @881
por creating021
¿Cómo es de grande el escenario del trabajo? ¿No hay límite o digamos que no está definido?

No hay límites ni está definido.
¿Cuántas figuras distintas hay? ¿Son conocidas? ¿Son conocidas sus dimensiones o formas?

No tengo predefinido nada, de hecho es un mapa (no hay figuras redondas, todas son formadas con líneas rectas).
* Empezar por separar las figuras que están aisladas. Una figura aislada es la que tiene un borde de '0' alrededor de ellas
* Del resto, hay que hacer operaciones de localización e identificación de cada posible figura, para quitarlas una a una.


Tomo nota :lol: y gracias.

NotaPublicado: 2008-04-24 02:39 @152
por explorer
creating021 escribiste:
¿Cuántas figuras distintas hay? ¿Son conocidas? ¿Son conocidas sus dimensiones o formas?

No tengo predefinido nada, de hecho es un mapa (no hay figuras redondas, todas son formadas con líneas rectas).

Vale. No hay figuras predefinidas. No sabemos su tamaño, su orientación, número de lados, etc. etc.

En el primer ejemplo, entonces, hay dos cuadrados pegados...

creating021 escribiste:
* Empezar por separar las figuras que están aisladas. Una figura aislada es la que tiene un borde de '0' alrededor de ellas
* Del resto, hay que hacer operaciones de localización e identificación de cada posible figura, para quitarlas una a una.


Tomo nota :lol: y gracias.
Este es un bonito ejercicio para Perl... a ver si la gente se anima y aporta soluciones creativas.

NotaPublicado: 2008-04-26 14:21 @639
por creating021
Al final lo he hecho con fuerza bruta :)

Al ser un mapa, tengo definido el tamaño (de "X" y "Y") y solo necesito dos bucles, recorro cada carácter en sentido de "X" y verifico en "Y"
Otro truco es que tomo sólo lo de adentro (es lo único que necesito).