text:
Make an alphabet searchlight!
Inspired by a bug in a solution to this challenge, your challenge is to produce this exact text:
                         ZYXWVUTSRQPONMLKJIHGFEDCBA
                        YXWVUTSRQPONMLKJIHGFEDCBA
                       XWVUTSRQPONMLKJIHGFEDCBA
                      WVUTSRQPONMLKJIHGFEDCBA
                     VUTSRQPONMLKJIHGFEDCBA
                    UTSRQPONMLKJIHGFEDCBA
                   TSRQPONMLKJIHGFEDCBA
                  SRQPONMLKJIHGFEDCBA
                 RQPONMLKJIHGFEDCBA
                QPONMLKJIHGFEDCBA
               PONMLKJIHGFEDCBA
              ONMLKJIHGFEDCBA
             NMLKJIHGFEDCBA
            MLKJIHGFEDCBA
           LKJIHGFEDCBA
          KJIHGFEDCBA
         JIHGFEDCBA
        IHGFEDCBA
       HGFEDCBA
      GFEDCBA
     FEDCBA
    EDCBA
   DCBA
  CBA
 BA
A

The first line will have 25 spaces, then the alphabet backwards starting from the 26th letter (ZYXWVUTSRQPONMLKJIHGFEDCBA), then a newline.
The second line will have 24 spaces, then the alphabet backwards starting from the 25th letter (YXWVUTSRQPONMLKJIHGFEDCBA), then a newline.
...
The last (26th) line will have no spaces, then the alphabet backwards starting from the 1st letter (A), then a newline.

Additional rules:

Your program may use any allowed output methods.
One trailing newline and/or one leading newline is allowed.
There must be one newline between lines containing the letters, no more.
The letters must be all uppercase.

As with code-golf, the shortest submission wins. Good luck!
Leaderboard:

var QUESTION_ID=141725,OVERRIDE_USER=61563;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="
"+e.body.replace(OVERRIDE_REG,"")+"
")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i;
body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px}
 <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b">

Leaderboard

	Author	Language	Size

Winners by Language

Language	User	Score

{{PLACE}}	{{NAME}}	{{LANGUAGE}}	{{SIZE}}	Link

{{LANGUAGE}}	{{NAME}}	{{SIZE}}	Link

To me it looks like the light cast by the bat-signal

Closely Related.

Can each line have an extra space in front of it?

@HyperNeutrino no.

Could each line have trailing spaces after the last letter?

@miles yes, that's fine.

Can I add a leaderboard please, or @MDXF if you would like the override could you add it?

05AB1E, 7 bytes
Code:
₂žp.s1Λ

Uses the 05AB1E encoding. Try it online!
Explanation
 žp.s      # Get the suffixes of ZYX...CBA
      Λ    # Using the canvas mode, print the
₂          # first 26 elements of the array
     1     # into the upper-right direction

I need to learn how asciicanvas work :-)

@MDXF IMO, that's a really dumb rule

Hmm... I guess I'll remove the rule, then. [tag:status-completed]

I feel like you should have asked what Miles has now asked since the question does state "produce this exact text".

@scottinet yeah there isn't any documentation yet, except for some answers on challenges :p.

I might propose a PR documenting that feature when I find the time. Seems to be a good way to learn a bit of python from a well-written, easy-to-read code

Why does žp exist when Au is golden? BADUM tissss

@scottinet Yeah, documentation is not the strongest point of 05AB1E. If you could do that, that would be awesome!

Using 05AB1E, create a file documenting all of it's features, shortes code wins :P

@Christian at one point an empty program printed this haha. Edit, it still does xD.

@scottinet Only see this answer now (upvoted btw, nice answer!), but a few months back I created an explanation on how to use the 05AB1E Canvas on the 05AB1E tip page. :)

@KevinCruijssen Yes, I have already upvoted it a while ago :). Thank you for doing that, as well as for the elaborate explanation of the compression techniques!

@MagicOctopusUrn žp is ZYX...CBA wile Au is ABC...XYZ. Although in this case, žp.s could also be Auηí for the same byte-count.

