Challenges

# Create an Alphabet Diamond

+9
−0

## Challenge

Output the following text:

                         A
ABA
ABCBA
ABCDCBA
ABCDEDCBA
ABCDEFEDCBA
ABCDEFGFEDCBA
ABCDEFGHGFEDCBA
ABCDEFGHIHGFEDCBA
ABCDEFGHIJIHGFEDCBA
ABCDEFGHIJKJIHGFEDCBA
ABCDEFGHIJKLKJIHGFEDCBA
ABCDEFGHIJKLMLKJIHGFEDCBA
ABCDEFGHIJKLMNMLKJIHGFEDCBA
ABCDEFGHIJKLMNONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXYXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXYZYXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXYXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNONMLKJIHGFEDCBA
ABCDEFGHIJKLMNMLKJIHGFEDCBA
ABCDEFGHIJKLMLKJIHGFEDCBA
ABCDEFGHIJKLKJIHGFEDCBA
ABCDEFGHIJKJIHGFEDCBA
ABCDEFGHIJIHGFEDCBA
ABCDEFGHIHGFEDCBA
ABCDEFGHGFEDCBA
ABCDEFGFEDCBA
ABCDEFEDCBA
ABCDEDCBA
ABCDCBA
ABCBA
ABA
A


## Notes

• You can have any amount of leading and trailing whitespace on all directions, as long as all non-whitespace characters are properly aligned to make the diamond shape.
• A multiline string, character matrix, list of strings, list of lists of characters, and equivalent are acceptable outputs.
• Shortest answer per language, scored in bytes, wins!
Why does this post require moderator attention?
Why should this post be closed?

+6
−0

# Brain-Flak, 250 bytes

((((()()()){}){}){}()){(({})[()])}{}(<>)<>{({}<>)<>}<>{(({})[()])}([]){{}([(({}))](((()()()){}){}){}()){({}[()])<>((((()()()()){}){}){})<>}{}<>(((((()()()()){}){}){}){}())<>{({}[()])<>(({})())<>}{}{({}[()])<>(({})[()])<>}{}<>((()()()()()){})<>([])}<>


Try it online!

# Push 25
((((()()()){}){}){}())

# Push range(25, 1)
{
(({})[()])
}
{}

# Push a 0 on to the alternate stack and return to main stack
(<>)<>

# Reverse values onto other stack
{
({}<>)
<>
}
<>

# Push range(25, 0)
{
(({})[()])
}

# Push the stack height.
([])

# At this point, the stack has 0, 1, 2... 23, 24, 25, 24, 23... 2, 1, 0
# Go through each number of these numbers, and call it N
{
# Pop the stack height counter
{}

# Push (25 - N), and underneath it push N an additional time
([(({}))](((()()()){}){}){}())

# That many times...
{
# Decrement
({}[()])

<>

# Push a space onto the ascii-art stack
((((()()()()){}){}){})

<>
}
{}

# on the ascii-art stack, push the letter A
<>
(((((()()()()){}){}){}){}())
<>

# N times...
{
# Decrement N
({}[()])

# Push "The last character + 1"
<>
(({})())
<>
}
{}

# N times...
{
# Decrement N
({}[()])

# Push "The last character - 1"
<>
(({})[()])
<>
}
{}

<>
# Push a newline
((()()()()()){})
<>

([])
}<>
Why does this post require moderator attention?

+5
−0

# BQN, 19 bytesSBCS

' '+32⊸<⊸×+⌜˜⌽⊸⌊↕59


Run online!

This uses the whitespace allowance, padding by four spaces on all sides to make the arithmetic work better. It can be adjusted by replacing ↕59 with 4+↕51 at the cost of two characters.

BQN has no built-in idea of the alphabet, but it has a nice system for Unicode character arithmetic. This solution depends on the length 26 of the alphabet, and the distance 33 ('A'-' ') from space to the start. Fortunately these are close together. We will build a matrix of numbers that goes from 0, for ' ', at the corners to 33+26-1, or 58, at the center, then bring all numbers below 33 to 0. At the middle of each edge we get 29, leaving 4 spaces before 'A'. Before plays a big role here.

