import java.util.ArrayList;
import java.util.List;
// ------------------------------------------------------------
// Build a pyramid from a flat list of numbers
// ------------------------------------------------------------
public class Pyramid {
// ------------------------------------------------------------
// Build a pyramid from a flat list of numbers
// ------------------------------------------------------------
static List<List<Integer>> buildPyramid(List<Integer> nums) {
List<List<Integer>> pyramid = new ArrayList<>();
int index = 0;
int rowSize = 1;
while (index + rowSize <= nums.size()) {
List<Integer> row = new ArrayList<>();
for (int i = 0; i < rowSize; i++) {
row.add(nums.get(index++));
}
pyramid.add(row);
rowSize++;
}
return pyramid;
}
// ------------------------------------------------------------
// Print the pyramid centered
// ------------------------------------------------------------
static void printPyramid(List<List<Integer>> pyramid) {
int height = pyramid.size();
for (int r = 0; r < height; r++) {
// Print leading spaces
System.out.print(" ".repeat((height - r - 1) * 2));
// Print row values
for (int v : pyramid.get(r)) {
System.out.print(v + " ");
}
System.out.print("\n");
}
}
// ------------------------------------------------------------
// Main program
// ------------------------------------------------------------
public static void main(String[] args) {
List<Integer> numbers = List.of(3, 7, 5, 2, 4, 8, 6, 9, 0, 3);
var pyramid = buildPyramid(numbers);
System.out.println("Pyramid:");
printPyramid(pyramid);
}
}
/*
run:
Pyramid:
3
7 5
2 4 8
6 9 0 3
*/