Autor Tema: Convertir arreglos unidimensionales a bidimensionales (y viceversa)  (Leído 1946 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Conectado NiuWeb

  • Sangheili Zealot.
  • Moderadores globales
  • Okupa
  • *
  • Puntos: 2756
  • Mensajes: 1.654
  • Agradecido: 125 veces
  • Sexo: Masculino
  • Díselo al Covenant dijo el Jeilo verde.
    • Ver Perfil
Bueno, segundo script que resubiré al foro.
Autor: NiuWeb.
Versión de GM utilizada: Studio 1.4.
Descripción: Scripts que permiten convertir un arreglo unidimensional a uno bidimensional con el número de columnas dado, o convertir un arreglo bidimensional a uno unidimensional.
Código
///array_1d_to_2d(array, width);
var array  = argument0;
var width  = argument1;
var length = array_length_1d(array);

var array2d;
var xn, yn;
for(var i = 0; i < length; i++)
{
    yn = floor(i/width);
    xn = i - yn*width;
    array2d[yn, xn] = array[i];
}
return array2d;
Argumentos:
array: El arreglo unidimensional original a convertir.
width: El número de columnas que tendrá el nuevo arreglo.

///array_2d_to_1d(array2d);
var array2d = argument0;
var height  = array_height_2d(array2d);
var array1d, a = 0;

for(var i = 0; i < height; i++)
{
    for(var j = 0; j < array_length_2d(array2d, i); j++)
    {
        array1d[a++] = array2d[i, j];
    }
}
return array1d;
Argumentos:
array: El arreglo bidimensional original a convertir.

Como siempre; dudas, inquietudes, quejas, reclamos, insultos o amenazas son bienvenidos, y si encuentran algún fallo en los códigos por favor hacérmelo saber.


-Sólo había una nave.
-¿Una? ¿Estás seguro?.
-Sí, la llamaban The Pillar Of Autumn.

BA:STFW&RTFM
 
No Tienes Permisos Para Dar Puntos
point 10 Puntos

Usuarios que puntuaron el tema » Johann (10 Pts) 


Desconectado Johann

  • Las cosas como son!
  • Moderadores globales
  • Okupa
  • *
  • Puntos: 559
  • Mensajes: 722
  • Agradecido: 80 veces
  • Sexo: Masculino
  • First Class Soldier... 8 años en CGM, 3 como mod
    • Ver Perfil
Re:Convertir arreglos unidimensionales a bidimensionales (y viceversa)
« Respuesta #1 en: Noviembre 26, 2018, 09:55:00 pm »
Si el arreglo unidimensional no tiene la cantidad de elementos exacta para crear un arreglo bidimensional completo, es decir, que la ultima fila no quede completa, ¿Como haría para recorrerlos con doble ciclo for y que al final no muera pq no hay mas elementos?

Ej: Supongamos que entra un array de 32 elementos y lo quiero como una matriz de 6*6.
Cita de: Fenris78
Si un tema os resulta de interes y veis que hay poca información, la mejor solucion no es quejarse o pedir sin pensar, sino sugerir algo bien planteado o aportarlo vosotros mismos.
Cita de: Calio
Somos desarrolladores independientes y, por lo tanto, no tenemos por qué guiarnos por las tendencias del mercado.
 
Los siguientes usuarios dieron las gracias a este tema: NiuWeb


Conectado NiuWeb

  • Sangheili Zealot.
  • Moderadores globales
  • Okupa
  • *
  • Puntos: 2756
  • Mensajes: 1.654
  • Agradecido: 125 veces
  • Sexo: Masculino
  • Díselo al Covenant dijo el Jeilo verde.
    • Ver Perfil
Re:Convertir arreglos unidimensionales a bidimensionales (y viceversa)
« Respuesta #2 en: Noviembre 27, 2018, 01:50:27 am »
Si el arreglo unidimensional no tiene la cantidad de elementos exacta para crear un arreglo bidimensional completo, es decir, que la ultima fila no quede completa, ¿Como haría para recorrerlos con doble ciclo for y que al final no muera pq no hay mas elementos?

Ej: Supongamos que entra un array de 32 elementos y lo quiero como una matriz de 6*6.
Si quieres convertir un arreglo unidimensional a uno bidimensional usarías el primer script, y realmente no tendrías ningún problema en el caso que mencionas, puesto que el ciclo solo recorre los elementos del 1d y les asigna coordenadas 2d, así que si quedan faltando espacios simplemente se omiten, quedan "vacíos".
-Sólo había una nave.
-¿Una? ¿Estás seguro?.
-Sí, la llamaban The Pillar Of Autumn.

BA:STFW&RTFM