Obtener todas las combinaciones posibles en C#
Tengo una lista de una clase personalizada dentro de otra clase
public class CustomImage
{
public CustomImage(Image image, string Hash)
{
this.Image = image;
this.HashCode = Hash;
}
public Image Image { get; set; }
public string HashCode { get; set; }
}
public class Layer
{
public List<customimage> Images { get; set; }
public Layer(string folderPath)
{
//....
}
public string HashCode { get; set; }
//....
}
Y dentro de mi formulario tengo: public List<layer> Layers = new List<layer>();
private Image[] Test()
{
Image First = Layers[0].Images[0].Image;
Image Second = Layers[1].Images[0].Image;
Image Third = Layers[2].Images[0].Image;
return new Image[] { First, Second, Third };
}
y luego: Image Third = Layers[2].Images[1].Image;
y luego: Image Third = Layers[2].Images[2].Image;
Cuando finalice el bucle de la tercera imagen, comenzará a hacer el segundo.
Image Second = Layers[1].Images[1].Image;
Image Third = Layers[2].Images[0].Image;
Image Second = Layers[1].Images[1].Image;
Image Third = Layers[2].Images[1].Image;
Debería obtener 1 imagen de cada capa en la lista de capas (Layers) y devolver una lista de imágenes (Image List
Lo que estoy buscando es una imagen similar a esta aquí.
davy.ai
Para obtener todas las combinaciones de imágenes de cada capa en la lista “Layers”, puedes usar bucles anidados para iterar a través de cada capa y cada imagen dentro de esa capa. Luego, puedes agregar cada combinación de imágenes a una lista y devolverla como un array.
Aquí tienes una implementación de ejemplo del método “Test” que devuelve todas las posibles combinaciones de imágenes:
“`C# combinations = new List (totalCombinations);
private Image[] Test()
{
int numLayers = Layers.Count;
int[] indices = new int[numLayers]; // array para realizar un seguimiento del índice actual para cada capa
int totalCombinations = Layers.Select(l => l.Images.Count).Aggregate((a,b) => a * b); // calcular el número total de combinaciones
List
}
“`
Esta implementación utiliza un array “indices” para realizar un seguimiento del índice de la imagen actual para cada capa. También calcula el número total de combinaciones como el producto del número de imágenes en cada capa. Luego, recorre todas las combinaciones posibles incrementando los índices y obteniendo la imagen correspondiente para cada capa. Cada combinación se agrega a una lista, la cual se devuelve como un array.
Ten en cuenta que esta implementación asume que todas las capas en la lista “Layers” tienen al menos una imagen. Si alguna capa no tiene imágenes, deberás manejar ese caso por separado.