Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 

Duda con arrays

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Intermedio
Mensaje Mie Abr 23, 2008 5:40 pm
creating021
Vive para Perl en Español
Vive para Perl en Español
Registrado: 23 Feb 2006
Mensajes: 481
Ubicación: Frente al monitor
Duda con arrays Responder citando

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?
Mensaje Mie Abr 23, 2008 5:56 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4092
Ubicación: Valladolid, España
Responder citando

¿Qué es una 'figura'?
Mensaje Mie Abr 23, 2008 6:09 pm
creating021
Vive para Perl en Español
Vive para Perl en Español
Registrado: 23 Feb 2006
Mensajes: 481
Ubicación: Frente al monitor
Responder citando

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?
Mensaje Mie Abr 23, 2008 6:21 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4092
Ubicación: Valladolid, España
Responder citando

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.
Mensaje Mie Abr 23, 2008 7:09 pm
creating021
Vive para Perl en Español
Vive para Perl en Español
Registrado: 23 Feb 2006
Mensajes: 481
Ubicación: Frente al monitor
Responder citando

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 Laughing y gracias.
Mensaje Jue Abr 24, 2008 1:39 am
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4092
Ubicación: Valladolid, España
Responder citando

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 Laughing y gracias.
Este es un bonito ejercicio para Perl... a ver si la gente se anima y aporta soluciones creativas.
Mensaje Sab Abr 26, 2008 1:21 pm
creating021
Vive para Perl en Español
Vive para Perl en Español
Registrado: 23 Feb 2006
Mensajes: 481
Ubicación: Frente al monitor
Responder citando

Al final lo he hecho con fuerza bruta Smile

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).
Publicar nuevo tema   Responder al tema    Foros de discusión -> Intermedio Todas las horas son GMT - 6 Horas
Página 1 de 1



Powered by phpBB © 2001, 2005 phpBB Group