' '+32⊸<⊸×+⌜˜⌽⊸⌊↕59
↕59   # Range            0...58
⌽        # Reverse:         58...0
⊸⌊      #  Before Minimum: 0…29…0
˜         #  with itself
32⊸<              # More than 32
⊸×            #  times the original
' '+                  # Add to space


Another 21-character "exact" solution is (+⌜˜⊏-∘≠↑'A'+⍷)⌽⊸⌊↕51. Now 'A' is used as the basis and spaces come from fill elements in Take (↑), so it will work for any starting character.

Why does this post require moderator attention?

+5
−0

# V (vim), 21 bytes

¬AZ¬YA|òlÄ26|xx>>YGpH


Try it online!

Explanation:

¬AZ                     " Insert every character from A to Z
¬YA                  " Insert every character from Y to A
|                 " Go back to the beginning of this line
ò                " While True...
l               "   Move to the right (if there is only one character
"   on this line, break the loop)
Ä              "   Duplicate this line upwards
26|           "   Go to the 26th character on this line
xx         "   Delete two characters
>>       "   Indent this line with one space
Y      "   Yank this line
G     "   Go to the last line
p    "   Paste the line that was just yanked downwards
H   "   Go back to the first line
" (Implicit) End loop


Hexdump:

00000000: ac41 5aac 5941 7cf2 6cc4 3236 7c78 783e  .AZ.YA|.l.26|xx>
00000010: 3e59 4770 48                             >YGpH
Why does this post require moderator attention?

+4
−0

# Japt-R, 14 13 bytes

;Bãê kb'A û ê


Test it

Takes all substrings of the alphabet, palindromizes them, and then takes only the ones starting with A and centers and mirrors that too.

-1 byte thanks to @Shaggy

Why does this post require moderator attention?

+4
−0

# Stax, 12 bytes

ç ∩<▬%▌ê▓jFo


Run and debug it

Same method as the Canvas answer.

Why does this post require moderator attention?

+4
−0

# Canvas, 10 7 6 bytes

Ｚ［］／┼┼


Try it here!

Creates the top portion, centers it, and mirrors it.

-3 bytes from dzaima's hint.

-1, found the 6 byter!

## Explanation

Z[]/++
Z          push the alphabet
[]        get all prefixes
/       diagonalize  by padding each line with one less than the previous
++     Quad palindromize, without reflecting letters
Why does this post require moderator attention?

+4
−0

# JavaScript (Node.js), 78 bytes

(m=(a,b=26,c=a(--b))=>b?[c,...m(a,b),c]:[c])=>m(a=>m(b=>(c=25-a-b)<0?32:c+65))


Try it online!

Why does this post require moderator attention?

+3
−0

# VyxalC, 8 bytes

kA¦ømƛøm


Try it Online!

Explanation:

kA        # Push the alphabet
¦       # Prefixes
øm     # Palindromize list without duplicating middle
ƛ    # For each:
øm  #   Palindromize without duplicating middle
# 'C' flag - Center and print, separated by newlines

Why does this post require moderator attention?

+3
−0

# Jelly, 13 bytes

ØAUƤz⁶ZUŒBŒḄY


Try it online!

## How it works

ØAUƤz⁶ZUŒBŒḄY - Main link. Takes no arguments
ØA            - Yield the uppercase alphabet
Ƥ          - Over each prefix:
U           -   Reverse it
z⁶        - Zip, padding with spaces
Z       - Transpose
U      - Reverse each
ŒB    - Bounce each
ŒḄ  - Bounce the entire string
Y - Join by newlines
Why does this post require moderator attention?

+2
−0

# Python 3, 99 bytes

r=[*range(26)]
a="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
for i in r+r[-2::-1]:print(" "*(26-i)+a[:i]+a[i::-1])


Try it online!

Why does this post require moderator attention?

+1
−0

# Japt-R, 11 bytes

;Bå+ mê ê û


Test it

;Bå+ mê ê û
;B              :Uppercase alphabet
å+            :Cumulatively reduce by concatenation
m          :Map
ê         :  Palindromise
ê       :Palindromise
û     :Centre pad each with spaces to length of the longest
:Implicit  output joined with newlines
Why does this post require moderator attention?