A right-aligned reverse alphabet pyramid prints reverse suffixes (A, BA, CBA, …) on fixed-width rows, with leading spaces so the letters sit on the right.
Remember
Rule: scan top..A; print space while j > i, else print j
A
BA
CBA
DCBA
EDCBA ← top = E
Unlike Program 2 (left-aligned reverse prefixes E, ED, EDC…), this pattern grows reverse suffixes from the right using the $j > $i space test.
Approach
How to Solve It
Pick a row peak, scan the full width downward, and print spaces until the peak — then print the reverse letters.
Method
Idea
Best for
Fixed-width scan
Inner $j from top..A; $j > $i → space else letter
Learning one-loop alignment
Explicit pad
Print width - letters spaces, then $i..A
Clearer reading once the shape is clear
Pseudocode
Pseudocode
for $i from 'A' to $top:
for $j from $top down to 'A':
if $j > $i:
echo space
else:
echo $j
echo PHP_EOL
Cheat sheet
Goal
Pattern
Row peak
for ($i = 'A'; $i <= $top; $i++)
Fixed-width scan
for ($j = $top; $j >= 'A'; $j--)
Space or letter
echo ($j > $i) ? ' ' : $j;
Explicit pad
$pad = $width - (ord($i) - ord('A') + 1);
Reverse suffix
for ($ch = $i; $ch >= 'A'; $ch--) echo $ch;
End the row
echo PHP_EOL;
Printing Letters vs Starting a New Line
API
Effect
Use for
echo
Stays on the same line
Each space and each letter
echo PHP_EOL
Ends the current line
After the fixed-width scan
Print cells without a newline, then end the row once.
Try it
Live Preview
Change the top letter and the right-aligned reverse pyramid updates instantly — including width and row count.
Enter one letter A–J. Line width equals top - 'A' + 1; each row is that many columns.
Live resulttop E · width 5 · 5 rows
A
BA
CBA
DCBA
EDCBA
Trace
Worked Walkthrough — $top = 'E'
Trace each peak $i, how many pads print, and the reverse suffix that lands on the right.
$i
Pads
Suffix
Printed row
A
4
A
A
B
3
BA
BA
C
2
CBA
CBA
D
1
DCBA
DCBA
E
0
EDCBA
EDCBA
Every row is width 5. Spaces appear while $j > $i; letters fill from the peak down to A.
Code
PHP Programs
Three complete programs: fixed top E, CLI top-letter input, and an explicit pad-then-suffix form. Use View Output to reveal sample results.
Example 1 — Fixed Top E
Outer $i is the row peak. Inner $j sweeps E down to A and prints a space until it reaches $i.
1. Compute pad and length. Peak $i needs ord($i) - ord('A') + 1 letters and $width - $letters leading spaces.
2. Two clear loops. First pad, then print $i down to A — same visual pyramid as the scan version.
3. When to use which. Keep the scan form for exams that ask one inner loop; use explicit pad when readability matters more.
Edge Cases & Pitfalls
Check these before calling the solution done.
$j from A
Forward letters
Scanning upward prints AB, ABC, … instead of reverse suffixes. Keep $j descending from top.
No spaces
Left-aligned
Skipping the $j > $i space branch left-aligns the reverse suffixes — you lose the right-aligned pyramid.
PHP_EOL early
Broken row
Call echo PHP_EOL only after the scan. Inside the inner loop, each cell lands on its own line.
$top = 'A'
Single A
Output is just A (no pads) — a good sanity check.
Wrong compare
$j >= $i spaces
Using $j >= $i for spaces skips the peak letter. Spaces belong only while $j > $i.
Empty input
Offset crash
Validate length before taking [0]. Prefer a single A–Z character from fgets(STDIN).
Analysis
Time and Space Complexity
Program
Time
Extra space
Scan / explicit pad forms
O(n²)
O(1)
For $n = ord($top) - ord('A') + 1 letters there are $n rows and each row scans $n columns — quadratic in $n.
Remember
Key Takeaways
Fixed width: every row scans top..A so alignment stays consistent.
Space test: print space while $j > $i; otherwise print the reverse letter.
Vs Program 2: reverse suffixes on the right, not reverse prefixes on the left.
Complexity:O(n²) time; O(1) extra space.
One line: for each peak, scan top..A and print spaces until the peak, then the reverse suffix.
Frequently Asked Questions
j walks from E down to A. While j is above the current row peak i, print spaces; once j reaches i and below, print letters. That pushes the visible suffix (like CBA) to the right of a fixed-width line.
Because we print leading spaces for columns where j > i. That pushes the letters to the right and forms a right-aligned pyramid.
Descending j prints letters in reverse order (BA, CBA, DCBA). If j went upward, you would get AB, ABC, ABCD instead.
Update the loop bounds so the outer loop runs up to H and the inner scan starts from H down to A.
echo stays on the same line for each cell. echo PHP_EOL ends the row after the fixed-width scan finishes.
Program 2 prints reverse prefixes left-aligned (E, ED, EDC…). This pattern prints reverse suffixes right-aligned with leading spaces (A, BA, CBA…).
O(n²) for n letters because there are n rows and each row scans n positions.
Use trim(fgets(STDIN)), take the first character after strtoupper, require A–Z, and reject empty tokens. Cap at Z if you only want alphabetic ranges.
🤔
Did you know?
Each line has fixed width (five columns for A…E). Scanning j from E down to A, letters higher than the row peak i turn into spaces, so the visible suffix (CBA, DCBA, …) sits on the right.