Communities

Writing
Writing
Codidact Meta
Codidact Meta
The Great Outdoors
The Great Outdoors
Photography & Video
Photography & Video
Scientific Speculation
Scientific Speculation
Cooking
Cooking
Electrical Engineering
Electrical Engineering
Judaism
Judaism
Languages & Linguistics
Languages & Linguistics
Software Development
Software Development
Mathematics
Mathematics
Christianity
Christianity
Code Golf
Code Golf
Music
Music
Physics
Physics
Linux Systems
Linux Systems
Power Users
Power Users
Tabletop RPGs
Tabletop RPGs
Community Proposals
Community Proposals
tag:snake search within a tag
answers:0 unanswered questions
user:xxxx search by author id
score:0.5 posts with 0.5+ score
"snake oil" exact phrase
votes:4 posts with 4+ votes
created:<1w created < 1 week ago
post_type:xxxx type of post
Search help
Notifications
Mark all as read See all your notifications »
Challenges

Create an Alphabet Diamond

+10
−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!
History
Why does this post require attention from curators or moderators?
You might want to add some details to your flag.
Why should this post be closed?

0 comment threads

11 answers

+6
−0

Brain-Flak, 250 bytes

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

Try it online!

Readable, commented version:

# 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
    ((()()()()()){})
    <>

    ([])
}<>
History
Why does this post require attention from curators or moderators?
You might want to add some details to your flag.

0 comment threads

+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
          +⌜          # Addition table
            ˜         #  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.

History
Why does this post require attention from curators or moderators?
You might want to add some details to your flag.

0 comment threads

+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
History
Why does this post require attention from curators or moderators?
You might want to add some details to your flag.

0 comment threads

+4
−0

Canvas, 10 7 6 bytes

Z[]/┼┼

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
History
Why does this post require attention from curators or moderators?
You might want to add some details to your flag.

1 comment thread

General comments (6 comments)
+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

History
Why does this post require attention from curators or moderators?
You might want to add some details to your flag.

1 comment thread

General comments (3 comments)
+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!

History
Why does this post require attention from curators or moderators?
You might want to add some details to your flag.

0 comment threads

+4
−0

Stax, 12 bytes

ç ∩<▬%▌ê▓jFo

Run and debug it

Same method as the Canvas answer.

History
Why does this post require attention from curators or moderators?
You might want to add some details to your flag.

0 comment threads

+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
History
Why does this post require attention from curators or moderators?
You might want to add some details to your flag.

0 comment threads

+3
−0

Vyxal C, 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
History
Why does this post require attention from curators or moderators?
You might want to add some details to your flag.

0 comment threads

+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!

History
Why does this post require attention from curators or moderators?
You might want to add some details to your flag.

0 comment threads

+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
History
Why does this post require attention from curators or moderators?
You might want to add some details to your flag.

0 comment threads

Sign up to answer this question »