R, 67 55 bytes
for(i in 26:1)cat(rep(" ",i-1),LETTERS[i:1],"
",sep="")

Try it online!

R is beating Python on a string challenge? Nice. +1 for LETTERS

@CriminallyVulgar it's a very weird challenge; Haskell is beating the tie of PHP and R which are both beating Python... at least Perl is ahead of all of them like you might expect.

-2 bytes if you change sep to s.  Functions will autocomplete named arguments if there aren't collisions

@Punintended that won't work because of the ... argument; arguments that come before ... (typically) get partial matched, and those after don't. I believe there are a few exceptions but cat isn't one of them

@Giuseppe I don't see a ...

@MilkyWay90 the ... argument is a special one in R, representing a variadic argument list. cat in particular has the signature cat(...,file="",sep=" ",fill=FALSE,labels=NULL,append=FALSE). Named arguments are typically matched on the shortest unique substring, e.g., the call parse(t= <arg>) is equivalent to parse(text = <arg>). See page 44 of the Introduction to R for a bit more information.

@Giuseppe I see. I don't know how to program in R, so I thought there was an explicit ...

Python 2, 57 bytes
i=26
while i:i-=1;print' '*i+bytearray(range(65+i,64,-1))

Try it online!

V, 13, 11 bytes
¬ZAòY>HGpxl

Try it online!
Hexdump:
00000000: ac5a 41f2 593e 4847 7078 6c              .ZA.Y>HGpxl

Written from my phone :P.
¬ZA         " Insert the alphabet backwards
   ò        " Recursively:
    Y       "   Yank this current line
     >H     "   Add one space to every line
       G    "   Move to the last line in the buffer
        p   "   Paste the line we yanked
         x  "   Delete one character
          l "   Move one character to the right, which will throw an error on
            "   the last time through, breaking the loop

I do these on my phone too, +1

PowerShell, 42 bytes
25..0|%{' '*$_+-join[char[]]((65+$_)..65)}

Try it online!
Explanation:
25..0|%{                                 } # Loop from 25 to 0
                             (65+$_)..65   # Construct a range of the specific ASCII codes
                    [char[]](           )  # Cast that as a character array
               -join                       # that has been joined together into a string
        ' '*$_+                            # Prepended with the correct amount of spaces

Bash + GNU sed, 60
printf %s {Z..A}|sed 'h
s/./ /g
G
s/ \n//
:x
p
s/ \S//
tx
d'

Try it online.

You can save two bytes by changing :x to : and tx to t.

///, 105 97 bytes
/:/\\\\*//#/:Z:Y:X:W:V:U:T:S:R:Q:P:O:N:M:L:K:J:I:H:G:F:E:D:C:B:A//\\*/\/\/_____#
\/ //_/     //*#

Try it online!
Explanation
/// only knows one command, /<pattern>/<substitution>/<text> replaces all occurrences of <pattern> in <text> with <substitution>. Additionally \ can be used to escape characters.
Shortened code for simplicity:
/:/\\\\*//#/:E:D:C:B:A//\\*/\/\/__#
\/ //_/  //*#

The first command /:/\\\\*/ replaces : with \\* in the subsequent code. This gives:
/#/\\*E\\*D\\*C\\*B\\*A//\\*/\/\/__#
\/ //_/  //*#

Then /#/\\*E\\*D\\*C\\*B\\*A/ replaces # with \*E\*D\*C\*B\*A:
/\\*/\/\/__\*E\*D\*C\*B\*A
\/ //_/  //*\*E\*D\*C\*B\*A

Then /\\*/\/\/__\*E\*D\*C\*B\*A<newline>\/ / replaces \* with //__*E*D*C*B*A<newline>/:
/_/  //*//__*E*D*C*B*A
/ E//__*E*D*C*B*A
/ D//__*E*D*C*B*A
/ C//__*E*D*C*B*A
/ B//__*E*D*C*B*A
/ A

Notice: I had to use \* for replacement. Since * is also part of the substitution, it would generate an infinite loop if I only replace *.
Then command /_/  / replaces _ with spaces, and /*// deletes all *:
EDCBA
/ E//    EDCBA
/ D//    EDCBA
/ C//    EDCBA
/ B//    EDCBA
/ A

The next command /#// replaces # by nothing. Since there is no # in the code, it does nothing. This is just here to remove the two leadings // from the beginning of the code. This leaves
EDCBA
/ E//    EDCBA
/ D//    EDCBA
/ C//    EDCBA
/ B//    EDCBA
/

Then the command / E// removes <space>E, so this will leave the code
    EDCBA
   DCBA
/ D//   DCBA
/ C//   DCBA
/ B//   DCBA
/

Similar / D// removes <space>D:
    EDCBA
   DCBA
  CBA
/ C//  CBA
/ B//  CBA
/

/ C//:
    EDCBA
   DCBA
  CBA
 BA
/ B// BA
/

/ B//:
    EDCBA
   DCBA
  CBA
 BA
A
/

And the last command is incomplete, so it does nothing:
    EDCBA
   DCBA
  CBA
 BA
A

Same lengths as the C# and brainfuck answers :D

Haskell, 53 52 bytes
f(a:b)=(b>>" ")++a:b++'\n':f b
f x=x
f['Z','Y'..'A']

Try it online!
How it works
f['Z','Y'..'A']        -- call f with the full backwards alphabet

f(a:b)=                -- let `a` be the first char and `b` the rest. Return
   (b>>" ") ++         -- replace each char in b with a space, followed by
   a:b ++              -- the input string, followed by
   '\n' :              -- a newline, followed by
   f b                 -- a recursive call of `f` with `b`
f x=x                  -- stop on an empty input string

Why doesn't f['Z'..'A'] work?

@ConorO'Brien: [a..b] starts with a and collects all the successors (+1 for integers, next ascii-char for characters, etc.) up to b. If a > b this is an empty list. However, you can specify also the second value (which can be smaller) from which an increment/decrement is calculated.  [1,3..8] -> [1,3,5,7], [15,10..0] -> [15,10,5,0], or ['Z','Y'..'A'] which is the backwards uppercase alphabet.

Ah, I see now. Thanks!

JavaScript (ES6), 83 77 76 bytes

f=(n=0,p='')=>n<26?f(++n,p+' ')+p+`ZYXWVUTSRQPONMLKJIHGFEDCBA
`.slice(~n):''

o.innerText = f()

I had wanted to suggest you an improvement, but then I realized that our approaches are very different. Hope you don't mind.

@ThePirateBay No problem!

Python 2, 66 64
i=26
while i:i-=1;print' '*i+'ZYXWVUTSRQPONMLKJIHGFEDCBA'[25-i:]

Try it online!

Welcome to Programming Puzzles & Code Golf - nice first answer!

Thanks! Figured I'd give it a try instead of just lurking.

You can remove the space between print and ' for 65 bytes.

I ported your answer into Pyth, take a look: https://codegolf.stackexchange.com/a/141939/63757

Jelly, 12 bytes
ØAµ⁶ṁḊ;ṚµƤṚY

Try it online!
ØAµ⁶ṁḊ;ṚµƤṚY  Main Link
ØA            "ABC...XYZ"
         Ƥ    For each prefix,
  µ⁶ṁḊ;Ṛµ     Monadic Link
   ⁶          ' '
    ṁ         (with automatic repetition) molded to the shape of
     Ḋ        All but the first letter of the input (repeat - 1)
      ;       With the input          appended to it
       Ṛ                     reversed
           Y  Join on newlines
          Ṛ   Flip upside down

-3 bytes thanks to miles

13 bytes

@LeakyNun Oh right cool thanks!

Yay, another use for the prefix quick. 12 bytes since mold will reshape here using the length implicitly.

@LeakyNun Actually, unfortunately that would make it invalid because there cannot be extra spaces (it would take 2 bytes to fix)

brainfuck, 105 bytes
++++++++[>+>+++++++++++>++++>+++<<<<-]>++>++>>++[[->+>+<<]>-[-<<.>>]>[-<<<<.->>>+>]<-[-<+<<+>>>]<<<<.>>>]

Try it online!
Minified and formatted:
++++++++[>+>+++
++++++++>++++>+
++<<<<-]>++>++>
>++[[->+>+<<]>-
[-<<.>>]>[-<<<<
.->>>+>]<-[-<+<
<+>>>]<<<<.>>>]

Readable version:
[
  pre-initialize the tape with the values 10 90 32 >26<
  C_NEWLINE: 10
  V_ALPHA: 90
  C_SPACE: 32
  V_COUNTER: 26

AS:

  10 = 8 *  1 + 2
  90 = 8 * 11 + 2
  32 = 8 *  4 + 0
  26 = 8 *  3 + 2
]

8 ++++++++ [
  *  1 >+
  * 11 >+++++++++++
  *  4 >++++
  *  3 >+++
<<<<-]
PLUS 2 >++
PLUS 2 >++
PLUS 0 >
PLUS 2 >++

UNTIL V_COUNTER == 0 [
  COPY V_COUNTER to RIGHT and RIGHT_RIGHT
  [->+>+<<]
  TAPE: 10 V_ALPHA 32 >0< V_COUNTER_R V_COUNTER_RR
  V_COUNTER_R SUB 1 TIMES: >-[-
     PRINT C_SPACE <<.
  >>]
  TAPE: 10 V_ALPHA 32 0 >0< V_COUNTER_RR
  V_COUNTER_RR TIMES: >[-
    PRINT V_ALPHA <<<<.
    DECREMENT V_ALPHA -
    INCREMENT V_COUNTER_R >>>+
  >]
  TAPE: 10 V_ALPHA 32 0 V_COUNTER_R(26) >0<
  V_COUNTER_R SUB 1 TIMES: <-[-
    INCREMENT V_COUNTER <+
    INCREMENT V_ALPHA <<+
  >>>]
  PRINT C_NEWLINE <<<<.
>>>]

Poetic, 601 bytes
one night i camped a bit
throughout all the forest now
the sweet sights
i saw giant things
i saw little small things
here i am
seated around all my trees i saw
i sleep
i sle-e-p
sleep in a cabin
i am sleep-y
i sleep a bit
i awaken in bed
i stand
i walk
i am ready
i saw a vision of a dragon
i am fooled
i know i am
should i f-ight
i f-light
i did f-light
i did a flight
go away,i do imply
i*m afraid
i run
i leave
i flee
i am timid
i*m just a person,not toughie-tough-guy
no,never
i*m waste
i am stupid
a quitter i was
i am stupid
i*m turning around
i do not appreciate camping
i cry
i am crying
no
no

Poetic is an esolang I created in 2018 for a class project, and it is a brainfuck derivative in which the lengths of words correspond to brainfuck commands (and the +, -, >, and < commands each have 1-digit arguments).
The fact that only word-length dictates the commands means that I technically could have created a program entirely composed of non-words (i.e. the letter X as many times as needed, with spaces in between words), but I wanted to make an interesting free-verse poem out of it while not adding any unnecessary bytes.
If you want to try it online (which is half the point of the class project in the first place), check out my online interpreter!

Why is this non-competing?

The language was created after the challenge.

Answers in languages that postdate the challenge no longer need to be marked non-competing

Hm, then I guess that gives me more motivation to use Poetic as a programming language! Heh.

Octave, 53 49 46 45 bytes
1 byte removed thanks to @Sanchises
for k=25:-1:0,disp([blanks(k) 65+k:-1:65])end

Try it online!

05AB1E, 10 bytes
žpDvÐg<ú,¦

Try it online!
Explanations:
žpDvÐg<ú,¦
žp           Push the uppercased alphabet, reversed
  D          Duplicate
   v         For each letter (we just want to loop 26 times, so we use the
                already pushed alphabet for that purpose)
    Ð        Triplicate
     g<      Length of the string - 1
       ú     Add that number of spaces at the beginning of the string
        ,    Print with newline
         ¦   Remove the 1st element of the remaining copy of the string

Perl 6, 37 bytes
Saved 9 bytes thanks to @Massa.
say " "x$_,chrs $_+65...65 for 25...0

Try it online!
Explanation: 25...0 is a range from 25 to 0 (as expected). We iterate over that range, saying (= printing with newline) that many spaces and the string of characters that have ASCII codes (chrs) from 65 + that number ($_+65...65).

25...0  is the shorter way :-)

try say " "x$_,chrs $_+65...65 for 25...0 :-)

Many thanks! I never knew about that! And the sub form is better too (too bad I made this one from the top of my head). (This is why I like to use Perl 6 for codegolf, I always discover something new.)

Vim, 43 keystrokes
:h<_<CR>jjYZZPVgUxjpqqy$-i <Esc>lpl"aDYPD"ap+q25@q

You can see it in action in this GIF made using Lynn's python script

Charcoal, 19 11 bytes
-8 bytes thanks to ASCII-only.
Ｆ²⁶«Ｐ⮌…α⊕ι↗

Try it online! Link is to verbose version.

This maybe? https://tio.run/##S85ILErOT8z5/z8tv0hBw8hcU6GaSwEIfPPLUjWsQguCMtMzSjQhQqU5JZkFRZl5JRpBqWWpRcWpGr75OSkaiToKmZqamly1////1y37r1ucAwA

Wait noooooo there's leading space

Son of a... I need to look through every single command and operator Charcoal has. >_> Thanks!

Fixed https://tio.run/##JcqxCoAgEADQ3a9wvAMdagn6BxehD5C6VBANM5fo26@gN781uLoWl5j3UiVYlz3BoMYJUd5CfsyVWjxqzA0sdaongSlpA6dkRMT/lE4wL4eNPjQUDzPrzvpMLw

11 bytes https://tio.run/##S85ILErOT8z5/z8tv0hBw8hMU6GaSwEIfEtzSjILijLzSjSCUstSi4pTNXzzc1I0EnUUtLU1MjWBAKIuvyxVwyq0ICgzPaNEk6v2////umX/dYtzAA

Um... Is Mold even in the docs?

Yes it is, although it's also called CycleChop, and it's a range overload so I may have forgotten to add it in

We're still losing to 05ab1e so badly though :(

Also smart way is longer https://tio.run/##S85ILErOT8z5/z8otSy1qDhVwzexQMPITEdBW0NLQ11BXUchU1NHAS6Zn5OikQiU1NbI1ASD////65b91y3OAQA

wait better verbose version :P (and worse verbose version)

move :ur Move my what? :P The increment thing is much cleaner though.

@ASCII-only you didn't forget it :p

@EriktheOutgolfer ??? I didn't forget what

@ASCII-only CycleChop...but you forgot Increment (or whatever it's called)

Cubix, 43 46 bytes
$/\;u:\s/':(!$u;:'@^!@Wu;oSU;o+<u(;;oN;(!|

Try it online!
Cubified
      $ / \
      ; u :
      \ s /
'  : ( ! $ u ; : ' @ ^
! @ W u ; o S U ; o + <
u ( ; ; o N ; ( ! | . .
      . . .
      . . .
      . . .

Watch it run
Have managed to shave a few more of this, but it was a bit more difficult than I thought.  There is a substitute character after the first quote to give me 26.

' push 26 onto the stack as the base number
:(! duplicate base as a counter, decrement, test for truthy
u on true skip the $ command and u-turn to the right

So;u push 32, output as character, pop 32 and u-turn right onto the decrement

$ on false jump the next u command
;:'@^ pop, duplicate the base number, push 64 onto stack and redirect into a torturous route
$\s/:\/u;$ this is the order of the steps on the top face.  It boils down to swap the counter with the 64. Ends with a skip over the redirect that put it here.
<+o;U redirect to add, output character, pop, u-turn left
(! decrement, test for truthy. If true starts on a path which hits the u-turn and goes back to the redirect.
|(;No on false, reflect, redundant test, redundant decrement, pop, push 10 and output character
;;(u!@W pop down to the base number, decrement, u-turn right onto truthy test, halt if false otherwise change lane onto the duplicate at the beginning.  Rinse and repeat.

Perl 5 + -p, 37 bytes
}{$\=$"x$-++.($a=$_.$a).$/.$\for A..Z

Explanation
Since -p is being used with no input, the leading }{ is to break out of the implicit while(<STDIN>){ that's added. This builds the string, in reverse, into $\ which is implicitly output after any content that is printed. for each char in A..Z, $\ is set to $- (which starts as 0 and is post-incremented for the next loop) $"s (which is the record separator and is initialised to space) to indent the string, concatenated with $a (which is prepended with $_, the current letter from the for loop), followed by $/ (the line terminator, defaults to "\n") and the existing contents of $\.
Try it online!

Perl 5 + -M5.10.0, 37 bytes
$#@-=say$"x$#@,reverse@@for\(@@=A..Z)

Explanation
This approach outputs the string in order directly. for each char in the reference (\(...)) to @@ (which is set to A..Z), this runs the loop once for each letter, @@'s final index is decremented by the result of outputting (say, includes a final newline) $" (space) 'the final index of @@ times', followed by the reverse of @@. Using the return from say as the decrement means that the output happens before the final index is removed avoiding the need to add another entry to the list. So in the first iteration this outputs 25 spaces and Z to A, then 24 spaces and Y to A ... then 1 space and BA and 0 spaces and A.
I feel like it should be possible to remove some syntax here. I played around with a way to define a list that shrinks but doesn't stop the loop halfway through and the \(...) seems to do just that, whereas [...] is seen as one list entry instead. Also trying to find a non-word character that works with the $#_ notation was trickier than I'd hoped, @; - my usual go-to results in evaluation of $# (which is removed).
Try it online!

Ruby, 54 52 bytes
25.downto 0{|n|puts' '*n+[*?A..?Z][0..n].reverse*''}

Try it online!

Python, 83 bytes
[print(' '*i+''.join([chr(64+i)for i in range(i+1,0,-1)]))for i in range(25,-1,-1)]

My first answer on codegolf :)

A belated welcome to PPCG! nice answer!

sed 4.2.2 + Bash, 50 bytes
s/^/printf %25s;printf %s {Z..A}/e
:
p
s/ \S//
t
d

Try it online!

Bash + sed 4.2.2, 51 bytes
printf %s {Z..A}|sed 'h
s/./ /g
G
:
s/ [^ ]//p
t
d'

Building on @DigitalTrauma's answer.
Try it online!

SOGL V0.12, 10 8 bytes
Z±{Xf}⁰¼

Try it Here!

Just curious, how long is the compressed version?

@cairdcoinheringaahing TL;DR way too long. SOGLs compression sucks at (and is specifically made not for) repetitive stuff. It'd be very hard to tell as the compression isn't automated (automation would make it take 701 choose x attempts for any integer x) but a rough attempt was 450 bytes :P

Perl 5, 49 bytes
$_=$"x26 .join'',reverse A..Z,Z;say while s/ \S//

Try it online!

Looks like you're missing the first A, but seems that can be fixed by changing $"x25 to $"x26!

When I added the extra Z, I forgot to account for that.

JavaScript, 75 74 bytes
1 byte saved thanks to Rick Hitchcock
f=(a=65,b='',c)=>a>90?'':f(a+1,b+' ',c=String.fromCharCode(a)+[c])+`
`+b+c

Try it online!

Save a byte by initializing b (b=''), then taking b out of the square brackets.

@RickHitchcock. Thanks.

Common Lisp, 84 82 bytes
(dotimes(i 26)(format t"~v@{ ~}~a
"(- 25 i)(subseq"ZYXWVUTSRQPONMLKJIHGFEDCBA"i)))

Try it online!
Two bytes less thanks to @Ascii-only!

82

PHP (63 58 55 bytes)
This is possibly my favorite strange corner of PHP, a corner which it inherits from Perl:
for($c=A;$c!=AA;$q="$s$z
$q",$s.=" ")$z=$c++.$z;echo$q;

This outputs the trailing newline, as explicitly permitted. This can be run in php -r to save the opening <?php needed to put this in a file.
Explanation: when a variable containing the string 'A' is incremented in PHP, it becomes 'B' and then 'C' and so on up until 'Z' becomes 'AA'. There is no digit before 'A' to start with in this madcap algebra, and the decrement operator does not undo it, so we save the incrementally reversed alphabet to $z (which defaults to NULL which when it gets concatenated with a string behaves like the empty string -- the same happens with $s and $q). Whitespace is accumulated in $s and the whole string is accumulated backwards in variable $q which means we have to echo it at the end.
Thanks to Titus for golfing off my curly braces and telling me that I don't need to take a penalty for inline-evaluation flags like -r.

That´s 57 bytes, if you use a linux linebreak. -r is free. Two bytes shorter: for($c=A;$c!=AA;$q="$s$z\n$q",$s.=" ")$z=$c++.$z;echo$q;

@Titus thanks, gave you a kudos in the answer.

nm. Just note that -R and -F are not free. See https://codegolf.meta.stackexchange.com/questions/2424/running-php-with-r-instead-of-code-tags/2428#2428

I believe you can save a byte if you use $c<AA.

@IsmaelMiguel Maybe you can; I can't. equality/comparison is going to be by strings, which is a lexical equality/comparison. The first invalid string is AA which is lexically between the valid strings A and B, making any comparator not work nicely.

@CRDrost Just saying "It doesn't seem like it will work because [...]" is enough... No need for your "Maybe you can; I can't." . . .

@IsmaelMiguel sorry, I was too terse. I was thinking when I wrote that, "maybe there is a way to shuffle things around without gaining bytes so that the A case happens first and then we can detect AA vs. B but I do not think that I am smart enough to see it." I didn't mean to be flippant and I will try to watch out for that in the future.

B is greater than AA. !$c[1] would work, but it doesn´t save anything.

Pyke, 8 bytes
G_.<XFo}h-

Try it here!
           -  o = 0
G_         -    reversed(alphabet)
  .<       -   suffixes(^)
    XF     -  for i in ^:
      o    -      o++
       }   -     ^ * 2
        h  -    ^ + 1
         - -   i.lpad(" ", ^)
           - for i in reversed(^):
           -  print i

I can see the right language doing this in 6 bytes if they had a builtin for prepend n spaces to string as well as what Pyke does

Python 3, 71 69 bytes
for i in range(26):print(' '*(25-i)+'ZYXWVUTSRQPONMLKJIHGFEDCBA'[i:])

Try it online!

Welcome to the site! This question does already have multiple Python answers (don't worry, we don't discourage duplicate answers), but still, be sure to check out our tips for golfing in Python page, to see if you can shave anymore bytes off. Also, feel free to browse our active challenges to see if anything catches your eye. Hope you enjoy it here!

@cairdcoinheringaahing Thanks for the warm welcome! Thanks to you I decided to take the time to try and golf my code a bit more. Although it took me almost 2 hours to find the obvious save, I had a lot of fun.

Python 2, 72 67 bytes
i=26
while-~i:print' '*i+''.join(map(chr,range(65,91)))[i::-1];i-=1

Try it online!

This is why I love string literals - 65 bytes :P

Bubblegum, 85 bytes
Hexdump:
0000000: 53c0 05a2 2223 c2c3 4243 8283 0203 fcfd  S..."#..BC......
0000010: 7c7d bcbd 3c3d dcdd 5c5d 9c9d 1cb9 7069  |}..<=..\]....pi
0000020: 2159 0789 ea49 524d 825a a255 12a9 8e28  !Y...IRM.Z.U...(
0000030: 5544 a821 a882 803c 5e59 3c72 3865 7088  UD.!...<^Y<r8ep.
0000040: 6315 c522 8621 82c6 47e1 21b1 e12c 280d  c..".!..G.!..,(.
0000050: 2681 d811 00                             &....

Try it online!

A reason behind the downvote, perhaps?

Maybe because the language is really a glorified text compressor? I haven't downvoted fwiw

Mathematica, 79 73 bytes
Column@(T=Table)[T[" ",26-i]<>ToUpperCase@Alphabet[][[-i;;1;;-1]],{i,26}]

or without Alphabet
Mathematica, 75 66 bytes
Column@Array[Table[" ",26-#]<>Reverse@CharacterRange[65,91-#]&,26]

thanks @JungHwanMin for golfing more both of my answers

CharacterRange should be shorter than FromCharacterCode.

it doesn't have "reverse" in it. If you can make it work without reverse please let me know

Reverse[CharacterRange[65,90]][[#-27;;]] is the same as Reverse@CharacterRange[65,91-#]

Also Reverse[ToUpperCase@Alphabet[][[;;27-i]]] can be reduced to ToUpperCase@Alphabet[][[-i;;1;;-1]] (got rid of Reverse!)

K (oK), 31 27 bytes
Solution:
{`c$(x#32),65+|!x+1}@/:|!26

Try it online!
Explanation:
Iterate over the list of 25..0, each iteration create the reverse alphabet joined with x many spaces:
{`c$(x#32),65+|!x+1}@/:|!26 / solution
                        !26 / til 26 (0..25)
                       |    / reverse (25..0)
                    @/:     / each (25, 24, 23...)
{                  }        / lambda function
                x+1         / increment x (25->26)
               !            / til x (0..26)
              |             / reverse
           65+              / add 65, 0+65 = ASCII "A"
          ,                 / join
    (x#32)                  / x take 32 (e.g 32, x many times)
 `c$                        / cast everything to characters

C++, 146 142 141 140 137 133 bytes
-4 bytes thanks to MD XF
-4 bytes thanks to Zacharý
#include<iostream>
#define F for(i=26-g;i;--i)std::cout<<
void f(){for(int g=1,i;g<27;g+=2){F ' ';--g;F char(64+i);std::cout<<'\n';}}

Why would you int g=26 immediately before g=0?

@MDXF For reasons that went out through the window when golfing, i guess :)

Changing the last two lines to #define F for(i=26-g;i;--i)std::cout<< and void f(){for(int g=1,i;g<27;g+=2){F ' ';--g;F char(64+i);std::cout<<'\n';}} should save you a few bytes.

You don't need a space between F and ' ' (but do need ASCII or compatible encoding).

Tcl, 140 bytes
Still very ungolfed, will do it later!
set n 26;time {set c $n;append s [string repe \  $n];incr n -1;time {append s [format %c [expr 65+[incr c -1]]]} $c; append s \n} 26;puts $s

Try it online!

Tcl, 142 bytes
set n 26;while \$n {set c $n;append s [string repe \  $n];incr n -1;time {append s [format %c [expr 65+[incr c -1]]]} $c; append s \n};puts $s

Try it online!

Hmmm, I already golfed something similar on the "my italic" version of https://codegolf.stackexchange.com/a/110360/29325

The latest one appears to be wrong

100?

-1 byte including set in the format. But I think your code doesn't answer the exact challenge.

a proposition in 92 bytes though I think this possibly could be shortened with a unique string.

92 bytes with a single string per iteration

@ASCII-only: thanks for pointing my error

@david: thanks for pointing my error

AWK, 76 bytes
{for(;++j<27;)printf"%"53-2*j"s\n",substr("ZYXWVUTSRQPONMLKJIHGFEDCBA",++z)}

Try it online!
Tried 3-4 different versions, including double for loop, this is the fewest bytes I could come up with.
Not sure if I should add 1 byte since it does require some input to produce output.

vim, 46 bytes
:set nf=alpha
25a <ESC>aZ<ESC>qaylp<CTRL+X>q24@aqayyphxxq24@a

Ungolfed:
:set nf=alpha    " add letters to the set of number formats used by CTRL+A, CTRL+X
25a <ESC>aZ<ESC> " add the leading spaces and the Z
qaylp<CTRL+X>q   " record macro to copy and decrement the last letter, and
24@a             " run 24 times
qayyphxxq        " record macro to copy/paste the last line, and delete the last space and first letter.
24@a             " run 24 times.

<ESC> and <CTRL+X> are 0x1B and 0x18 respectively.
Try it online!

Ruby, 60 bytes
I couldn't beat @Snack's answer, but here are some solutions that I found interesting:
25.downto 0{|i|$><<" "*i;i.downto 0{|e|$><<(65+e).chr};puts}

Try it online!
I'm also particularly entertained by calculating the spaces this way and was saddened that it wasn't shorter:
z="";(?A..?Z).each{|e| (?A..e).each{|k| z+=k}; z+=" "*(z.size**0.5-1)+?\n};puts z.reverse

At least it's the only answer that uses a square root!

Java (OpenJDK 8), 105 bytes
z->{for(int i=0;i<26;)System.out.printf("%"+(51-i*2)+"s%n","ZYXWVUTSRQPONMLKJIHGFEDCBA".substring(i++));}

Try it online!

SimpleTemplate, 102 bytes
This is just a very straight-forward implementation, nothing fancy.
{@setV 25}{@forfrom"Z"to"A"}{@callstr_repeat intoX" ",V}{@callrange intoZ _,"A"}{@echolX,Z}{@incby-1V}

Try it on http://sandbox.onlinephpfunctions.com/code/a31f7d1b8532385cc135cc1bf64e05d702ebcce4

Ungolded:
{@set spaces 25}
{@for i from "Z" to "A"}
    {@call str_repeat into padding " ", spaces}
    {@call range into letters i, "A"}
    {@echo EOL, padding, letters}
    {@inc by -1 spaces}
{@/}

Should be almost self-explainatory

CJam, 25 bytes
Fixed. Thanks to Martin Ender for the help fixing it!
'[,65>W%_,,_Sf*W%\@f>.+N*

Try it online!
Explanation:
'[,65>W%_,,_Sf*W%\@f>.+N*
'[,65>                     e# From the cjam golfing tips, generate A-Z
      W%                   e# Reverse the array: Z-A
        _,                 e# Take the size of that range (so, 26)
          ,                e# Make a range 0..25
           _               e# Dupe that range
              f*           e# For each value of that range
             S             e# Repeat a space that amount of times
                W%         e# Reverse this list of strings
                  \        e# Swap the top and the second elements of the stack
                   @       e# Brings the first stack el. to the top
                    f>     e# For each value in that range, remove N elements from the alphabet (generate ZYX..., until, CBA, BA, A).
                      .+   e# Vectorized append (appends space with the alphabet chunks)
                        N* e# Join with newline

You can reverse an array with W% (i.e. take every element starting from the end).

Or -1% if W isn't sure to be -1.

@MartinEnder Thanks! Fixed it that way (Now I wish I had a "reverse rang", hehe).

@EriktheOutgolfer shouldn't be an issue here (I also went the "functional" route), but thanks for the precision

J, 21 bytes
({.~1-2*#)\.u:90-i.26

Try it online!
original version
(,~' '#~<:@#)\.|.26$65|.a.

26$65|.a. get A - Z
|. reverse them
\. take successive prefixes from the right side
(,~' '#~<:@#) append to each one (,~) a number of spaces equal to the length of the prefix minus 1 (<:@#)

Try it online!

@FrownyFrog thanks!  I was not aware of the negative trick with {.

Python 3, 69 bytes
for i in range(26):print(" "*(25-i)+"ZYXWVUTSRQPONMLKJIHGFEDCBA"[i:])

Try it online!
This is my first challenge. I hope i've done this right.
Edit: Had a 26 where a 25 should have been.

Welcome to the site :)

Haskell, 52 48 53 bytes
do x<-scanr(:)[]['Z','Y'..'A'];tail$(' '<$x)++x++"\n"

tails requires an import, though you can use scanr(:)[] instead: Try it online!

Visual Basic .NET (Mono), 134 bytes
Module M
Sub Main
Dim S,I,J
For I=0To 25
S=Space(25-I)
For J=0To 25-I
S+=Chr(90-I-J)
Next
Console.WriteLine(S)
Next
End Sub
End Module

Try it online!

So much BASIC!!

@MDXF BASIC is Life!!!!

Python 3, 71 bytes
for x in range(26):print(' '*(25-x),*map(chr,range(90-x,64,-1)),sep='')

Try it online!

Welcome to PPCG! Nice first answer!

Brachylog, 16 bytes
∧Ẓa₁ụ?b{~wṢ}ᵐ&ẉ⊥

Try it online!
Prints with a single trailing newline.

Whitespace, 163 bytes
Try it online!
                                    (s = space, t = tab, l = linefeed)
sssttstsl   push 26                 For x = 26 times

lssl        start: ""
sls         dup (Stack: [26, 26])       For y = x times

lsssl       spaces:
ssstl       push 1
tsst        sub                             decrement space counter
sls         dup
ltstl       jz end_spaces                   if space counter > 0
ssstsssssl  push 32
tlss        outchar                             print space
lslsl       jmp spaces
lsstl       end_spaces:                 next y

sll         drop                        drop y
sls         dup (Stack: [26, 26])

lssssl      letters:
sls         dup                         for y = x to 0
ssstssssssl push "@"
tsss        add (Stack: [26, 26, "Z"])      add y to "@" to get start letter
tlss        outchar                         print that letter
ssstl       push 1
tsst        sub                             decrement y
sls         dup
ltsstl      jz end_letters
lslssl      jmp letters                 next y
lssstl      end_letters:

sll         drop                        drop y
ssstl       push 1
tsst        sub                         decrement x
sls         dup
ltsttl      jz end
ssststsl    push 10
tlss        outchar                     print newline
lsll        jmp start               next x

Vyxal, 9 bytes
kA¦₄ʁ꘍RṘ⁋

Try it Online!
could be -1 byte by replacing the ⁋ at the end with the j flag
-4 bytes from the initial working version thanks to ovs
some golfs were proposed by other people but they broke the answer
-2 bytes thanks to Aaron Miller
kA¦₄ʁ꘍RṘ    Full Program
kA          "ABC...XYZ"
  ¦         "A", "AB", "ABC", ..., "ABC...XYZ"
   ₄        26
    ʁ       0..25
     ꘍      a + " " * b (returns "A", "AB ", "ABC  ", ...)
      R     Reverse each ("A", " BA", "  CBA", ...)
       Ṙ    Reverse the entire list
        ⁋   Join on newlines

9 bytes

@Lyxal i refuse to turn to the dark side of (ab)using flags :P

fine then. 10 bytes flagless

kA should be kZ since the alphabet is supposed to be backwards.

@AaronMiller Oh, I didn't notice Lyxal's golf broke that lol. Also, I didn't realize that was a built-in either. Thanks!

8 bytes

The output is currently different from the one in the challenge. kA¦ṘvṘƛL‹꘍ works for 10, but there might be something shorter

@ovs ah, can't believe I missed that, it's been broken for a long time now. thanks

8 bytes

Python 3, 84 80 73 bytes
for i in range(25,-1,-1):print(' '*i+"ABCDEFGHIJKLMNOPQRSTUVWXYZ"[i::-1])

Try it online!
Saved 7 bytes thanks to @Mr. Xcoder

73 bytes

@Mr.Xcoder I forgot that the literal alphabet was shorter than import string

This prints the top line twice with an extra space. Change 26 to 25 to fix it

@Cowabunghole you saw nothing ;)

I know porting Lynns would be shorter but for i in range(26):print(' '*(25-i)+"ZYXWVUTSRQPONMLKJIHGFEDCBA"[i:]) saves another four bytes.

This approach gets down to 66 bytes:
i=26
while i:i-=1;print(' '*i+"ZYXWVUTSRQPONMLKJIHGFEDCBA"[-i-1:])

@awatts You can replace the [-i-1:] with [~i:] to get it down to 64.

Japt, 17 16 bytes
;26Çn26 î +Bw tZ

Try it online!

Think you can save a byte with the equivalent of ;Bm_YnZl ...

Pyth - 16 15 bytes
V_UG+*dN_<rG1hN

Try it online here.

@Dave No, that is lowercase. Is that allowed?

Pyth, 15 bytes
j_.e+*kd_rb1._G

Try it online!

Explanation

 j_.e+*kd_rb1._G - Full program.

._G - Prefixes of the lowercase alphabet.

.e - Enumerated map, with k as the indexes and b as the values.

*kd - A space repeated a number of times equal to the current index.

_rb1 - And the current element converted to uppercase.

+ - String concatenation.

_ - Reverse.

j - Join by newlines.

similar idea, but V_._Gs+m\ NrN1 is 14 btyes

Japt -R, 15 12 11 bytes
;Båi ËiEçÃÔ

Test it
;Båi ËiEçÃÔ
;B              :Uppercase alphabet
  å             :Cumulatively reduce by
   i            :  Prepending
     Ë          :Map each element a 0-based index E
      i         :  Prepend
       Eç       :  Space repeated E times
         Ã      :End map
          Ô     :Reverse
                :Implicit output joined with newlines

C (gcc), 75 72 bytes
-3 bytes thanks to Steadybox
i=27;main(j){for(;--i;)for(printf("\n%*c",j=i,64+i);--j;putchar(64+j));}

Try it online!

72 bytes

You probably ought to mention that this is for ASCII or compatible environments.

67 bytes: i=27;main(j){for(;j=--i*2;)for(puts("");--j;putchar(j>i?32:64+j));}

PHP, 82 bytes
$l=strlen($s=$argv[1]);while($l)echo strrev(str_pad(substr($s,0,$l),$l+$l--))."
";

Called with ABCDEFGHIJKLMNOPQRSTUVWXYZ as an argument.
Do I get bonus points because it produces the desired effect with any string? :P

I'm not sure a solution requiring specific user input is allowed.

Implicit, 24 23 22 19 bytes
À¦\^(-(1ß-);%\1^ß1ö
À                    « push alphabet                       »;
 ¦                   « swap case                           »;
  \                  « reverse                             »;
   ^                 « push length                         »;
    (                « do                                  »;
     -               «  decrement string length            »;
      (1..)          «  while top of stack truthy          »;
        ß            «   print space                       »;
         -           «   decrement string length           »;
           ;         «  pop string length                  »;
            %        «  print string                       »;
             \1      «  knock first character off string   »;
               ^     «  push length                        »;
                ß1   «  print newline                      »;
                  ö  «  exit without implicit output if top of stack falsy  »;
                     « implicit infinite loop              »;

Try it online!

RProgN 2, 17 bytes
AL«]' '*\A\ùi.‹»;

Explained
AL«]' '*\A\ùi.‹»;
AL                  # Length of the Alphabet, 26.
  «            »;   # For each, numbers 1 through 26 inclusive.
   ]                # Duplicate the index eg.                   (5, 5)
    ' '*            # Repeat ' ' by the index.                  (5, '     ')
        \           # Flip the top of the stack,                ('     ', 5)
         A\         # Push the alphabet under the top.          ('     ', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 5)
           ù        # Get the first n characters.               ('     ', 'ABCDE')
            i       # Reverse the top of the stack.             ('     ', 'EDCBA')
             .      # Concatenate.                              ('     EDCBA')
              ‹     # Rotate left, to remove the extra space.   ('    EDCBA ')

This leaves each result on the stack, and RProgN2 implicitely prints the stack upside down, which conveniently gives us our result.
Try it online!

SpecBAS - 89 bytes
1 s=25,a$="ZYXWVUTSRQPONMLKJIHGFEDCBA"
2  ?" "*s;a$
3 a$=a$(2 TO),s-=1
4 IF s>0 THEN 2
5  ?a$

Bit of string splicing, rinse and repeat

VB, 167 bytes
i = 26

For a = i To 1 Step -1
    For j = a To 1 Step -1
        c = c + "  "
        b = b + Chr(64 + j)
    Next

    d = d & c & b & vbNewLine
    c = ""
    b = ""
Next
msgbox d

first time to participate but i'm not competing to everyone, just myself. lol

Welcome to PPCG! I am not sure about VB, but can you remove the whitespace, like b=b+Chr(64+j)? That would save quite a bit here.

@JarkoDubbeldam VB automatically adds spaces when programming in an IDE. I don't think they're required, though. I've seen confusion before about whether to remove them or ignore them.

@mbomb007 hmm, can you run VB from a file without opening it in an IDE?

@JarkoDubbeldam When I deal with Basic's auto-indentation, I usually open a separate text editor, remove as much whitespace as possible, then paste that into the IDE. If auto-format still works and the code runs as expected, I post the code from the text editor.

This code can be consensed to something like: i=26┘ For a=iTo 1Step -1┘ For j=aTo 1Step -1┘ c=c+"  "┘ b=b+Chr(64+j)┘ Next┘ d=d&c&b&Chr(13)┘ c=""┘ b=c┘ Next┘ msgbox d (used ┘ as line-breaks...) Note the FOR-instructions, Basic usually doesn't need a space beteen a number literal and the following instruction.

Welcome to PPCG :) Following on from the other suggestions, there's plenty that can be golfed out of this. Here's a quick pass I took over it for 103 bytes: for a=26to 1step-1:c="":b="":for j=a to 1step-1:c=c+" ":b=b+chr(64+j):next:d=d&c&b&vbcrlf:next:msgbox d

C# (.NET Core), 87 + 18 bytes
_=>new int[26].Select((x,i)=>"ZYXWVUTSRQPONMLKJIHGFEDCBA".Substring(i).PadLeft(51-2*i))

Also included in byte count:
using System.Linq;

Try it online!
This outputs a collection of strings (for each line).
Explanation:
_ =>                                   // A function that takes one argument (unused)
    new int[26].                       // Create new collection size 26
    Select((x, i) =>                   // Replace every member with
        "ZYXWVUTSRQPONMLKJIHGFEDCBA"   //    Our alphabet
        .Substring(i)                  //    Take it's part based on line number
        .PadLeft(51 - 2 * i)           //    Add spaces to the left
    )

Here's non-kolmogorov version (for any string) - 76 + 18 bytes:
a=>new int[a.Length].Select((x,i)=>a.Substring(i).PadLeft(a.Length*2-1-2*i))

Try it online!

q/kdb+, 32 31 bytes
Solution:
raze@/:(1_')\[(25#" ";(|).Q.A)]

Example:
q)raze@/:(1_')\[(25#" ";(|).Q.A)]
"                         ZYXWVUTSRQPONMLKJIHGFEDCBA"
"                        YXWVUTSRQPONMLKJIHGFEDCBA"
"                       XWVUTSRQPONMLKJIHGFEDCBA"
"                      WVUTSRQPONMLKJIHGFEDCBA"
"                     VUTSRQPONMLKJIHGFEDCBA"
"                    UTSRQPONMLKJIHGFEDCBA"
"                   TSRQPONMLKJIHGFEDCBA"
"                  SRQPONMLKJIHGFEDCBA"
"                 RQPONMLKJIHGFEDCBA"
"                QPONMLKJIHGFEDCBA"
"               PONMLKJIHGFEDCBA"
"              ONMLKJIHGFEDCBA"
"             NMLKJIHGFEDCBA"
"            MLKJIHGFEDCBA"
"           LKJIHGFEDCBA"
"          KJIHGFEDCBA"
"         JIHGFEDCBA"
"        IHGFEDCBA"
"       HGFEDCBA"
"      GFEDCBA"
"     FEDCBA"
"    EDCBA"
"   DCBA"
"  CBA"
" BA"
,"A"
""

Explanation:
Create two lists, 1 with 25 spaces, 1 with the reversed alphabet, then drop the first item from each list and join together. Use converge \ to terminate when the output matches previous output (hence this results in a trailing empty line):
raze each (1_')\[(25#" ";reverse .Q.A)] / ungolfed solution
                 (      ;            )  / two item list
                  25#" "                / 25 take " ", whitespace 25 long
                         reverse .Q.A   / .Q.A is uppercase alphabet A..Z, reverse reverses, so Z..A
          (   )\[                     ] / converge running left function with right arguments
           1_'                          / 1 drop (_) each (') removes first item from each sublist and returns result (2 lists)
raze each                               / raze reduces a list of lists, so we reduce each sublist of 2 lists to a single list

Perl 6, 44 bytes
$_=chrs 32 xx 27,91...65;.say while s/\s\S//

Try it online!

QBIC, 48 bytes
[26|Q=Q+chr$(a+64)][26,1,-1|?space$(b)+_s_fQ|,-b

Explanation
[26|            FOR a = 1; a <= 26; a++
Q=Q+chr$(a+64)  Add to Q$ a chr() being a+64 (A-Z in succession)
]               NEXT (at the end of the loop, Q$ is ABC...XYZ)
[26,1,-1|       FOR b = 26; b >= 1; b--
?space$(b)      PRINT b spaces,
+_s             and a substring of
   _fQ|         Q$ reversed,
   ,-b          taking b characters from the right

DUP, 48 bytes
25 65[^[$][32,1-]#%^^+[^^\-][$,1-]#,10,^][\1-\]#

Online DUP interpreter

Octave, 38 bytes (or 46 bytes in tio)
flip([spdiags(hankel(90:-1:65)) '']')'

Generates the correct output at least on windows installation of Octave, but in tio to be correctly shown the character 0 should be replace by space:
[max(32,flip(spdiags(hankel(90:-1:65))')') '']

Try it online!

Perl 6, 57 bytes
.put for (' 'Xx(25...0))Z~(('Z'...'A') »...»'A')».join

Try it online!
Expanded:
  .put              # print with trailing newline

for                 # for each of the following

  (
      ' '

    Xx              # cross using string repetition operator

      ( 25 ... 0 )  # from 25 down to 0
  )

  Z~                # zip using string concatenation

  (
    ( 'Z' ... 'A' ) # descending sequence of starting values
    »...»           # combine those into sequences each with an end value of 'A'
    'A'
  )».join           # combine each of the sub sequences into strings

brainfuck, 119 bytes
>+++++[<++>>+++++<-]>+>++++[>++++++++<-]>>-[>+<---]>+++++<<<<[-[->+>.<<]>[->>>.->+<<<<]>>>.->[-<+<<<<+>>>>>]<<<<<<<.>>]

Try it online!
Could be golfable by better initializing the tape - there is a modulo solution that would pop 90,32,26 and 10, that would also probably leave the tape a little less fragmented.
Also could combine all three loops unto one, by juggling the index as the difference from the ASCII code 'Z', or something.

Clojure v1.8, 93 bytes
Converted Renzo's answer to Clojure.
(dotimes[i 26](prn(apply str(concat(repeat(- 25 i)" ")(subs"ZYXWVUTSRQPONMLKJIHGFEDCBA"i)))))

Explanation
(dotimes [i 26] ...)                 We will print 26 lines, i is between[0, 26)
(subs"ZYXWVUTSRQPONMLKJIHGFEDCBA"i)  Take the string starting from position 'i'
(repeat(- 25 i)" ")                  Repeat the whitespaces, we start from 25 because the last line doesn't have whitespaces
(prn(apply str(concat(repeat(- 25 i)" ")(subs"ZYXWVUTSRQPONMLKJIHGFEDCBA"i)))) Concatenate the sequence of whitespaces and the string in order to have the desired effect with 'str' next

Try it online!

Java, 206 bytes
public class Main{public static void main(String[]args){int i,j,k,l=90;for(k=26;k>=0;k--){for(i=k-1;i>0;i--){System.out.print(" ");}for(j=l;j>=65;j--){System.out.print((char)j);}l--;System.out.println();}}}

Try it online!

I'm new so not familiar how to add a post, hope to help someone.!! :D

Also, the bytecount must be visible on the header.

its actually shorter to define an interface than class. also, the args array doesn't have to be called args, can be let's say a as well.

You can use public class M to save three bytes. And String[]a to save three more.

Kotlin, 87 71 bytes
Submission
{(0..25).map{(it..25).map{print(" ")
it}.map{print('Z'-it)}
println()}}

Beautified
        {
            // For it from 25 to 0
            (0..25).map {
                // Print that number of spaces
                // Print the alphabet backwards from that letter
                (it..25).map { print(" ")
                it}.map { print('Z' - it) }
                // Newline
                println()
            }
        }

Test
var f:()->Unit =
{(0..25).map{(it..25).map{print(" ")
it}.map{print('Z'-it)}
println()}}
fun main(args: Array<String>) {
    f()
}

Java, 196 134 bytes
Yes, this has no chance of winning overall, but it helps to re-familiarize myself with the language. Any improvements are welcome, but know I have not yet had time to read the Tips or Golfing in Java.
public class A{public static void main(String[]a){for(int i=0;i<26;i++){for(int j=0;j<25-i;j++)System.out.print(" ");for(char c=(char)(90-i);c>=65;c--)System.out.print(c);System.out.println();}}}
Thanks to JollyJoker for suggesting improvements. I won't get a chance to investigate lambdas for this one, but I'll remember it for the future. This is as short as I'll make this one. Eclipse kept complaining when I changed all ints to chars, so I'll look into that some more.
String a(){String r="";for(int i=0;i<26;i++){for(int j=0;j<25-i;j++)r+=" ";for(char c=(char)('Z'-i);c>=65;c--)r+=c;r+="\n";}return r;}

Try it online!
Ungolfed:
public class A {
        public static void main(String[] args) {
            for (int i = 0; i < 26; i++) {
                for (int j = 0; j < 25 - i; j++)
                    System.out.print(" ");
                for (char c = (char)(90 - i); c> = 65; c--)
                    System.out.print(c);
                System.out.println();
            }
        }
    }
String a() {
    String r = "";
    for (int i = 0; i < 26; i++) {
        for (int j = 0; j < 25 - i; j++)
            r += " ";
        for (char c = (char)('Z'-i); c >= 65; c--)
            r += c; r+= "\n";
    }
    return r;
}

You can give the answer as a method returning a String instead of a full program. Use Java 8 lambdas for the method. Combine nested for loops if you can find a way. The char 32 is space and 10 is newline; concatenate chars like ""+=c to build a String.

You can use n-> instead of ()-> even if there's no input. Using it to store a char inside the code might be ok.

Thanks for the tips! I'll edit my answer in a few hours with your improvements.

You can copy / paste some lambda boilerplate from here

Avoid cast by using 'Z' instead of 90 and changing everything from int to char

Have you tried compiling this? Because it doesn't compile... String() a() isn't valid in Java...

Even with copy pasta typos are possible :). Not sure why I added that, but it is fixed now. Thank you.

No problem! I allowed myself to edit your post, with a link towards an online interpreter. This is usually a good practice to show that no code issue happens! Also, your code is now 2 bytes shorter since you removed those (), but you hadn't updated your post with that, so I did it as well.

Python 2, 86 83 bytes
for x in range(25,-1,-1):print(" "*x)+"".join([chr(y+65)for y in range(x+1)][::-1])

Thanks to Stephen for the 3 extra bytes.

3? less bytes by removing extra spaces: for x in range(25,-1,-1):print(" "*x)+"".join([chr(y+65)for y in range(x+1)][::-1])

Javascript, 82 bytes
for(i=26;i;){console.log(" ".repeat(i-1)+"ZYXVUTSRQPONMLKJIHGFEDCBA".slice(-i--))}

Try it online!

Pyth, 14 bytes
-2 from dave and ven thanks guys
V_UG+*dNrG1=PG

Explanation coming when I figure it out wake up.
Pyth, 16 bytes
V26p*-25Nd>_rG1N

Explanation:
V26        26 times, could've written lG, but it's the same
   p*-25Nd Print without newline: 25-index spaces (could've used + instead of p but it's simpler to explain)
   >_rG1N  Implicit print with newline: The last index characters of the reverse uppercase alphabet

Try it online!
While you're here, here's Artemis's first answer ported into Pyth:
Pyth, 21 20 bytes (non-competing)
J26W=tJ+*dJ>_rG1-25J

An explanation for Artemis's answer:
J26        Set J to 26
W          While...
 =tJ       Decrement J (J-=1)
 +*dJ      J spaces plus...
 >_rG1-25J The last 25-index characters of the reverse uppercase alphabet

I should stop writing these on my phone
Try it online!

Similar to this answer, but > doesn't seem like the way to go. How about setting G to tG, as in V_UG+*dNrG1=tG for 14 bytes?

@Dave similar to what answer?

Yours! This being parent lol

@Dave I knew I was doing something wrong

It's too early for this

Twig, 93 bytes
Twig is a template language developed to be used in PHP, which is similar to Smarty, Django or Jinja.
{%for a in "Z".."A"%}{{("%"~(26-loop.index)~"s%s")|format(f,range(a,"A")|join())}}
{%endfor%}

This code relies in the fact that the environment option strict_variables defaults to false. Otherwise, it will break.
Try it on https://twigfiddle.com/9umogr (check the raw result).
If you want to copy-paste the code, make sure that you disable strict_variables, since the website sets that to true.

Recursiva, 50 24 23 22 bytes
{B26"P+*' '-L(}Z~}_(26

Try it online!

Dyalog APL, 34 23 21 bytesSBCS
↑{(1-2×⍵)↑⌽⍵↑⎕A}¨⌽⍳26

Try it online!
Thanks to Adám for the help!
Explanation:
↑{(1-2×⍵)↑⌽⍵↑⎕A}¨⌽⍳26
                  ⍳26 ⍝ 1..26
                 ⌽    ⍝ Reverse, 26..1
 {             }¨     ⍝ For each in this range. Iteration: ⍵
            ↑         ⍝ Take...
           ⍵          ⍝ ...⍵ elements...
             ⎕A       ⍝ ...from the alphabet
          ⌽           ⍝ Reverse
         ↑            ⍝ Pad with spaces...
  (1-2×⍵)             ⍝ ...(1 - 2*current iteration) elements
↑                     ⍝ Format

You have a stray ⌷.

Also, I'd write ↑ instead of ⍪.

Save two bytes: ↑{(1-2×⍵)↑⌽⍵↑⎕A}¨⌽⍳26

That's clever :). Ty.

Bash + coreutils, 64 bytes
printf '%s' {Z..A}|sed 'h;s/./ /g;G;s/ \n//;p;:a;s/ \b.//p;ta;Q'

I like this, but it seems to be missing the newline at the end.

I guess the requirements were a bit unclear.

C, 82 characters
char*a="ZYXWVUTSRQPONMLKJIHGFEDCBA\n",i=54;main(){while(i)printf("%*s",i-=2,a++);}

Works for any character coding, by embedding the full alphabet.  We print subsequent trailing substrings in a field twice as wide as required, to get the leading spaces.
I had hoped to be able to reduce it further with while(printf());, but couldn't arrange for the return value to reach zero at the right point.

Husk, 15 bytes
mṠ+ȯR' ←Lhṫ…"ZA

Try it online!
-5 thanks to Zgarb. Still a newb :p

Retina, 38 bytes

25$* Z
{-2=`
$'
}T`L`_L`.$
;{:G`
 \w

Try it online!
Explanation

25$* Z

Initialise the working string to 25 spaces and a single Z.
{-2=`
$'
}T`L`_L`.$

The usual approach for generating the alphabet: repeatedly duplicate the last letter, then decrement that letter with a transliteration, removing As instead of decrementing them further. That means once we get to A, the second stage will delete the letter which was added by the first stage, so there won't be any net change and the loop stops. That gives us the first line of the output.
;{:G`
 \w

Now we really just repeatedly print the current line and the drop a space followed by a letter. The construction is slightly weird due to how loops and printing works in Retina. We need to print before we drop the letter, which requires a separate stage that otherwise doesn't do anything, and we also need to disable the implicit printing at the end of the program.

VBA, 65 Bytes
Anonymous VBE immediate window function that takes no input and outputs to the VBE immediate window
For i=0To 25:?Spc(25-i);:For j=0To 25-i:?Chr(90-j-i);:Next:?:Next

Naïve Version, 68 Bytes
For i=0To 25:?Spc(25-i)Right("ZYXWVUTSRQPONMLKJIHGFEDCBA",26-i):Next

Acc!!, 113 bytes
26
Count i while i-_ {
	Count b while b-25+i {
		Write 32
	}
	Count t while t-_+i {
		Write 90-t-i
	}
	Write 10
}

Try it online!

uBASIC, 74 bytes
That pesky Chr$ function sure does like to add extra spaces
0ForI=0To25:?Tab(25-I);:ForJ=0To25-I:?Left$(Chr$(90-I-J),1);:NextJ:?:NextI

Try it online!

MY-BASIC, 100 bytes
Anonymous function that takes no input and outputs to the console
For I=0 To 25
For J=I To 25
Print" "
Next
For K=0 To 25-I
Print Left(Chr(90-I-K),1)
Next
Print;
Next

Try it online!

Yabasic, 79 bytes
Another BASIC answer for Ya.
For I=0To 25
For J=I To 25
?" ";
Next
For K=0To 25-I
?Chr$(90-I-K);
Next
?
Next

Try it online!

Canvas, 6 bytes
Ｚ［↔］Ｒ⇵

Try it here!
Explanation (characters have been changed to their ASCII forms to look monospace):
Z       push the uppercase alphabet
 [ ]    map over prefixes
  ↔       reverse horizontally
    R   pad each line with the line number spaces
     ⇵  and reverse the whole thing vertically

PHP, 113 Bytes
Try it online!
Code, recursive function
function f($s=0){echo ($s<26)?str_pad("", $s)
.implode(array_reverse(range(chr(65), chr(65+$s))))."
".f($s+1):"";}

Explanation
function f($s=0){
  echo ($s<26)?           #it stops at the 26 letter
  str_pad("", $s)         #padding whitespace
  .implode(array_reverse(range(chr(65), chr(65+$s))))
                          #implode the range of letters,
                          #yes, range works with characters too
                          #reverse the array because it always starts with A
  ."                      #concatenate a linebreak
   ".f($s+1):"";          #calling for the next letter
}

Go, 127 Bytes
package main;import."strings";func main(){for i:=26;i>0;i--{print("\n",Repeat(" ",i-1));for j:=i;j>0;j--{print(string(j+64))}}}

This prints with a leading newline.
Ungolfed and readable
package main
import . "strings"
func main(){
    for i := 26; i > 0; i-- {
        print("\n", Repeat(" ", i-1))
        for j := i; j > 0; j-- {
            print(string(j + 64))
        }
    }
}

Try it online!

SNOBOL4 (CSNOBOL4), 82 bytes
	U =REVERSE(&UCASE)
O	OUTPUT =DUPL(' ',SIZE(U) - 1) U
	U LEN(1) REM . U	:S(O)
END

Try it online!
Finally got around to a SNOBOL answer for this challenge. Always prints with a trailing newline.

SmileBASIC 3, 67 64 bytes
-3 bytes from @12Me21 using the -I trick
Unfortunately the console is one character too narrow to fit the first line without wrapping the last character. Oh well.
FOR I=-25TO.?" "*-I+RIGHT$(@ZYXWVUTSRQPONMLKJIHGFEDCBA,-I+1)NEXT

There's a neat trick you can do to avoid STEP -1. Make the loop go from -25 to 0, and use -I instead of I.

Stax, 13 9 bytes
á*↔?[O╒v4

Run and debug it at staxlang.xyz!
Unpacked (15 bytes) and explanation
VAr|]mc%Hv)
VAr                Uppercase alphabet, reversed
   |]              List of suffixes
     m             Map rest of program over array, printing each element with a linefeed:
      c              Copy top of stack
       %             Length
        Hv           Double and decrement
          )          Pad string on left with spaces to the specified length

I think that VAr|]mc%Hv|z SHOULD work for 10 bytes (once packed), but what looks to me like a bug kills that solution. I stupidly confused |z with ) there. Thanks @recursive for pointing that out (and saving even another byte)!

Rust, 87 bytes
fn main(){for i in 0..26{println!("{:>1$}",&"ZYXWVUTSRQPONMLKJIHGFEDCBA"[i..],51-2*i)}}

With Spaces and Indentation
fn main() {
    for i in 0..26 {
        println!("{:>1$}", &"ZYXWVUTSRQPONMLKJIHGFEDCBA"[i..], 51-2*i)
    }
}

Try it online

Emojicode, 156 bytes
a                         ZYXWVUTSRQPONMLKJIHGFEDCBAi 0◀i 26a i➖25 ia➕i 25ai➕i 1

Try it online!
Explanation:
      start program
a                         ZYXWVUTSRQPONMLKJIHGFEDCBA      big ol string
i 0            declare loop variable
    ◀i 26       loop 26 times
                  print concatenated string
        a i➖25 i      number of spaces
        a➕i 25a      reverse alphabet minus last letter
        i➕i 1        increment loop variable
                   end loop
                  end program

Swift, 118 bytes
var s="";for i in 0..<26{for _ in 0..<25-i{s+=" "};for j in 0..<26-i{s+="\(UnicodeScalar(90-i-j)!)"};s+="\n"};print(s)

Prettyfied:
var s = ""

for i in 0 ..< 26 {
    for _ in 0 ..< 25 - i {
        s += " "
    }

    for j in 0 ..< 26 - i {
        s += "\(UnicodeScalar(90 - i - j)!)"
    }

    s += "\n"
}

print(s)

Try it online!

T-SQL, 115 bytes
DECLARE @ VARCHAR(51)=SPACE(25)+'ZYXWVUTSRQPONMLKJIHGFEDCBA'a:PRINT @
SET @=STUFF(@,len(@)/2,2,'')IF len(@)>0GOTO a

Shorter to just hard-code the initial string, then I used STUFF() to snip out two characters from the middle each loop.
I can save 3 bytes by using a CHAR(51) instead of a VARCHAR(51), but that prints full-width trailing spaces for all rows, which don't appear to be allowed.

C# (.NET Core), 133 114 bytes
var S="";for(int I=26;I-->0;){var C='@';for(;C++'@';)S+=C--;S+="\n";}System.Console.Write(S);

Try it online!
var S="";                   // Initialize the return string
for(int I=26;I-->0;){       // For all 26 rows (with I as the space count)
    var C='@';              // Initializing C with the char '@' which is one under 'A'
    for(;C++ 'A', 'A' -> 'B')
        S+=" ";             // Add a space to the string
    for(;C>'@';)            // For all characters which are needed from the char countet above up down to 'A'
        S+=C;               // Add the char to the string
    S+="\n";                // Add a new line to the string
}
System.Console.Write(S);    // Output the string

K4, 22 bytes
Solution:
,/'(1_')\0 25_|51$.Q.A

Explanation:
Generate two lists and reduce each until they are empty.
,/'(1_')\0 25_|51$.Q.A / the solution
                  .Q.A / A..Z
               51$     / pad to 51 chars
              |        / reverse it
         0 25_         / cut (_) at indices 0 and 25
   (   )\              / perform this along
    1_'                / drop (_) first from each (') list
,/'                    / flatten (,/) each (')

Bonus:
Another 22 byte solution:
,/'(1_')\(25#$`;|.Q.A)

><>, 51 49 bytes
2d*:&:1(?v:"@"+$1-48*}40.
l2(?vob1.>r~
-20.>~ao&1

Try it online!

Gaia, 14 bytes
26…v§&¦₵Av┅+†ṣ

Try it online!

Ruby, 58 bytes
Not the best answer for Ruby, but still good enough to get second place out of three entries lol. I just wanted to try a regex-based solution.
s=' '*26+[*?A..?[].reverse*''
puts s while s.sub!(/ \S/){}

Try it online!

Pip -l, 18 bytes
R R*AZ@,\,26.sX,26

Run it here! Alternately, here's the equivalent 19-byte solution in an older version of Pip: Try it online!
Explanation
               ,26  Range(26)
             sX      String-multiply each element by space: list of 0 to 25 spaces
        \,26        Inclusive-range(1,26)
       ,             Range(each element)
      @              Use each range as an index into...
    AZ               Uppercase alphabet
            .       Concatenate those two lists itemwise
  R*                Reverse each string in the resulting list
R                   Reverse the list itself
                    Autoprint the list, one string per line (-l flag)

Another 18-byte answer using map:
RAZ@,1+_.sX_M R,26

Try it online! (19-byte equivalent)

Lua, 82 bytes
s=' 'for i=90,65,-1 do o=s:rep(i-65)for j=i,65,-1 do o=o..s.char(j)end print(o)end

Try it online!
Human readable code:
s=' '
for i=90,65,-1 do
  o=s:rep(i-65)
  for j=i,65,-1 do
    o=o..s.char(j)
  end
  print(o)
end

BRASCA, 23 bytes
e[{:[Eo{]x:}[{:D+o]lox]

Try it online!

Zsh, 41 bytes
eval 1={A..Z}'$1;<<<${(l:#1-65:)}$1;'|tac

Try it online!
Explanation:

1={A..Z}'$1;<<<${(l:#1-65:)}$1;': construct the string 1=A$1;<<<${(l:#1-65:)}$1; 1=B...1; 1=C...1; ... 1=Z...1; (with every letter from A to Z in place of the {A..Z} in each case)
evaluate that string as zsh code:

1=A$1: prepend A (or which ever letter is in that repetition) to the variable $1
${(l:#1-65:)}: generate #1-65 spaces:

#1: Take the ASCII character code of the first character of $1
subtract 65. The first iteration will have A as the first character of $1, the character code of which is 65, and since 65-65=0, no spaces will be printed. Then for further letters, another space will be added each time.

$1: and append the variable $1
<<<: and print that with a newline

|tac and reverse the output line-wise

Zsh, 36 bytes
eval 2={A..Z}'$2;<<<$1$2;1+=\ ;'|tac

Try it online!

Elixir, 84 bytes
import Enum
map 25..0,&(IO.puts List.duplicate(' ',&1)++reverse(slice ?A..?Z,0..&1))

Try it online!
Still want to find a way around that List.duplicate call....

Forth (gforth), 54 bytes
: f for i spaces i for i 65 + emit next cr next ;
25 f

Try it online!
How it works
: f ( n -- ) \ Print n+1 lines of searchlight.
  for        \ loop from n to 0 inclusive [i]
    i spaces   \ print i spaces
    i for      \ loop from i to 0 inclusive [j];
               \ in Forth, the innermost loop count is always i
      i 65 + emit \ print a char whose charcode is j + 65
    next       \ end inner loop
    cr         \ print a newline
  next ;     \ end outer loop
25 f       \ push 25 and call f

Just started fiddling with Forth. Unlike the golfing tip says, it looks like n for .. next loop is the shortest for simple decreasing loops and n1 n0 do .. loop for increasing loops. The recursive call word recurse or recursive is way too verbose, and it still costs at least an if .. then.

05AB1E, 16 bytes
₂F₂N-D<ð×?Aus£R,

Try it online!
₂F                # for N in [0, 1, 2, ..., 25]:
  ₂N-D<ð×?        # print 25 - N spaces with no trailing newline
          Aus£R,  # print the first 26 - N letters of the uppercase alphabet, reversed
                  # (implicit) exit for loop

Pyth, 21 bytes
=_r1GV26
+*\ -25NG=tG

Try it online!
Basically, it sets G to ZYXWVUTSRQPONMLKJIHGFEDCBA, and next prints space repeated some amount of times and G, then removes the first letter of G.

Rockstar, 101 bytes
X's26
while X
O's""
let Y be X
while Y
cast Y+64 into L
let O be+L
let Y be-1

let X be-1
say " "*X+O

Try it here (Code will need to be pasted in)

Excel, 66 bytes
=LET(r,26-ROW(1:26),x,CONCAT(CHAR(65+r)),REPT(" ",r)&RIGHT(x,r+1))

Link to Spreadsheet

Splinter, 253 bytes
Z{\A\
}H{\C\BZ}A{\M\L\K\JG{\I\HD}D{\G\F\E\DH}D}E{\V\U\TB{\S\R\Q\PF{\O\NA}F}B}S{\ }T{SS}U{TT}V{UU}W{VV}WVS\Z\Y\X\WEWV\Y\X\WESTUW\X\WETUW\WESUWEUW\U\TBSTW\TBTWBSW\R\Q\PFW\Q\PFSTUV\PFTUVFSUV\NAUVASTV\L\K\JGTV\K\JGSV\JGVGSTU\HDTUDSU\F\E\DHU\E\DHST\DHTHS\BZZ

Try it online!
Link is to a Python interpreter.

Vyxal, 704 24 bytes
Try it online!
₄ʀƛ:ʁṘƛ65+C;ṅ$ð*$+;Ṙ

Behind door number 3, we have this answer - again just prints out the string (Edit 1: never mind, it doesn't)

23 bytes

outgolfed

rip - might as well put the 23 byter

@Ausername the 23 byter prints everything in reverse.

Try it Online! For 20

Pyramid Scheme, 1431 bytes
    ^         ^
   / \       / \
  /set\     /do \
 ^-----^   ^-----^
/a\   / \ /a\   /[\
---  /26 \---  ^---^
     -----    ^-   -^
             ^-     -^
            /]\      -^
           ^---^      -^
          ^-   -^      -^
         ^-     -^      -^
        ^-       -^      -^
       /[\       / \     /[\
      ^---^     /set\   ^---^
     ^-   -^   ^-----^  -^  -^
    ^-     -^ /c\   /a\ / \  -^
   / \     / \---   ---/set\  -^
  /set\   /do \       ^-----^  -^
 ^-----^ ^-----^     /a\   /-\  -^
/b\   /a\-^   /[\    ---  ^---^  -^
---   ---/b\ ^---^       /a\ /1\  -^
         ---/ \  -^      --- ---  /[\
           /set\  -^             ^---^
          ^-----^  -^           ^-  / \
         /b\   /+\ /?\         / \ /out\
         ---  ^---^---^       /do \-----^
             / \ /b\ / \     ^-----^    -^
            /-1 \---/out\   /c\   /[\   / \
            -----  ^-----   ---  ^---^ /chr\
                  / \           ^-  / \-----^
                 /chr\         ^-  /out\   / \
                ^-----        / \  -----^ /10 \
               / \           /set\     / \-----
              /32 \         ^-----^   /chr\
              -----        /c\   /-\  -----^
                           ---  ^---^     /+\
                               /c\ /1\   ^---^
                               --- ---  /c\ / \
                                        ---/65 \
                                           -----

Try it online!
Yes, I wrote this all by hand. It's kinda therapeutic...

C89, 96 bytes
i,j;main(){for(;i<26;)++j>25?puts("ZYXWVUTSRQPONMLKJIHGFEDCBA"+i),j=++i:putchar(' ');return 0;}

Try it online!
int i, j;

int main()
{
    while(i<26){
        extern int puts();
        extern int putchar();

        if (++j > 25) {
            puts("ZYXWVUTSRQPONMLKJIHGFEDCBA" + i);
            j = ++i;
        }
        else {
            putchar(' ');
        }
    }
    return 0;
}

Uiua, 25 bytes
;⍥(-1&p⊂↯∶@ -1,⇌+@A⇡.).26

Try it online!
Explanation:
                       .26   # Put 26 onto the stack twice
 ⍥(                   )     # Repeat 26 times
                     .       # Copy the counter value
                    ⇡        # Make an array of natural numbers less than counter
                 +@A         # Add "A" to each element, getting ["A", "B",...]
                ⇌            # Reverse
             -1,             # Copy counter and subtract 1
         ↯∶@                 # Make an array of space chars
        ⊂                    # Join spaces with the letters
      &p                     # Print the result
    -1                       # Subtract 1 from the original counter
;                            # Pop the counter from the stack

Vyxal 3 j, 7 bytes
kZ€ƛd«Ḣ

Try it Online!
kZ€ƛd«Ḣ
kZ€      # suffixes of uppercase reversed alphabet
   ƛd«Ḣ  # prepend spaces to make each double their length then remove the first space

Created with the help of Luminespire.


text:
Let's converge to 9!
Given an integer n > 2, print or return the smallest non-negative integer k such that a(n, k) = 9, where a(n, k) is defined by:

a(n, 0) = n
a(n, k+1) =

a(n, k) / 2 + 1 if a(n, k) is even
the sum of the digits of a(n, k)² (in base 10) if a(n, k) is odd

Examples
For n = 5, the expected output is k = 4:
a(5, 0) = 5
a(5, 1) = 7  (5² = 25 and 2 + 5 = 7)
a(5, 2) = 13 (7² = 49 and 4 + 9 = 13)
a(5, 3) = 16 (13² = 169 and 1 + 6 + 9 = 16)
a(5, 4) = 9  (16 / 2 + 1)

For n = 40, the expected output is k = 2:
a(40, 0) = 40
a(40, 1) = 21 (40 / 2 + 1)
a(40, 2) = 9  (21² = 441 and 4 + 4 + 1 = 9)

Clarifications and rules

The input is guaranteed to be greater than 2.
Your program should theoretically work for any value of n. (In practice, it may be limited by the maximum integer size supported by your language.)
k may be either 0-indexed or 1-indexed. Please state it in your answer.
This is code-golf, so the shortest answer in bytes wins!

First values
Below are the first values from n = 3 to n = 422, with k 0-indexed. (For 1-indexing, just add 1 to these values.)
 1  2  4  3  3  5  0  4  3  4  2  6  1  1  6  5  5  4  1  5  2  3  3  7  6  2  3  2  2  7
 6  6  5  6  6  5  1  2  2  6  6  3  1  4  3  4  4  8  1  7  6  3  5  4  6  3  2  3  3  8
 7  7  3  7  4  6  6  7  5  7  6  6  6  2  4  3  3  3  6  7  3  7  2  4  7  2  6  5  6  4
 7  5  2  5  6  9  6  2  3  8  2  7  1  4  6  6  6  5  1  7  4  4  3  3  7  4  3  4  2  9
 6  8  6  8  6  4  6  8  2  5  3  7  6  7  3  8  2  6  7  8  6  7  5  7  6  7  4  3  3  5
 6  4  3  4  4  4  6  7  6  8  3  4  6  8  7  3  6  5  6  8  3  3  2  7  6  6  5  7  6  5
 7  8  2  6  3  3  6  6  6  7  4 10  6  7  3  3  6  4  1  9  2  3  3  8  7  2  6  5  2  7
 7  7  6  7  3  6  7  2  4  8  3  5  6  5  6  4  2  4  6  8  3  5  6  4  7  5  2  3  6 10
 7  7  3  9  2  7  1  9  5  7  6  5  6  7  4  9  6  3  6  6  3  4  2  8  7  7  6  8  6  4
 7  9  4  3  3  7  7  8  3  9  4  7  6  8  3  6  6  8  7  7  7  8  6  5  7  4  6  4  2  6
 7  7  6  5  3  4  7  5  4  5  3  5  7  7  6  8  2  7  1  9  6  4  6  5  7  7  2  9  6  8
 7  4  3  7  4  6  6  7  6  9  3  4  6  4  2  3  3  8  1  7  6  7  2  6  7  8  3  7  5  6
 7  8  2  9  3  3  6  7  6  4  4  4  6  7  6  7  6  7  6  8  7  5  6 11  7  7  3  8  4  4
 7  4  6  7  3  5  6  2  2 10  6  3  6  4  3  4  4  9  7  8  3  3  6  7  7  6  4  3  6  8

Obligatory nitpick on the title: 9! ≠ 9

Cool sequence. Did you discover this yourself?

@RobertFraser I did, but I'm sure similar sequences exist somewhere (I couldn't find one, but I didn't spend much time searching.)

After Collatz conjecture, Arnauld's Conjecture! What's next?

@sergiol According to http://lmgtfy.com/?q=conjecture a conjecture is an opinion or conclusion formed on the basis of incomplete information.

Wrong link:http://www.google.de/search?q=define+conjecture&

@sergiol This one is a bit easier to prove (hint: a step will reduce any number >= 100).

@ØrjanJohansen Actually, the highest odd integer whose square has a sum of digits greater than or equal to itself is 17 (17² = 289, 2 + 8 + 9 = 19). Any a(n, k) with n >17 will eventually fall into the range [3, 17], and all values in this range lead to 9.

@Arnauld I know, I was just saying 100 because that's easy to show with a single digit-counting argument, then you can use any check you want for the smaller ones.

Husk, 13 bytes
€9¡?o→½ȯΣd□¦2

This is 1-indexed. Try it online!
Explanation
Nothing too fancy here.
€9¡?o→½ȯΣd□¦2  Implicit input, say n = 5
  ¡            Iterate the following function:
   ?       ¦2   If divisible by 2,
    o→½         then halve and increment,
       ȯΣd□     else square, take digits and get their sum.
               This gives an infinite sequence: [5,7,13,16,9,9,9,9,9..
€9             1-based index of 9; print implicitly.

I think it would be nice if Lω solved this.

Perl 6, 41 bytes (40 chars)
{+($_,{$_%2??[+] $_².comb!!$_/2+1}...9)}

Try it online!
This uses 1-indexing of k's, so it gives 1 higher answers than the examples in OP. If this is not what the 1-indexing means, I'll have to add 1 byte more.
Explanation: It's an anonymous function. We just use the Perl 6's facility for generating lists using recursion :—). It looks like this: (first element),(block that takes the previous element and gives the next)...(end condition). In this case, the first element is $_ (argument of the main function) and the end condition is 9 (fulfilled when we generate a 9). In the middle block, we use $_ to refer to its argument ( = the previous element of the sequence). The ?? !! is the old ternary operator (better known as ? :). Finally, we take the length of this list by forcing numerical context by +(...).
The last weird thing here is the sum of digits. Numbers are Cool (behave both like strings and numbers), so we use a string method .comb on $_² (give list of characters = digits), then adding the characters up (that converts them back to numbers).

Yes, this is what 1-indexing means.

Python 2, 129 126 76 68 67 64 54 53 bytes
-3 bytes thanks to Jonathan Frech. -8 bytes thanks to Maltysen. -7 bytes thanks to Jonathan Allan. -1 byte thanks to Mr. Xcoder.
f=lambda n:n-9and-~f(n%2*sum(map(int,`n*n`))or 1+n/2)

Try it online!
From somebody who probably doesn't know enough math, this seems completely arbitrary. :P

You may be able to replace )%2and sum with )%2*sum, saving three bytes.

is there a reason for python 3? otherwise u can use ` for str repr

You can get rid of k entirely and save another seven bytes

...and another three by using multiplication.

I will confess, I completely lost track of how this works a few minutes ago. >_<

Bitwise tricks for -1 byte

Jelly, 17 bytes
²DSµH‘$Ḃ?ßµ-n9$?‘

Try it online!
Straight-forward approach. Uses 0-based indexing.
Explanation
²DSµH‘$Ḃ?ßµ-n9$?‘  Input: n
               ?   If
            n9$      n != 9
          µ        Then
        ?            If
       Ḃ               n % 2 == 1
   µ                 Then
²                      Square
 D                     Decimal digits
  S                    Sum
      $              Else
    H                  Halve
     ‘                 Increment
         ß           Call recursively
                   Else
           -         The constant -1
                ‘  Increment

@Arnauld Thanks, the conditional was a do-while n != 9 instead of a while n!= 9

Mathematica, 58 bytes
1-indexed
If[#!=9,#0@If[OddQ@#,Total@IntegerDigits[#^2],#/2+1]+1,0]&

Try it online! (in order to work on Mathics, Tr is replaced with Total)

here is -1 byte version by @JungHwanMin (but it doesn't work on mathics so I kept both)
Mathematica, 57 bytes
If[#!=9,#0@If[2∣#,#/2+1,Total@IntegerDigits[#^2]]+1,0]&

-1 byte: Use 2∣# instead of OddQ@# and swap the two expressions of If.

JavaScript (ES6), 59 50 bytes
0-indexed.
f=n=>n-9&&f(n%2?eval([...""+n*n].join`+`):n/2+1)+1

Try it

o.innerText=(
f=n=>n-9&&f(n%2?eval([...""+n*n].join`+`):n/2+1)+1
)(i.value=5);oninput=_=>o.innerText=f(+i.value)
<input id=i min=3 type=number><pre id=o>

Explanation
The first thing we do is calculate n-9. If n==9 then that, obviously, gives 0 and things stop there. If n!=9 then n-9 will give a non-zero value which, being truthy, means we can continue on through the logical AND. We call the function again, passing a new n to it, calculated as follows:
n%2?

If n modulo 2 is truthy - i.e., n is odd.
[...""+n*n]

Multiply n by itself, convert it to a string and destructure that string to an array of individual characters (digits).
 .join`+`

Rejoin the characters to a string using +, giving us a mathematical expression.
eval(                   )

Evaluate that expression, giving us the sum of the digits of n*n.
:n/2+1

If n%2 is falsey (i.e., n is even) then we simply divide n by 2 and add 1.
To the result of calling the function again, we then add 1. So, using an initial input of 5, the process goes as follows:
f(5)
= -4&&f(7)+1
= -2&&(f(13)+1)+1
=  4&&((f(16)+1)+1)+1
=  7&&(((f(9)+1)+1)+1)+1
=     (((0+1)+1)+1)+1
= 4

Jelly,  16  15 bytes
-1 byte thanks to miles (use of ternary if)
²DSµH‘µḂ?_9$Ð¿L

A monadic link taking and returning numbers.
1-indexed
Try it online! or see a test-suite (coerces results to be 0-indexed and formats like OP code-block)
How?
²DSµH‘µḂ?_9$Ð¿L - Link: number, n
            Ð¿  - collect results in a list while:
           $    -   last two links as a monad:
         _9     -     subtract nine
        ?       -   if:
       Ḃ        -     bit - current loop input modulo by 2 (1 if odd, 0 if even)
   µ            -   ...then:
²               -     square the current loop input
 D              -     cast to a list of its decimal digits
  S             -     sum
      µ         -   ...else:
    H           -     halve current loop input
     ‘          -     increment
              L - length (get the number of results collected
                -         - this includes the 9, so is 1-indexed w.r.t. k)

I believe you can save a byte combining the if-statement I used with your while loop. ²DSµH‘$Ḃ?n9$Ð¿L

Haskell, 62 59 bytes
f 9=0
f a=1+f(cycle[div a 2+1,sum[read[d]|d<-show$a^2]]!!a)

Try it online!
Edit: -3 bytes thanks to @Ørjan Johansen.

last$x:[y|odd a] can be shortened to cycle[x,y]!!a.

Perl 5, 56 + 1 (-n) = 57 bytes
$|++,$_=$_%2?eval$_**2=~s/./+$&/gr:1+$_/2while$_-9;say$|

Try it online!

This gives no output for 9.

Nothing is the same as 0, right?  :)  Code changed.

05AB1E, 16 bytes
[Ð9Q#Èi2÷>ënSO]N

Try it online!
Explanation
[                  # start a loop
 Ð                 # triplicate current number
  9Q#              # if it equals 9, break
     Èi            # if even
       2÷>         # divide by 2 and increment
          ë        # else
           n       # square
            SO     # sum digits
              ]    # end loop
               N   # push the iteration counter N

Japt, 22 21 bytes
0-indexed.
NcUÆ=v ?U/2Ä:U²ìxÃ b9

Try it

Explanation
Implicit input of integer U.
UÆ             Ã

Generate an array of integers from 0 to U-1 and pass each through a function.
=

Set the value of U.
v ?

If U is divisible by 2.
U/2Ä

U divided by 2, plus 1 (Ä).
:U²ìx

Else: U to the power of 2 (²), split to an array of digits (ì) and reduced by addition (x).
Nc

Append the resulting array to the array of inputs.
b9

Find the index of the first occurrence of 9 in the array. Implicitly output the result.

Dang. I had a feeling using a function method would be a lot better, but I only got it down to 23 bytes: @¥9}a@=u ?U²ìx :U/2Ä;°T If only there were a method that returned the number of iterations until a value stopped changing...

@ETHproductions: That outputs 1 for 9 instead of 0, but here's a 22 byte version (which still fails for 9).

I did come up with a 20 byte version last night but it had the same issue.

VB.NET (.NET 4.5.2), 107 + 20 (imports) = 117 bytes
Requires Imports System.Linq
Function A(n)
While n<>9
n=If(n Mod 2=0,n/2+1,CStr(n^2).Sum(Function(c)Val(c)))
A+=1
End While
End Function

Function which takes n as an integer input and returns a 0-based k.
Ungolfed:
Function A(n) ' input/output types are Object, but we will be casting to integer
    'A = 0 ' VB will create an implicit variable with the same name as the function

    ' loop until a(n, k) = 9
    ' using n as the variable to store a(n, k)
    While n <> 9

        n = If(n Mod 2 = 0, ' equivalent to c# ternary ?: operator

            n / 2 + 1, ' even case

            CStr(n ^ 2).Sum(Function(c) Val(c)))
            ' odd case
            ' cast number to string
            ' then convert each char to the number it represents
            ' and do a linq sum

        A += 1 ' Object + Integer will coerce to an integer
    End While

    ' Where's the return?
    ' That implicit variable with the matching name will get returned if there's no explicit return
End Function

Golfscript, 34 bytes
Try it online!
I really need a better way than I have to add up the digits of a number.
~{9-}{.2%{.*`{+48-}*48-}{2/)}if}/,

Pyth,  23  22 bytes
For now, this is a recursive function but I'll try to switch to .W (functional while) to save bytes instead.
L&-b9hy|*%b2sj^b2Th/b2

Try it here! (with additional code to call the function - use y<your_number> - without spaces)

Clojure v1.8, 124 113 112 bytes
0-indexed
(fn[n](loop[a n k 0](if(= a 9)k(recur(if(even? a)(+(/ a 2)1)(apply +(map #(-(int %)48)(str(* a a)))))(inc k)))))

Try it online!
Explanation
(loop[a n k 0](if(= a 9)...))  Loop until a=9
(if(even? a)(+(/ a 2)1)...)    If even, a(n, k) / 2 + 1 if a(n, k)
(if(even? a)...(apply +(map #(-(int %)48)(str(* a a)))))  If odd, calculate the sum of digits of a(n, k)²
#(-(int %)48)                  Convert character to number

Java 8, 110 98 bytes
n->{int k=0,s;for(;n!=9;k++){s=0;for(int c:(n*n+"").getBytes())s+=c-48;n=n%2<1?n/2+1:s;}return k;}

0-indexed
Explanation:
Try it here.
 n->             // Method with integer as both input and return-type
   int k=0,      //  Result-integer `k` starting at 0
       s;        //  Sum-integer
   for(;n!=9;    //  Loop (1) as long as `n` is not 9
        k++){    //    And increase `k` by 1 after every iteration
     s=0;        //   Reset sum `s` to 0
     for(int c:(n*n+"").getBytes())
                 //   Do `n*n` and inner loop (2) over the digits as characters
       s+=c-48;  //    And increase the sum `s` with these digits
                 //   End of inner loop (2) (implicit / single-line body)
     n=n%2<1?    //   If `n` is even:
        n/2+1    //    Change `n` to `n/2+1`
       :         //   Else:
        s;       //    Change `n` to sum `s`
  }              //  End of loop (1)
  return k;      //  Return the result `k`
}                // End of separated method (2)

Pyth, 18 bytes
tl.u?%N2sj*NNTh/N2

Try it online: Demonstration
Explanation:
tl.u?%N2sj*NNTh/N2
  .u                 apply the following function to the input,
                     until it runs into a fixed point
    ?%N2                if value % 2 == 1:
          *NN               value * value
         j   T              convert to digits
        s                   sum
                        else:
               /N2          value / 2
              h              + 1
 l                   get the length of all visited values
t                     - 1

source: Stack Exchange

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/3.0/

sort: votes


text:
A Complementary Quine
Write a quine that outputs the complement of the source code from the smallest containing power of two. Here's an example:
IN : source
OUT: \r\x11\x0b\x0e\x1d\x1b

The largest code point in the string "source" is the letter u, which is 117. The smallest containing power of 2 would be 128, so all the code points are taken as complements from 128.

s: 128 - 115 = 13. Code point 13 is a carriage return.
o: 128 - 111 = 17. Code point 17 is "device control 1"
u: 128 - 117 = 11. Code point 11 is a vertical tab.

And et cetera. Here's another example:
IN : R¡Ṡ
OUT: ᾮὟƠ

The largest code point is the character Ṡ, which is 7776. The smallest containing power of 2 is 2^13 (8192), so each character is complemented from 8192.
All of the standard loopholes apply. A program must consist of some explicit data or code. A variable containing some data by default would be considered implicit data, and therefore not allowed.
If your language inevitably outputs a trailing newline, it can be disregarded.

I think it's clear now, removed comment clutter.

If there is a 256 code point, would the next largest power of two be 256 or 512?

If the language automatically ends any output with a newline, can that newline be disregarded for the purposes of the challenge?

@Dennis: 256. The complement would be a null byte.

@LuisMendo: If it's unavoidable, it can be disregarded.

@ZachGates That's intuitive in decimal mathematics, but in binary it's less so. For example, it's true that 2^8 is 256, but an 8 bit number is only capable of representing values from 0 to 255. It's your challenge of course, but it seems to implicitly care about binary representations.

Retina, 2 1 byte
P

Outputs
0

Explained
P actually has no special meaning in retina, but retina treats it like a regex against the input, and counts the matches. As there's no input, there's no matches, so it returns 0, which is the exact inverse of this.
Try it online!
This is using an older version of Retina, which outputs a newline with the zero. This is not the case in the latest version.

In the latest commit, you can drop the õ, because Retina no longer prints trailing linefeeds by default.

Can't you use Pv (or P) to the same effect?

Also a solution for Jelly.

Neim, 1 byte

Try it online!
Uses Neim's code-page, where  is byte 0xd0 (208) and the printed result, 0, is byte 0x30 (48) which is as required (256-208).
 is an instruction to get the nth element of a list. Both n and the list are implicit since they are missing and neim outputs implicitly too.

Missing stack elements default to 0. Therefore, this is getting the 0th element of the list [0] (which is 0 implicitly converted to a digit list), which is 0.

I hate Neim, because I can't see most of the characters while on my phone.

RProgN 2, 17 18 bytes
«` .S{c$256\-o}r.

Output
U àÒ\x85\x9DÜÎËÊ¤Ó\x91\x83\x8EÒà

Where \x numbers are to be considered literal.
Explained
«` .S{c$256\-o}r.
«                   # Push a function based on the remainder of the program and run it.
 ` .                # Append a space to the end, which stringifies it. As the stringification removes unnecessary spaces, this re-adds the leading one, making it a valid quine.
    S               # Convert it to a stack of characters.
     {        }r    # Replace each character based on a function.
      c             # Get the character code
       $256         # Push 256 literally.
           \-       # Flip them and subtract, giving 255 - char code, which is equivalent to the bitwise not of the char code.
             o      # Get the character this represents.
                .   # Reduce with Concatenation, turning it back into a string. Implicitely output.

Try it online!

Oh so RProgN uses cheaty js style source reading assumes

@ASCII-only Kind of. « has no idea what the original source code looks like, but it does know the array of 'concepts' that the source code was parsed into. When stringifying it, it just concatenates the stringifications of those concepts, which is why noops like spaces are ignored.

C, 178 bytes
char*u,*s="char*u,*s=%c%s%c;main(){char t[256];sprintf(t,s,34,s,34);for(u=t;*u;++u)*u=128-*u;puts(t);}";main(){char t[256];sprintf(t,s,34,s,34);for(u=t;*u;++u)*u=128-*u;puts(t);}

Try it online!

JavaScript, 121 bytes
f=a=>[...a='f='+f].map(a=>(m=(a=a.charCodeAt())>m?a:m,a),m=0).map(a=>String.fromCharCode(2**-~(Math.log2(m)|0)-a)).join``

Try it online!

Python 2, 93 bytes
s='s=%r;print"".join(chr(128-ord(i))for i in s%%s)';print"".join(chr(128-ord(i))for i in s%s)

Try it online!

all_licenses: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/3.0/