Coding questions · Faire
Print a Centered Pascal Triangle
This question evaluates the ability to generate combinatorial structures (Pascal's triangle) and apply precise numeric formatting, alignment, and string-layout skills, reflecting algorithmic thinking and attention to presentation details.
Given a positive integer height, generate the first height rows of Pascal's triangle and print them as a centered text triangle.
Formatting requirements:
- Let
max_valuebe the largest number that appears in the triangle. - Let
wbe the number of decimal digits inmax_value. - Print each number right-aligned in a field of width
w. - Use consistent spacing between values so the output looks visually symmetric.
- Add leading spaces so each row is centered relative to the last row.
Example: if the largest value is 121, then w = 3, so the value 1 should be printed as " 1".
Print a Centered Pascal Triangle
Given a positive integer height, generate the first height rows of Pascal's triangle and return them as a list of strings representing a centered text triangle. If the returned strings are printed line by line, they should form a visually symmetric Pascal triangle.
Formatting rules:
- Let
max_valuebe the largest number anywhere in the generated triangle. - Let
wbe the number of decimal digits inmax_value. - Format every number right-aligned in a field of width
w. - Separate adjacent formatted numbers with exactly one space.
- Let
last_widthbe the length of the formatted last row. - For each row, add
floor((last_width - current_row_width) / 2)leading spaces so it is centered relative to the last row. - Do not include trailing spaces in the returned strings.
Example: if max_value = 121, then w = 3, so the value 1 should be formatted as ' 1'.
Constraints
- 1 <= height <= 30
- Each interior value in Pascal's triangle is the sum of the two values directly above it
Hints
- Build Pascal's triangle row by row: every row starts and ends with 1, and each middle value comes from two adjacent values in the previous row.
- Because the spacing depends on the largest value and the width of the last row, generate all rows first and format them in a second pass.