arrangeProducts method

List<Product> arrangeProducts(
  1. List<Product> products
)

Implementation

List<Product> arrangeProducts(List<Product> products) {
  List<Product> orderedProducts = [];
  List<Product> pendingSpan1 = [];

  for (Product product in products) {
    if (product.span == 1) {
      pendingSpan1.add(product);
    } else {
      while (pendingSpan1.length >= 2) {
        orderedProducts.add(pendingSpan1.removeAt(0));
        orderedProducts.add(pendingSpan1.removeAt(0));
      }
      orderedProducts.add(product);
    }
  }

  orderedProducts.addAll(pendingSpan1);

  return orderedProducts;
}