How to build a pyramid from the numbers 3, 7, 5, 2, 4, 8, 6, 9, 0, 3 in Java

1 Answer

0 votes
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    

*/

 



answered 1 hour ago by avibootz
...