Mie Abr 23, 2008 5:40 pm
|
 |
creating021
Vive para Perl en Español

|
Registrado: 23 Feb 2006
Mensajes: 481
Ubicación: Frente al monitor
|
|
| Duda con arrays |
|
|
Tengo algo como esto:
| Cita: |
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? |
|
|
|
Mie Abr 23, 2008 5:56 pm
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4092
Ubicación: Valladolid, España
|
|
|
|
|
| ¿Qué es una 'figura'? |
|
Mie Abr 23, 2008 6:09 pm
|
 |
creating021
Vive para Perl en Español

|
Registrado: 23 Feb 2006
Mensajes: 481
Ubicación: Frente al monitor
|
|
|
|
|
| explorer escribió: | | ¿Qué es una 'figura'? |
| rae.es escribió: | | 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:
| Perl: | my @cuadrado = (
1, 1, 1, 1,
1, 0, 0, 1,
1, 0, 0, 1,
1, 1, 1, 1
); |
O un triángulo:
| Perl: | my @triangulo = (
0, 0, 1, 0, 0,
0, 1, 0, 1, 0,
1, 1, 1, 1, 1
);
|
Si en un archivo tengo muchas de estas figuras, todas juntas... ¿Cómo las puedo separar? |
|

Mie Abr 23, 2008 6:21 pm
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4092
Ubicación: Valladolid, España
|
|
|
|
|
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. |
|

Mie Abr 23, 2008 7:09 pm
|
 |
creating021
Vive para Perl en Español

|
Registrado: 23 Feb 2006
Mensajes: 481
Ubicación: Frente al monitor
|
|
|
|
|
| Cita: | | ¿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.
| Cita: | | ¿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).
| Cita: | * 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 y gracias. |
|

Jue Abr 24, 2008 1:39 am
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4092
Ubicación: Valladolid, España
|
|
|
|
|
| creating021 escribió: | | Cita: | | ¿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 escribió: | | Cita: | * 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 y gracias. | Este es un bonito ejercicio para Perl... a ver si la gente se anima y aporta soluciones creativas. |
|

Sab Abr 26, 2008 1:21 pm
|
 |
creating021
Vive para Perl en Español

|
Registrado: 23 Feb 2006
Mensajes: 481
Ubicación: Frente al monitor
|
|
|
|
|
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). |
|
Powered by phpBB © 2001, 2005 phpBB Group
|