text:
Is this a Hardy-Ramanujan-Number-ish Harshad Number?
Background
The number 1729 is the Hardy-Ramanujan number. An amazing property of it was discovered by S. Ramanujan (who is widely regarded as the greatest Indian mathematician1), when G.H. Hardy paid a visit to him in a hospital. In Hardy's own words:

I remember once going to see him when he was ill at Putney. I had ridden in taxi cab number 1729 and remarked that the number seemed to me rather a dull one, and that I hoped it was not an unfavorable omen. "No," he replied, "it is a very interesting number; it is the smallest number expressible as the sum of two cubes in two different ways."

Besides that, it has many other amazing properties. One such property is that it's a Harshad Number, i.e the sum of its digits (1+7+2+9=19) is a factor of it. That too, a special one. As Masahiko Fujiwara showed, 1729 is a positive integer which, when its digits are added together, produces a sum which, when multiplied by its reversal, yields the original number:
1+7+2+9 = 19
19 × 91 = 1729
A positive integer having such property is what I define as Hardy-Ramanujan-ish Harshad Number, for the purpose of this post. (There might be a technical term for it, but I couldn't find it, unless it's member of A110921)

The Task
Given a positive integer n as input, output a truthy or falsey value based on whether the input n is a Hardy-Ramanujan-ish Harshad Number. Output truthy, if it is. Otherwise, output falsey.
Note that only four Hardy-Ramanujan-ish Harshad Numbers exist (1,81,1458 and 1729), and you can write code which checks for equivalence with them. But I don't think that will be fun.

Input
Your program should take a positive integer (a natural number, in other words). It may take it in any way except assuming it to be present in a variable. Reading from modal window, input box, command line, file etc. is allowed. Taking input as function argument is allowed as well.

Output
Your program should output a truthy or falsey value. They need not be consistent. Your program may output in any way except writing the output to a variable. Writing to screen, command line, file etc. is allowed. Outputting with function return is allowed as well.

Additional Rules

You must not use a built-in to accomplish the task (I wonder any language will have such built-in, but then Mathematica...)

Standard Loopholes apply.

Test Cases
Input        Output
1            Truthy (because 1 × 1 (reverse of 1) = 1)
2            Falsey
3            Falsey
4            Falsey
5            Falsey
81           Truthy (because 9 (8 + 1) × 9 (reverse of 9) = 81)
1458         Truthy (because 18 (1 + 4 + 5 + 8) × 81 (reverse of 18) = 1458)
1729         Truthy (because 19 (1 + 7 + 2 + 9) × 91 (reverse of 19) = 1729)
1730         Falsey
2017         Falsey

Winning Criterion
This is code-golf, so the shortest code in bytes wins!

1Every year, on 22nd December, the birthday of Srinivasa Ramanujan, National Mathematics Day is observed in India. His colleagues, those in Cambridge, compared him to Jacobi, Euler, and even Newton. Besides being so great, he had almost no formal training in Pure Mathematics, but still, he made important contributions to mathematical analysis, number theory, infinite series, and continued fractions. Unfortunately, he died at an early age of 32 with thousands of mathematical discoveries in his mind. A film was also made on him, which was based on his biography, The Man Who Knew Infinity.

"but you must not write code which checks for equivalence with them." This is a non-observable program requirement.

@MartinEnder But then it will just be does the number equal 1729, 1458, 81 or 1. I don't think that will be any fun.

Why the downvotes?

Proof: the maximum digital sum of a number with n digits is 9n. The reverse of 9n would be at most 90n. So, the product would be at most 810n^2, which must have n digits, so it must be at least 10^(n-1). When n=7, it's pretty much done, so one only has to check until 999999.

I think you should just allow checking for equivalence with them. Those sort of answers would get downvotes anyway, and will probably be longer in some cases.

@Okx Too late now, I guess

@Arjun Not really. That's why you're getting downvotes.

@Okx Done. Thanks for the help. :)

Was this inspired by my Sandbox post?

@NoOneIsHere No, I have been knowing about Ramanujan and 1729 for last 4 years. BTW, I used to be Sting. It was I who pointed out that property of its. ;) Can't remember where, though.

@Arjun Oh, cool! It was on a deleted question of mine.

@NoOneIsHere Can you provide a link?

@Arjun My mistake, it wasn't deleted. https://codegolf.stackexchange.com/q/80761/48922

Neim, 5 bytes
D

Explanation:
Example input: 1729
      Implicitly convert to digit list and um the digits [19]
 D     Duplicate [19, 19]
      everse [19, 91]
      muliply [1729]
      check for quality with input [1]
Implicit output: 1

Try it!

Are the other 4 bytes unprintable? I count 1 byte

@GamrCorps It seems they are not supported by your browser. Here is an image: https://puu.sh/wpETt/9f92af18e0.png

Nice, but 5 bytes in what encoding? :-) Of the 5 characters here,  (U+1D42C MATHEMATICAL BOLD SMALL S),  (U+1D42B MATHEMATICAL BOLD SMALL R),  (U+1D54B MATHEMATICAL DOUBLE-STRUCK CAPITAL T) and  (U+1D53C MATHEMATICAL DOUBLE-STRUCK CAPITAL E) each take up 4 bytes in UTF-8 (also in UTF-16 and in (obviously) UTF-32). So this is actually 17 bytes, though I guess one could define a custom encoding optimized for ASCII + those characters.

@ShreevatsaR Neim seems to use its own code page

@The_Lone_Devil Ah that would explain it, thanks!

@Arjun Done, don't worry about it

ArnoldC, 888 Bytes
IT'S SHOWTIME
HEY CHRISTMAS TREE i
YOU SET US UP 0
GET YOUR ASS TO MARS i
DO IT NOW
I WANT TO ASK YOU A BUNCH OF QUESTIONS AND I WANT TO HAVE THEM ANSWERED IMMEDIATELY
HEY CHRISTMAS TREE a
YOU SET US UP 0
GET TO THE CHOPPER a
HERE IS MY INVITATION 1
YOU ARE NOT YOU YOU ARE ME i
ENOUGH TALK
HEY CHRISTMAS TREE b
YOU SET US UP 0
GET TO THE CHOPPER b
HERE IS MY INVITATION 81
YOU ARE NOT YOU YOU ARE ME i
ENOUGH TALK
HEY CHRISTMAS TREE c
YOU SET US UP 0
GET TO THE CHOPPER c
HERE IS MY INVITATION 1458
YOU ARE NOT YOU YOU ARE ME i
ENOUGH TALK
HEY CHRISTMAS TREE d
YOU SET US UP 0
GET TO THE CHOPPER d
HERE IS MY INVITATION 1729
YOU ARE NOT YOU YOU ARE ME i
ENOUGH TALK
HEY CHRISTMAS TREE res
YOU SET US UP 0
GET TO THE CHOPPER res
HERE IS MY INVITATION a
CONSIDER THAT A DIVORCE b
CONSIDER THAT A DIVORCE c
CONSIDER THAT A DIVORCE d
ENOUGH TALK
TALK TO THE HAND res
YOU HAVE BEEN TERMINATED

I know, I just check for equality, but that shouldn't be the fun part of the program.
Enjoy reading it. :)
Added some newlines there for easier readability:
Try it online

I like you. That's why I'm going to kill you last.

x86 Assembly, 55 35 33 31 bytes:
Assumes an ABI where the return value is in EAX and parameters are pushed on the stack... so almost all of them.
00000000: 8B 44 24 04        mov         eax,dword ptr [esp+4]
00000004: 48                 dec         eax
00000005: 74 16              je          0000001D
00000007: 83 E8 50           sub         eax,50h
0000000A: 74 11              je          0000001D
0000000C: 2D 61 05 00 00     sub         eax,561h
00000011: 74 0A              je          0000001D
00000013: 2D 0F 01 00 00     sub         eax,10Fh
00000018: 74 03              je          0000001D
0000001A: 33 C0              xor         eax,eax
0000001C: C3                 ret
0000001D: 40                 inc         eax
0000001E: C3                 ret

Brachylog, 8 bytes
ẹ+S↔;S×?

Try it online!

Haskell, 56 55 bytes
f n|m<-sum$read.pure<$>show n=n==m*(read.reverse.show)m

Try it online!

Pointfree: (56 bytes)
(==)<*>((*)=<<read.reverse.show).sum.map(read.pure).show

Try it online!

Boring: (24 bytes)
(`elem`[1,81,1458,1729])

Try it online!

JavaScript ES6, 59 57 bytes
x=>(q=eval([...x].join`+`)+'')*[...q].reverse().join``==x

Try it online!
Basically splits into digit array, and joins with + and evals that expression to basically sum the digits. string*string will automatically convert strings into ints. Takes input as a string

JavaScript (ES6), 72 bytes
This is valid ES6 submission. Add f= at the start and invoke like f(arg).
n=>(y=[...`${n}`].reduce((c,p)=>+c+ +p))*[...`${y}`].reverse().join``==n

Test Snippet:

let f =

n=>(y=[...`${n}`].reduce((c,p)=>+c+ +p))*[...`${y}`].reverse().join``==n

console.log(1 + " -> " + f(1))
console.log(81 + " -> " + f(81))
console.log(1458 + " -> " + f(1458))
console.log(1729 + " -> " + f(1729))
console.log((randomNum = Math.floor(Math.random() * 10000) + 1) + " -> " + f(randomNum))

As I learned recently, immediately answering your own challenge is frowned upon.

@Shaggy But valid.

And I usually downvote those who do not care about the community.

@Okx, not according to the people who immediately downvoted and berated me for doing so. We need to be consistent as to whether or not this practice is allowed.

@Shaggy It's valid but frowned upon.

@LeakyNun Why is it frowned upon?

@Shaggy Why so?

@Okx Why is it frowned upon?

I have no idea.

I think it because it gives the challenge poster an unfair time advantage as it's possible they can make up a challenge, solve it and then post it.

Presolving Golf Questions and Self-answering kick-starts answers, or discourages them?

Mathematica, 42 bytes
(s=Tr@IntegerDigits@#)IntegerReverse@s==#&

05AB1E, 5 bytes
SOÂ*Q

Try it online!

Bifurcate, of course. DSODR*Q was what I had before looking.

@carusocomputing Not sure why you'd need the first D.

Ruby, 69 Bytes
First try, with integer as input:
->i{(x=i.to_s.split'').inject(0){|s,a|s+a.to_i}*(x[-1]+x[0]).to_i==i}

Second try, with string as input:
->i{(x=i.split('').map &:to_i).inject(0,&:+)*(x[-1]*10+x[0])==i.to_i}

.split('') can be made .chars

Batch, 164 bytes
@set/an=%1,s=0
:s
@set/as+=n%%10,n/=10
@if %n% gtr 0 goto s
@set/an=s,r=0
:r
@set/ar=r*10+n%%10,n/=10
@if %n% gtr 0 goto r
@set/an=%1-r*s
@if %n%==0 echo 1

Prints 1 on success, no output on failure.

Kotlin, 111 108 bytes
fun main(a:Array<String>)=print(a[0].sumBy{c->"$c".toInt()}.run{"${this*"$this".reversed().toInt()}"}==a[0])

Try it online!
As is typical for statically compiled JVM solutions, a lot of bytes are lost on just the main function declaration and calling print(). The meat of the function is 60ish bytes, which is not bad at all for a general purpose statically typed language like Kotlin.
Kotlin, boring solution, 69 bytes
fun main(a:Array<String>)=print(a[0].toInt()in setOf(1,81,1458,1729))

Try it online!

Python 2, 55 bytes
def f(n):x=sum(map(int,`n`));return x*int(`x`[::-1])==n

Try it online!
Explanation
def f(n):                           # define a function f that takes an argument n
    x = sum(                        # assign to x the sum of...
            map(int, `n`))          # ...the integer conversion of all elements in stringified n
    return x * int(                 # return True if x times the integer conversion of...
                   `x`[::-1])       # ...the stringified x reversed...
                              == n  # ...equals n

An eval() solution is a bit 2 bytes longer...
def f(n):x=eval('+'.join(`n`));return x*int(`x`[::-1])==n

Alternate (invalid?) solution, 42 29 bytes
This solution checks for equality against all of the numbers.
lambda n:n in[1,81,1458,1729]

Try it online!

Alternate alternate solution, same length: [1,81,1458,1729].__contains__

Cheddar, 60 bytes
(n,g=x->x?g(x/10|0)+x%10:0)->n==g(n)*number::("%d"%g(n)).rev

Try it online!

NewStack, 16 bytes
ḟᵢ¹f YΣ©Eᴙx| ∏=f

The breakdown:
Using 1729 as example
ḟᵢ                 Define new function equal to input.               []
  ¹                Add 1 to stack.                                   [1]
   f               Multiply stack by the function.                   [1729]
     Y             Split the stack into digits.                      [1,7,2,9]
      Σ            Sum the stack.                                    [19]
       ©           Duplicate stack.                                  [19,19]
        E  |       Define new value for the first element            [19,19]
         ᴙx        Reverse first element.                            [91,19]
             ∏     Take the product.                                 [1729]
              =f   Remove from stack if not equal to the function.   [1729]

Prints nothing if false, and the original input if true.

Multiply the stack by the function. I didn't get that. Does that mean the input?

Yes and no, after ¹, the stack consists of [1]. And since we defined f or f(x) to equal your input, multiplying every element in the stack by the function f is essentially replacing the 1 with our input. (Because [1] * f(x) = [f])

MATL, 11 bytes
tV!UstVPU*=

Try it online!
t - take input and duplicate it
V!U - split it into individual digits
s - sum those digits
t - duplicate that sum
VP - turn that into a string, flip it left to right
U - turn that back into a number
* - multiply the last two values (the digit-sum and its left-to-right flipped version)
= - check if this is equal to the original input (which is the only other value in stack)

Japt, 8 bytes
¬x
*sÔ¥N

Run it online

Jelly, 8 bytes
DS×ṚḌ$$=

Try it online!

DS×Ṛ$Ḍ= saves a byte.

@Dennis that is... wat witchkraft.

Just distributivity. (1000a + 100b + 10c + d)y = 1000ay + 100by + 10cy + dy

PHP, 52 bytes
<?=strrev($x=array_sum(str_split($argn)))*$x==$argn;

Try it online!
PHP, 36 bytes
<?=in_array($argn,[1,81,1458,1729]);

Try it online!

Perl 6, 30 bytes
{my \n=sum .comb;$_==n*n.flip}

APL (Dyalog), 18 bytes
{(⍵=⍎∘⌽×⍎)⍕+/⍎¨⍕⍵}

Try it online!

Pari/GP, 56 52 bytes
n->n==(s=sumdigits(n))*fromdigits(Vecrev(digits(s)))

Try it online!

MathGolf, 5 bytes
Σ_x*=

Try it online!
Pretty much the same as the Neim solution byte for byte.


text:
Greeting The User
Create a program which when run displays the text below:
)-*-*-*^_^*-*-*-(
| Welcome User! |
)-*-*-*^_^*-*-*-(

Use any functions or language to answer this, have fun. Shortest code wins

Can we alternatively return this from a function, as per usual?

Are leading/trailing newlines allowed?

Japt, 41 39 bytes
Saved 2 bytes thanks to @Shaggy
[U="){"-*-*-*^_"ê}("`| WelÖ  U r! |`U]·

Explanation:
[U="){"-*-*-*^_"ê}("`| WelÖ  U r! |`U]·
[                                    ]    // Create a new array
 U=                                       // Variable U =
   ")                                     //   ")
     {            }                       //   Evaluate everything in curley-brackets as code
      "-*-*-*^_"ê                         //   "-*-*-*^_" mirrored -> -*-*-*^_^*-*-*-
                  ("                      //   ("
                                          * Now we have [U=")-*-*-*^_^*-*-*-("]
                    `| WelÖ  U r! |`      // "| Welcome User! |" decompressed by `...`
                                     U    // ")-*-*-*^_^*-*-*-("
                                          * Now we have [")-*-*-*^_^*-*-*-(","| Welcome User! |",")-*-*-*^_^*-*-*-("]
                                      ·   // Split with new-lines

Try it online!

39 bytes

Python 2, 54 bytes
print(")-*-*-*^_^*-*-*-(\n| Welcome User! |\n"*2)[:53]

Try it online!

WOW, I'll tattoo this approach on my cerebral cortex!!

Impressive, beat me by 1 byte!  Take a +1

T-SQL, 60 bytes
PRINT')-*-*-*^_^*-*-*-(
| Welcome User! |
)-*-*-*^_^*-*-*-('

SQL allows splitting string literals over lines, so those returns are counted.
Working on a procedural solution, but doubt I'll find one under 60.
New Edit: Found a simple REPLACE that ties the trivial solution:
PRINT REPLACE('1
| Welcome User! |
1',1,')-*-*-*^_^*-*-*-(')

Turns out that REPLACE will do an implicit conversion of a numeral to a string, so this lets me save 2 characters by eliminating the quotes around my replacement character.
Trying to put it into a variable is too long, due to the overhead of the DECLARE (69 bytes):
DECLARE @ CHAR(17)=')-*-*-*^_^*-*-*-('PRINT @+'
| Welcome User! |
'+@

Please see this: https://codegolf.meta.stackexchange.com/a/1146/46066

This answer is completely fine @juniorRubyist

Ok. I removed that downvote.

Thanks. Thought you were originally referring to the hard-coding the output limitation, but that's allowed for kolmogorov-complexity. Just not particularly efficient.

Python 2.7, 55 bytes
a="\n)-*-*-*^_^*-*-*-(\n"
print a+'| Welcome User! |'+a

Pretty simple.  Includes leading and trailing newlines.

It does not need to be a function.

C (gcc), 78 75 bytes
main(i){for(;printf(")-*-*-*^_^*-*-*-(")&i--;puts("\n| Welcome User! |"));}

Try it online!

Nice try, pretty low amount of bytes as well!

Lowest I have got it down to is 66 bytes so far

71 bytes with a trailing newline (75 without): #define P puts(")-*-*-*^_^*-*-*-(") f(){P;puts("| Welcome User! |");P;}

@Amurt4l if you would like, since you have gotten quite a few answers, you can post your own answer as well :)

Bubblegum, 43 bytes
00000000: d3d4 d502 c1b8 f838 30ad abc1 55a3 109e  .......80...U...
00000010: 9a93 9c9f 9baa 105a 9c5a a4a8 50c3 a589  .......Z.Z..P...
00000020: ae06 00bd 4d85 9835 0000 00              ....M..5...

Try it online!

This language is feels like such an abuse of the "rules", that I think we should change them just so that @Dennis will have to change the language a little

@StephenS TBH, I agree. However, thankfully languages optimized for [tag:kolmogorov-complexity] (Jelly, 05AB1E, V, SOGL, some others) can still usually beat it without feeling as cheap.

@StephenS If a challenge is best solved with Bubblegum, it’s the challenge’s fault, not the language’s. Instead of rules lawyering, write more interesting challenges.

05AB1E, 31 29 26 bytes
-3 Bytes thanks to Emigna
")-*-*-*^_".∞D”|‡Ý‚Ý! |”s»

Try it online!
Explanation
")-*-*-*^_".∞D”|‡Ý‚Ý! |”s»
")-*-*-*^_"                # Push )-*-*-*^_
           .∞              # Intersected mirror (results in )-*-*-*^_^*-*-*-( )
             D             # Duplicate top of stack
              ”|‡Ý‚Ý! |”   # Pushes | Welcome User! |
                        s  # Swap top items on stack
                         » # Join on newlines

You could do .∞ instead of û¨'(«

I knew this had to exist somehow! Thanks man

Nevermind, what I posted was equivalent lol.

I know it's been a while, but you can save a byte by changing the ")-*-*-*^_" to ')„-*Ð„^_J. :)

Charcoal, 32 30 bytes
_^×*-³(⸿emocleW |‖Ｂ¬Ｊ¹¦¹ User!

Try it online! Link is to verbose version of code. Explanation:
_^              Print("_^");
×*-³            Print(Times("*-", 3));
(⸿emocleW |     Print("(\remocleW |");

Prints the mirror image of the top left portion of the output.
‖Ｂ¬             ReflectButterfly(:¬);

Reflects down and to the left to create the top and bottom lines and the left of the middle line.
Ｊ¹¦¹            JumpTo(1, 1);
 User!          Print(" User!");

Fixes up the middle line.

(Why the downvote?)

Apparently someone's been downvoting many of the answers in this challenge, my submission is also one of the affected ones.

JavaScript, 56 bytes
alert(`${s=")-*-*-*^_^*-*-*-("}
| Welcome User! |
${s}`)

JavaScript (ES6), 50 48 bytes (function)
_=>(s=")-*-*-*^_^*-*-*-(")+`
| Welcome User! |
`+s

-2 bytes thanks to Rick Hitckcock

Why alert? Save a few bytes using a function.

@Shaggy I know that, just edited it in, but currently OP says display, and has not responded to my comment yet

Please see this: https://codegolf.meta.stackexchange.com/a/1146/46066

@juniorRubyist we usually allow either a complete program or a function. OP did not specify that functions that returned the value instead of displaying it were allowed, so my second two entries may not be allowed. However, complete programs are (almost) always allowed, and JavaScript doesn't need boilerplate. Copy my alert into a .js file and run it in your browser, it'll run.

Save 2 bytes with _=>(s=")-*-*-*^_^*-*-*-(")+\n| Welcome User! |\n+s

Is there a reason you can't use the function argument instead of a new variable for storing the top and bottom of the string?

Python 3, 62 bytes
print(")-*-*-*^_^*-*-*-(\n| Welcome User! |\n)-*-*-*^_^*-*-*-(")

Needs to be a function.

Please see this: https://codegolf.meta.stackexchange.com/a/1146/46066

But it's not a snippet. It's a full program.

No, does not need to be a funciton. Read it again: Use any functions or language to answer this.

@juniorRubyist The 1st line of the question says Create a program

@dzaima I'll point out the other python answer and then direct you towards the standard defaults.

@dzaima this is actually a full program..

///, 42 bytes
/#/)-*-*-*^_^*-*-*-(
/#| Welcome User! |
#

Try it online!
Shorter than the Bubblegum solution!

Why the downvote?

Braingolf, 55 bytes
22#)[#-#*]"^_^"[#*#-]#(V"
| Welcome User! |
"R!&@v&@R&@

Try it online!
It's 2 bytes shorter than hardcoding the output.
Explanation
22                         Push 2 2s to the stack
                             These are used for loop counting
  #)                       Push )
    [#-#*]                 Push -* 3 times, using one of the 2s
          "^_^"            Push ^_^
               [#*#-]      Push *- 3 times, using the remaining 2
                     #(    Push (
                       V   Create a new stack
                        "
| Welcome User! |
"                          Push \n| Welcome User! |\n to the new stack
 R!&@                      Return to main stack, print entire stack without popping
     v&@                   Switch to 2nd stack, pop and print stack
        R                  Return to main stack, pop and print stack

><>, 56 54 bytes
/a"| !resU emocleW |>"01pa
 l?!;o
/"(-*-*-*^_^*-*-*-)"

Try it online!
2 bytes saved by AGourd

On your first line, you could change    |"a">"01p    to    |>"01pa    to save a couple characters

@AGourd; Oh I must have missed that, seems simple when you point it out :) - I'll edit it out soon, thanks.

Perl 5, 49 bytes
print$\=")-*-*-*^_^*-*-*-(","
| Welcome User! |
"

Try it online!
Uses the fact that $\ is implicitly printed after each print.

What about say?

@simbabque I tend to follow this consensus. Furthermore, replacing all print with say isn't really where the point of golfing lies in my opinion. But I'm not on any crusade to stop using say though; I let everyone do as they like, and everyone is happy :)

C, 75 bytes
main(){char*S=")-*-*-*^_^*-*-*-(";printf("%s\n| Welcome User! |\n%s",S,S);}

70 bytes like this;
m=")-*-*-*^_^*-*-*-(";main(){printf("%s\n| Welcome User! |\n%s",m,m);}

V, 35 bytes
é)8a-*r(ãhR^_^Äo| Welcome User! |

Try it online!
Hexdump:
00000000: e929 3861 2d2a 1b72 28e3 6852 5e5f 5e1b  .)8a-*.r(.hR^_^.
00000010: c46f 7c20 5765 6c63 6f6d 6520 5573 6572  .o| Welcome User
00000020: 2120 7c                                  ! |

Explanation:
é)                          " Insert a '('
  8a                        " Append 8 copies of the following:
    -*<esc>                 "   '-*'
           r(               " Replace the last character on this line with '('
             ãh             " Move to the middle of this line
               R            " And write the following text over the existing text:
                ^_^<esc>    "   '^_^'
                        Ä   " Duplicate this line
o                           " On a new line:
 | Welcome User! |          "   Write the whole middle line

Pyth, 41 bytes
It's boring, but I just cant find a way to creat )-*-*-*^_^*-*-*-( or | Welcome User! | in less bytes than just copying the strings.
J")-*-*-*^_^*-*-*-("J"| Welcome User! |"J

Explanation:
J")-*-*-*^_^*-*-*-("                      # J = ")-*-*-*^_^*-*-*-("
                    J                     # Print J with new line
                     "| Welcome User! |"  # Print "| Welcome User! |" with new line
                                        J # Print J with new line

try it Online

Why the down vote?

C# (.NET Core), 60 bytes
_=>")-*-*-*^_^*-*-*-(\n| Welcome User! |\n)-*-*-*^_^*-*-*-("

Try it online!

Golang, 82 bytes
func main(){var a string=")-*-*-*^_^*-*-*-(\n";Printf(a+"| Welcome User! |\n"+a)}

Try it online!

Hello, and welcome to PPCG! Your submission can be a function that returns the text as output, as per meta consensus, which might make it shorter and better for this site.

Ah okay, thank you for the heads up. I'll make an edit.

You have to include the fmt import, sorry.

@totallyhuman wait but it's not part of the function.

Vim, 38 Bytes
i)^[8a-*^[r(9hR^_^^[Yo| Welcome User! |^[p

Shoutout to the homies in the comments
Original:
i)-\*^[vhyl2pa^_^\*-^[vhyl2pa(^[Vyo| Welcome User! |^[p

Where ^[ is the ESC key

i)-*-*-*^_^*-*-*-(^] is much shorter for constructing the top line. Also, Y is equivalent to Vy

Actually if you more or less borrow DJ's V answer top line construction you can save 2 bytes on the hardcode input i)^]8a-*^[r(9hR^_^^[

Thanks y'all. I've been using Vim for like a month and I was just trying to see if I could do it. Obviously I have a lot of optimization to go on my workflow

One last tip: If duplicate the line before opening a newline for "Welcome User!", you won't need to hit ^[ at the end. YPo| Welcome User! |

See? didn't even know that P was a thing. That's awesome though. Thanks!

Sed, 51
Two for the price of one:
s/^/)-*-*-*^_^*-*-*-(/p
x
s/^/| Welcome User! |/p
x

Try it online.
s/^/)-*-*-*^_^*-*-*-(\n| Welcome User! |/p
s/\n.*//

Try it online.

MATLAB / Octave, 53 bytes
a=')-*-*-*^_^*-*-*-(';disp([a;'| Welcome User! |';a])

Why MATLAB / Python? This is definitely not valid python.

@DJMcMayhem Sorry I meant Octave. Thanks for noticing the typo. Been answering python questions over on SO all day so brain had a small glitch :)

If you ommit disp Matlab will show leading ans = \n.

@Crowley That's why you need the disp there as it won't conform to the exact output.

If the ans =  is not disallowed you can save 6 bytes.

@Crowley I agree completely with the byte count, but I don't think it's permitted for this challenge.  This is Kolmogorov Complexity so the output must exactly match the challenge.  If the OP has some leeway, it would have been mentioned.

Carrot, 51 bytes
)-*-*-*\^_\^*-*-*-(
^*1//.+/gS"
| Welcome User! |
"

Try it online!
Explanation
)-*-*-*\^_\^*-*-*-(
^                            Give the stack-string this value ")-*-*-*^_^*-*-*-(\n"
 *1                          Append 1 duplicate of the stack-string to itself
                             stack-string: ")-*-*-*^_^*-*-*-(\n)-*-*-*^_^*-*-*-("
//.+/g                       Get matches of /.+/g and set the stack-array to this result
                             stack-array: [")-*-*-*^_^*-*-*-(",")-*-*-*^_^*-*-*-("]
S"
| Welcome User! |
"                            Join the stack-array on "\n| Welcome User! |\n" and
                             set the stack-string to this result

PHP, 50 bytes
<?=$a=")-*-*-*^_^*-*-*-(","
| Welcome User! |
$a";

Try it online!

<?=$a=")-*-*-*^_^*-*-*-(","\n| Welcome User! |\n$a";

Mathematica, 52 bytes
Column@{t=")-*-*-*^_^*-*-*-(","| Welcome User! |",t}

Ruby, 49 bytes
$><<[")-*-*-*^_^*-*-*-("]*2*"
| Welcome User! |
"

Try it online!

Minecraft Functions, 77 bytes
tellraw @a {"text":")-*-*-*^_^*-*-*-(\n| Welcome User! |\n)-*-*-*^_^*-*-*-("}

This isn't even trying to compress the string...

@Okx Well try doing that when the only non-constant things you can print are numbers and block/item names :p

SOGL V0.12, 27 bytes
↑αMΟ±.○h+‘╬1"→ū↑, ¶‘θ⁾@∑32ž

Try it Here!
I have no idea why I still haven't added a capitalize 1st letter of each word function... Here it uses a 4-byte replacement

Batch, 70 bytes
@SET b=@ECHO )-*-*-*^^^^_^^^^*-*-*-(
%b%
@ECHO ^| Welcome User! ^|
%b%

I mostly enjoy this one because all the escape characters make the emoticon ^_^ look like an adorable Lovecraft abomination ^^^^_^^^^

Java 8, 62 bytes
x->"".format("%s| Welcome User! |\n%<s",")-*-*-*^_^*-*-*-(\n")

Try it here.
Or as full program (110 bytes):
interface A{static void main(String[]a){System.out.printf("%s| Welcome User! |\n%<s",")-*-*-*^_^*-*-*-(\n");}}

Try it here.
Surprised there wasn't a Java answer yet.

C, 65 66 bytes
main(){printf("%s| Welcome User! |\n%1$s",")-*-*-*^_^*-*-*-(\n");}

Yes, there are other C solutions, also coming in at about 66 bytes.
Ungolfed
main()
{
    printf("%s| Welcome User! |\n%1$s",
          ")-*-*-*^_^*-*-*-(\n"
          );
}

GCC produces a warning for the missing printf prototype.
The %1$s says use argument 1 (again) for the second string argument.
In real-life programs, it can also be used to pass in precision/width arguments into a printf. This avoids having to use a printf to create the format string for the real printf.

Which compiler successfully compiles and runs this? My gcc (7.1.1) gives an error for the missing semicolon and fails to compile.

csm@localhost:~$ gcc --version
gcc (Debian 4.9.2-10) 4.9.2

Copyright (C) 2014 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

I tried compiling gcc 4.9.2 from source on my machine, but I still got an error rather than a warning for the missing semicolon. Is there any other way to reproduce this?

Argh. You are right, the semicolon is needed. I was accidentally running the previous compilation result.

Braingolf, 48 bytes
")-*-*-*^_^*-*-*-("!&@"
| Welcome User! |
"@19&@

Try it online!
Explanation
")-*-*-*^_^*-*-*-("        push the string ")-*-*-*^_^*-*-*-(" as characters
                   !&@     print all the characters on the stack without popping
                      "
| Welcome User! |          push the string "\n| Welcome User! |\n"
"
 @19                       pop and print 19 characters on the stack
    &@                     print all the characters on the stack

PowerShell, 47 bytes
($z=')-*-*-*^_^*-*-*-(')
"| Welcome User! |
$z"

Try it online!
Ran into the problem everyone else is running into: there's not enough meat to justify trying to encode the top line's pattern. A fancier join method also turned out to cost one more byte

Vyxal J, 174 bitsv1, 21.75 bytes
`)-*-*-*^_`øM:`| ÷… ƛ⁼! |`$

Try it Online!
Most likely golfable.
`)-*-*-*^_`                 # literal string
           øM               # flip brackets (`[]()`=>`][)(`) and palindromise
              `| ÷… ƛ⁼! |`  # the compressed string `| Welcome User! |`
             :            $ # put the first string on the top of the stack to wrap it around ^
                            # J flag joins by newlines

Retina, 42 bytes

A¶| Welcome User! |¶A
A
)-*-*-*^_^*-*-*-(

Try it online!

PHP, 56 52 bytes
<?=$s=")-*-*-*^_^*-*-*-(\n","| Welcome User! |\n$s";

4 bytes saved thanks to manatwork

;echo ──→  ,

@manatwork Thanks. I guess you always learn something new every day.

bash, 52 bytes
f=")-*-*-*^_^*-*-*-("
echo "$f
| Welcome User! |
$f"

TCL, 73 bytes 54 bytes

    set a )-*-*-*^_^*-*-*-(
    set b "| Welcome User! |"
    puts " $a\n $b\n $a"

puts "[set a )-*-*-*^_^*-*-*-(]
| Welcome User! |
$a"

Thanks @sergiol for the suggestion!

Can be golfed down quite a lot: http://rextester.com/GUX27128

Kotlin, 88 bytes
fun main(a:Array<String>){val s=")-*-*-*^_^*-*-*-(";print("$s\n| Welcome User! |\n$s")}"

Stax, 25 bytes
æu√hy╘£.ÅJnc¡┐ßD.P☻Θ╖>╘rÇ

Run and debug it

Wren, 64 bytes
Fn.new{"1| Welcome User! |
1".replace("1",")-*-*-*^_^*-*-*-(
")}

Try it online!
Explanation
Fn.new{                           // New anonymous function
       "1| Welcome User! |
1"                                // Create the string "| Welcome User! |"
  .replace("1",")-*-*-*^_^*-*-*-(
")}                               // Prepend & append the string ")-*-*-*^_^*-*-*-(\n"

C (gcc), 63 bytes
f(){printf("%s| Welcome User! |\n%1$s",")-*-*-*^_^*-*-*-(\n");}

Try it online!
Three bytes shorter than all the previous solutions because new rules allow functions.

C# (Visual C# Interactive Compiler), 57 bytes
Write("{0}\n| Welcome User! |\n{0}",")-*-*-*^_^*-*-*-(");

Try it online!

C++ (gcc), 127 107 bytes
#include <iostream>
int main(){std::string a="\n)-*-*-*^_^*-*-*-(\n";std::cout<<a;std::cout<<"| Welcome User! |";std::cout<<a;}

Try it online!
Lowered to 107 by noodle man
#include <iostream>
int main(){std::string a="\n)-*-*-*^_^*-*-*-(\n";std::cout<<a<<"| Welcome User! |"<<a;}

107 bytes: Try it online!

Building on @noodleman 99 bytes

VBA, 48 Bytes
Anonymous VBE immediate window function that takes no input and outputs a greeting to the user via the immediate window
a=")-*-*-*^_^*-*-*-(":?a:?"| Welcome User! |":?a

I post mine then deleted immediately when I saw yours. :D

><>, 76 61 bytes
!v"(-*-*-*^_"~! |
 >~")"a"| !resU emocleW |v"61pa10.
l?!;o >

PHP, 55 bytes
$a=')-*-*-*^_^*-*-*-(';
echo <<<S
$a
| Welcome User! |
$a
S;

Welcome to PPCG!

Golang, 67 Bytes
func n(){a:=")-*-*-*^_^*-*-*-(\n";Print(a+"| Welcome User! |\n"+a)}

Prints with a trailing newline.
Try it online!

Canvas, 29 bytes
-*３×^_＋)×│| Welcome User! |┌）

Try it here!

JavaScript (Node.js), 58 bytes
(u=')-*-*-*^_^*-*-*-(')=>[u,'| Welcome User! |',u].join`
`

Try it online!
I am sure I can golf if down , but later

Runic Enchantments, 46 bytes
>")-*-*-*^_^*-*-*-(":$ak"| Welcome User! |"ak@

Try it online!
It will appear to process until it times out, due to the two ^ commands which spawn IPs that do nothing (necessitating the explicit entry >). I am disapointed that this is 2 bytes shorter than the multiple IP method. Constructing the first and last lines using multiplication/duplication turns out to be even more expensive as well (50 bytes). :(

PowerShell, 48 bytes
$a=')-*-*-*^_^*-*-*-(';$a;"| Welcome User! |";$a

Try it online!
PowerShell, 54 bytes
$a=')-*-*-*^_^*-*-*-(';write $a;"| Welcome User! |";$a

Try it online!
Old - 68 bytes
Write-Host ")-*-*-*^_^*-*-*-(`n| Welcome User! |`n)-*-*-*^_^*-*-*-("

R, 61 bytes
r=")-*-*-*^_^*-*-*-(\n";cat(r,"| Welcome User! |\n",r,sep="")

Try it online!
Has a trailing newline. I couldn't see if that was approved or not, so I just rolled with it.

source: Stack Exchange

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

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

sort: votes


text:
How much reputation did you lose today?
Assuming StackExchange doesn't decide to restore my account after deleting it due to age restrictions (even though I'm 14 already and almost 15 ಠ_ಠ), a lot of people on this site just lost reputation from my upvotes being deleted. This happened at around 5:30 PM on June 20th, 2017, UTC.
So, your challenge is to show how much PPCG reputation was lost from my deletion, given the user's PPCG ID.
Challenge
Input
A single integer will represent the user's UUID on PPCG.
Output
A single integer will represent how much reputation the user lost due to this. If the user lost reputation multiple times within the same hour all due to user removals, then it is acceptable if your program returns the number for the wrong user. In the event that the user gained reputation from my account being deleted, your program should return a negative number for losing negative reputation. And finally, should I have had no voting on that user (in the past 60 days), your program should return 0.
Test Cases
UUID  -> REP-LOST (Username) # Don't output the username
40695 -> 22 (Downgoat)
12012 -> 148 (Dennis)
8578  -> 61 (Martin Ender)

You can check by going to https://codegolf.stackexchange.com/users/<UUID>/?tab=reputation&sort=post and looking for User was removed (learn more)
Original idea thanks to Uriel with approval
Note
Thanks to JungHwan Min for this link!
https://codegolf.stackexchange.com/ajax/users/<UUID>/rep/day/1497916800
You can fetch raw data of a user's reputation change from this link above.

Comments are not for extended discussion; this conversation has been moved to chat.

SE has age restriction? What was it?

@user202729 An account holder must be at least 13 years old. I created my Stack Overflow account when I was 12 but they deleted it when I was almost 15...

JavaScript ES6, 132 bytes
n=>fetch(`/ajax/users/${n}/rep/day/1497916800`).then(v=>v.text()).then(v=>alert((v.match(/rep-down">-(\d+)[^u]+user w/)||[0,0])[1]))

Tested on Safari 10. This uses the new fetch API and alerts the output. This is a function so pass the user id as the argument. This will output 0 for no rep changes.
Must be run on PPCG due to CORS (Cross-origin resource sharing), browsers do not allow JavaScript to perform a web request outside of the current domain.

FWIW, this is reporting 65 in my case (UUID 58563) although I've lost 75 directly (user was removed) and 20 indirectly (due to the deletion of my answer to Guess the gender). I don't think you need to take these 20 into account but shouldn't it return 75 nonetheless? (That might be a special case, though. The difference comes from the third lost upvote for Guess the gender which was from HyperNeutrino.)

Wait, requiring that code be run on a specific domain is valid?

@Arnauld the questions appears to ask us how much rep was lost due to the specific "user was removed" event. I'm not sure which you're looking at but when I visit your profile I see -65?

@Shaggy it's like code that needs to be run on a certain OS, it's valid but with JS it's more of a requirement due to CORS. See the last paragraph

:) This is gonna save me so many bytes on challenges that require the retrieval of an external file - happy days.

That's indeed what my public profile is showing. It seems like only me can see -65 16:37 removed User was removed (learn more) / -20 16:37 removed Guess the gender / -10 16:37 removed User was removed (learn more). Definitely not an issue, then.

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


text:
Output a Pyramid (or Highway)
Given a non-empty string s, with even length, and a positive integer n, representing its height, compose a pyramid using the following rules:
The pyramid should contain n non-empty lines; trailing newlines are allowed. For each 1 <= i <= n, the i-th line should contain the string with each individual character repeated in-place i times; abcd repeated 3 times as such becomes aaabbbcccddd. Each line should be centered with padding spaces so that the middle of each line is vertically aligned. Trailing spaces at the end of each line are permitted. You can also have up to one leading newline but no other whitespace before the first line.
The input string is not guaranteed to be a palindrome.
Test Case
s = 'o-o  o-o', n = 10:

                                    o-o  o-o
                                oo--oo    oo--oo
                            ooo---ooo      ooo---ooo
                        oooo----oooo        oooo----oooo
                    ooooo-----ooooo          ooooo-----ooooo
                oooooo------oooooo            oooooo------oooooo
            ooooooo-------ooooooo              ooooooo-------ooooooo
        oooooooo--------oooooooo                oooooooo--------oooooooo
    ooooooooo---------ooooooooo                  ooooooooo---------ooooooooo
oooooooooo----------oooooooooo                    oooooooooo----------oooooooooo

Sandbox Post created by user42649, which was my account until it got deleted.

Can the output for a function on this question be a list of strings, each representing a line, or should it be joined by newlines?

Output a pyramid You surely mean a highway!

Looks like an Aztec pyramid!

@QBrute Na. Was made by a Goa'uld :)

May input contain unprintables or printable ascii only?

@Titus For the purposes of this challenge, printable ascii only.

@LuisMendo Better? ;) :P

05AB1E, 9 bytes
γ².D)ƶJ.C

Try it online!

γ was, in no short amount, inspired by Adnan's answer; but S would also work.

γ          # Split into runs.    | ['0','-','0']
 ².D)      # Push n times.       | [['0','-','0'],['0','-','0'],['0','-','0']]
     ƶ     # Lift by index.      | [['0','-','0'],['00','---','00'],['000','---','000']]
      J    # Inner join.         | ['0-0','00--00','000---000']
       .C  # Center.             | Expected output.

I can't believe someone actually downvoted your mistaken post :/

@JonathanAllan the frequency of my avoidable mistakes deserves negativity to some degree.

05AB1E, 11 bytes
F²γN>×J}».C

Uses the 05AB1E encoding. Try it online!

It starts going funky with inputs above 168. otherwise great!

@carusocomputing » joins the inner arrays by spaces. Replacing it by J should work (and I think you should post that as a different answer).

Ah! Has it always been that way? If so, cool, if not I must've missed that. Thanks, will do.

Jelly, 14 13 bytes
LH×Ḷ}Ṛ⁶ẋżxÐ€Y

Try it online!
How it works
LH×Ḷ}Ṛ⁶ẋżxÐ€Y  Main link. Arguments: s (string), n (integer)

L              Get the length l of s.
 H             Halve it, yielding l/2.
   Ḷ}          Unlength right; yield [0, ... n-1].
  ×            Compute [0, l/2, ..., l(n-1)/2].
     Ṛ         Reverse; yield [l(n-1)/2, ..., l/2, 0].
      ⁶ẋ       Space repeat; create string of that many spaces.
         xÐ€   Repeat in-place each; repeat the individual characters of s
               1, ..., n times, yielding an array of n strings.
        ż      Zipwith; pair the k-th string of spaces with the k-th string of
               repeated characters of s.
            Y  Sepatate the resulting pairs by linefeeds.

C# (.NET Core), 139 137 136 130 bytes
using System.Linq;s=>n=>Enumerable.Range(0,n).Select(i=>"".PadLeft((n+~i)*s.Length/2)+string.Concat(s.Select(c=>new string(c,i))))

Try it online!
Returns an enumeration of strings with the lines of the drawing. Once joined the result is like this:
                        ಠ_ಠ  ಠ_ಠ
                    ಠಠ__ಠಠ    ಠಠ__ಠಠ
                ಠಠಠ___ಠಠಠ      ಠಠಠ___ಠಠಠ
            ಠಠಠಠ____ಠಠಠಠ        ಠಠಠಠ____ಠಠಠಠ
        ಠಠಠಠಠ_____ಠಠಠಠಠ          ಠಠಠಠಠ_____ಠಠಠಠಠ
    ಠಠಠಠಠಠ______ಠಠಠಠಠಠ            ಠಠಠಠಠಠ______ಠಠಠಠಠಠ
ಠಠಠಠಠಠಠ_______ಠಠಠಠಠಠಠ              ಠಠಠಠಠಠಠ_______ಠಠಠಠಠಠಠ

2 bytes saved thanks to Kevin Cruijssen!
1 byte saved thanks to Value Ink!
6 bytes saved thanks to LiefdeWen!

You can save two bytes by removing the parenthesis at (n-i-1)*s.Length/2. And I like your test cases. +1 :)

@KevinCruijssen sure I can, thank you!

-1 because why are you doing ಠ_ಠ ಠ_ಠ haha just kidding, +1 :P

ಠ_ಠ intensifies

Obligatory "~i is equivalent to -i-1", so you can save a byte by changing (n-i-1) to (n+~i).

Instead of string.Join use string.Concat for 1 byte.

and you can use currying so s=>n=>... for another byte

@LiefdeWen I've had a hard time figuring out how to setup the Func in order to use currying... ^__^U

@CarlosAlejo Yeah its confusing since its a func that returns a func but its allowed, since I don't share a TIO in my answers I dont even care, I debug with (s,n) and when I post I change it to s=>n=>

@CarlosAlejo Sorry for posting seperate edits but you can also replace new string(' '... with "".PadLeft(...

Cheddar, 71 64 bytes
Saved 7 bytes thanks to @ValueInk
(s,n)->(1|>n=>i->(s.len*(n-i)/2)*" "+s.sub(/./g,"$&"*i)).asLines

Try it online! I will add explanation in a bit
Explanation
(string, count)->(
   1 |> count          // 1..count, the amount of rep/char per line
     => i -> (         // Map over the range
        s.len*(n-i)/2  // Calculate amount of spaces and repeat by it.
     )*" "
     + s.sub(/./g,"$&"*i) // replace each character, duplicate the amount of times `*i`
).asLines              // return the above joined with newlines

No problem! I wonder if Cheddar has a center function that you can use like I have on my Ruby answer, because that could potentially save bytes as well.

Python 2, 75 77 bytes
s,n=input()
for i in range(n):print''.join(c*-~i for c in s).center(len(s)*n)

Try it online!

Dang, I had nearly the same answer, but I was unsure whether a function could return a list of lines. If so, I'll post mine as a separate answer, but if not it would be too similar to post.

Wow, there's a center builtin? I really need to read the docs sometimes :P

Returns the wrong output; this has a leading blank line followed by n-1 rows.

You have also some leading whitespaces before the last line, is that allowed?

@FryAmTheEggman that might be true, but it's still returning 9 lines of pyramid when the input is 10...

Ruby, 58 bytes
->s,n{(1..n).map{|i|s.gsub(/./){$&*i}.center s.size*n}*$/}

Try it online!

Java 11, 188 186 185 183 181 173 171 133 bytes
s->n->{var r="";for(int l=s.length()/2,x=l*n,i=0;i++<n;r+="\n"){r+=" ".repeat(x-i*l);for(var c:s.split(""))r+=c.repeat(i);}return r;}

-2 bytes (185 → 183) due to a bug-fix (it was outputting n+1 lines instead of n). Doesn't happen often that a bug-fix saves bytes. :)
-2 bytes (183 → 181) thanks to @OlivierGrégoire
-2 bytes (173 → 171) thanks to @ceilingcat
Try it online.
Explanation:
s->n->{                    // Method with String & integer parameters and String return
  var r="";                //  Return-String, starting empty
  for(int l=s.length()/2,  //  Halve the length of the input-String
          x=l*n,           //  Set `x` to halve the length multiplied by the input
          i=0;i++<n;       //  Loop `i` in the range (0,n):
      r+="\n"){            //    And after every iteration, add a new-line
    r+=" ".repeat(x-i*l);  //   Add the appropriate amount of trailing spaces
    for(var c:s.split("")) //   Inner loop over the characters of the String:
      r+=c.repeat(i);}     //    Repeat each character `i` amount of times
  return r;}               //  Return the result-String

If you move your ints first, you can declare r="",q=s.format("%"+x+"s",r) to save 2 bytes. Lots of move for just two bytes :(

@OlivierGrégoire Thanks! By using s.format("%"+x+"s",r) directly I've been able to save 8 more bytes after your golf. :)

@ceilingcat Thanks. Been able to golf a bunch more converting it to Java 11 (yay String#repeat ^_^ ).

Javascript, 105 bytes
(s,n)=>Array(N=n).fill().reduce(a=>a+'\n'+' '.repeat(--n*s.length/2)+s.replace(/./g,_=>_.repeat(N-n)),'')

After a few years off, the Stretch Maniac is back, hopefully slightly more educated this time.

You have too many leading spaces on each line.

Here's a 99 byte ES8 version of this method I came up with before I saw yours: s=>n=>[...Array(x=n)].reduce(a=>a+'\n'.padEnd(--x*s.length/2+1)+s.replace(/./g,c=>c.repeat(n-x)),'') -  you'll need to replace the 's with backticks and the \n with a literal newline.

JavaScript (ES6), 85 bytes
Takes input in currying syntax (string)(height). Includes a leading newline.
s=>g=(n,p=`
`)=>n?g(n-1,p+' '.repeat(s.length/2))+p+s.replace(/./g,c=>c.repeat(n)):''

Demo

let f =

s=>g=(n,p=`
`)=>n?g(n-1,p+' '.repeat(s.length/2))+p+s.replace(/./g,c=>c.repeat(n)):''

o.innerHTML = f('o-o  o-o')(10)

There are leading whitespaces before the last line, is that allowed?

@CarlosAlejo Oh, that was an unintended side-effect of a last-minute update. Now fixed. Thanks for reporting this!

Charcoal, 19 bytes
Ｆ⁺¹Ｎ«Ｊ±×ι÷Ｌη²ιＦηＦικ

Try it online! Link is to verbose version of code. Explanation:
Ｆ⁺¹Ｎ«       for (Plus(1, InputNumber())) {

We need lines repeated 1..n times. The easiest way to achieve this is to loop from 0 to n, as loop 0 is basically a no-op.
Ｊ±×ι÷Ｌη²ι       JumpTo(Negate(Times(i, IntDivide(Length(h), 2))), i);

Position the cursor so that the resulting line is centred.
ＦηＦικ           for (h) for (i) Print(k);

And this is how simple printing each character repeated i times is.

SOGL V0.12, 14 bytes
ā.∫dI*Hd⁄»±IFž

Try it Here!

+1 for using ∫dI.

SWI Prolog, 398 bytes
It is not the most compact solution (maybe somewhere reinventing the wheel instead of using built-in procedures), but it appers to work.
w(0).
w(X):-write(' '),Y is X-1,w(Y).
s(S,N):-string_length(S,X),Y is div(X,2)*N,w(Y).
d(S,N,R):-atom_chars(S,A),e([],A,N,R).
e(B,[H|T],N,R):-l(B,H,N,I),e(I,T,N,R).
e(B,[],_,B).
a([], L, L).
a([H|T],L,[H|R]):-a(T,L,R).
l(L,_,0,L).
l(L,I,N,R):-M is N-1,l(L,I,M,T),a(T,[I],R).
o([]):-nl.
o([H|T]):-write(H),o(T).
p(S,N):-p(S,N,N).
p(_,0,_).
p(S,N,L):-Q is N-1,p(S,Q,L),d(S,N,R),W is L-N,s(S,W),o(R).

Test:
?- p("o-o  o-o",10).
                                    o-o  o-o
                                oo--oo    oo--oo
                            ooo---ooo      ooo---ooo
                        oooo----oooo        oooo----oooo
                    ooooo-----ooooo          ooooo-----ooooo
                oooooo------oooooo            oooooo------oooooo
            ooooooo-------ooooooo              ooooooo-------ooooooo
        oooooooo--------oooooooo                oooooooo--------oooooooo
    ooooooooo---------ooooooooo                  ooooooooo---------ooooooooo
oooooooooo----------oooooooooo                    oooooooooo----------oooooooooo
true .

Explanation:
w and s writes proper amount of leading spaces:
w(0).
w(X):-write(' '),Y is X-1,w(Y).
s(S,N):-string_length(S,X),Y is div(X,2)*N,w(Y).

d manages the "duplication" of characters and e is it's recursive facility:
//d(String, Number of repetitions, Result)
d(S,N,R):-atom_chars(S,A),e([],A,N,R).
e(B,[H|T],N,R):-l(B,H,N,I),e(I,T,N,R).
e(B,[],_,B).

a and l append to the result (maybe there exists a built in procedure?):
a([], L, L).
a([H|T],L,[H|R]):-a(T,L,R).
l(L,_,0,L).
l(L,I,N,R):-M is N-1,l(L,I,M,T),a(T,[I],R).

o creates the output:
o([]):-nl.
o([H|T]):-write(H),o(T).

and finally the p is the main method:
p(S,N):-p(S,N,N).
p(_,0,_).
//p(String, Current level, Number of levels) :- go to the bottom, create pyramide level, write whitespaces, write the level
p(S,N,L):-Q is N-1,p(S,Q,L),d(S,N,R),W is L-N,s(S,W),o(R).

Japt -R, 20 19 14 8 bytes
õ@VmpXÃû

Try it

Saved 1 byte thanks to ETHproductions

I think you can change SpUl to... wait, nevermind :( You can save a byte though by replacing (V-X with XnV, if I'm not mistaken.

Oh, yeah, forgot about n; thanks @ETHproductions.

Haskell, 79 73 69 bytes

Saved 4 bytes thanks to nimi

s#n=unlines[(' '<$[1,3..(n-m)*length s])++((<$[1..m])=<<s)|m<-[1..n]]

Try it online!

If you use a step in .., you can drop the div:  (' '<$[1,3..(n-m)*length s]).

Another 5 bytes off.

APL (Dyalog), 33 31 bytes
2 bytes golfed thanks to @ZacharyT by removing unnecessary parentheses
{↑((' '/⍨(.5×≢⍵)×⍺-⊢),⍵/⍨⊢)¨⍳⍺}

Try it online!
Explanation
The right argument ⍵ is the string and the left argument ⍺ is the number.
{↑((' '/⍨(.5×≢⍵)×⍺-⊢),⍵/⍨⊢)¨⍳⍺}
                             ⍳⍺      Range 1 .. ⍺
  (                        )¨        For each element (let's call it i) do:
                      ⍵/⍨⊢          Replicate ⍵ i times
  (                 ),               Concatenated with
         (.5×≢⍵)×⍺-⊢                (⍺-i)×(len(⍵)×0.5)
   ' '/⍨                                spaces
 ↑                                    Convert the resulting array to a 2D matrix

Do you need the parens around ⍺-⊢?

@ZacharyT You're right, I don't need them. Thanks :)

PHP, 113 bytes:
for([,$s,$n]=$argv;$i++<$n;)for(print($f=str_pad)("
",($n-$i)*strlen($s)/2+!$p=0);~$c=$s[$p++];)echo$f($c,$i,$c);

Run with php -nr '' '<string>' <N> or test it online.
breakdown
# import input, loop $i from 1 to $n
for([,$s,$n]=$argv;$i++<$n;)
    # 1. print newline and padding, reset $p
    for(print($f=str_pad)("\n",($n-$i)*strlen($s)/2+!$p=0);
    # 2. loop $c through string
        ~$c=$s[$p++];)
        # print repeated character
        echo$f($c,$i,$c);

T-SQL, 223 bytes
DECLARE @ char(99),@n INT,@i INT=1,@j INT,@p varchar(max)SELECT @=s,@n=n FROM t
R:SET @j=0SET @p=SPACE((@n-@i)*len(@)/2)C:SET @j+=1SET @P+=REPLICATE(SUBSTRING(@,@j,1),@i)IF @j<LEN(@)GOTO C
PRINT @p SET @i+=1IF @i<=@n GOTO R

Input is via pre-existing table t with columns s and n, per our IO standards.
Not much to explain, it's a pretty straightforward nested loop, using @i for the rows and @j to walk through the characters of the string which are REPLICATED @i times:
DECLARE @ char(99),@n INT,@i INT=1,@j INT,@p varchar(max)
SELECT @=s,@n=n FROM t
R:
    SET @j=0
    SET @p=SPACE((@n-@i)*len(@)/2)
    C:
        SET @j+=1
        SET @P+=REPLICATE(SUBSTRING(@,@j,1),@i)
    IF @j<LEN(@)GOTO C
    PRINT @p
    SET @i+=1
IF @i<=@n GOTO R

R, 125 95 bytes
function(S,n)for(i in 1:n)cat(rep(' ',(n-i)/2*nchar(S)),rep(el(strsplit(S,'')),e=i),sep="",'
')

Try it online!
Explanation:
It's pretty straightforward, splitting the string and repeating the elements i times each rep(s,e=i) (e is short for each) as we loop. The tricky part is rep('',(n-i)/2*length(s)+1). This is the padding string, but it's a bunch of empty strings. I need to add 1 because otherwise the result is character(0), a zero-length vector, and cat, which by default separates its elements with spaces, misaligns the final line.

CJam, 36 bytes
l_,2/:T;]li:F{[_U)*zSTFU)-**\N]\}fU;

Try it online!

Welcome to PPCG! Nice first submission :)

@HyperNeutrino Well, I have a feeling my code is pretty far from optimized, but... thanks. :)

But it contains STFU :-D

Python 2, 79 77 bytes
s,n=input();m=n
while m:m-=1;print' '*(m*len(s)/2)+''.join(i*(n-m)for i in s)

Try it online!
Edit: -2 bytes courtesy @FlipTack

You can remove the square brackets around [i*(n-m)for i in s], as .join is capable of taking a generator, which should ave you two bytes.

05AB1E, 6 5 bytes
L€×.c

First input is \$n\$, second input is \$s\$ as character-list.
Try it online.
Explanation:
L      # Push a list in the range [1, first (implicit) input-integer]
 €     # Map over each integer:
  ×    #  Repeat each character in the (implicit) second input-list the integer
       #  amount of times as string
   .c  # Join each inner list to a string; then each string by newlines;
       # and then centralize each line by padding leading spaces
       # (after which it is output implicitly as result)

Mathematica, 97 bytes
(c=Characters@#;T=Table;Column[T[""<>T[""<>T[c[[i]],j],{i,Length@c}],{j,#2}],Alignment->Center])&

input

["o-o o-o", 10]

Java 8, 164 148 bytes
s->n->{String o="";for(int i=0,m,j;i++<n;){o+="\n";for(m=0;m++<(n-i)*s.length()/2;)o+=" ";for(char c:s.toCharArray())for(j=0;j++n->{
    String o = "";                                  //empty output string
    for (int i = 0, m, j; i++ < n; ) {              //for each row
        o += "\n";                                  //append a new line
        for (m = 0; m++ < (n - i)*s.length()/2; )   //for amount of spaces = inversed row_number * half length
            o += " ";                               //append a space
        for (char c : s.toCharArray())              //for each char of the string
            for (j = 0; j++ < i; )                  //row_number times
                o+=c;                               //append char
    }
    return o;
}

Rust, 107 bytes
|a:&str,b|for i in 0..b{println!("{:^1$}",a.split("").map(|s|s.repeat(i+1)).collect::<String>(),a.len()*b)}

playpen link
Defines an anonymous function that takes a string slice and number, printing the wanted pattern to standard output. It assumes that the string slice only contains ASCII characters, but the challenge never specifies that full unicode support is necessar. To be correct for unicode as well would require 117 bytes:
|a:&str,b|for i in 0..b{println!("{:^1$}",a.split("").map(|s|s.repeat(i+1)).collect::<String>(),a.chars().count()*b)}

The explanation is rather simple:
|a:&str,b|                             // arguments, compiler can't infer the type of a unfortunately
    for i in 0..b {                    // iterate from row 0 to row b - 1
        println!(
            "{:^1$}",                  // print a line containing arg 0, centered with the width specified as arg 1
            a.split("")                // split the string into slices of one character
                .map(|s|s.repeat(i+1)) // for each slice, yield a string containing row+1 times that slice
                .collect::<String>(),  // concatenate each of the strings into one string
            a.len()*b                  // total length should be the length of the string times the amount of rows
        )
    }

LOGO, 97 95 bytes
to f :s :n
for[i 1 :n][repeat(:n-:i)/2*count :s[type "\ ]foreach :s[repeat :i[type ?]]pr "]
end

Try the code on FMSLogo interpreter.
Define a function f which takes two inputs, :s and :n, then print the result.

Tcl, 143 142 141 138 bytes
proc p s\ n {set p [expr [set w [expr [string le $s]/2]]*$n];time {incr p $w;puts [format %$p\s [regsub -all . $s [append r \\0]]]} $n;cd}

Test:
% p "o-o  o-o" 5
                o-o  o-o
            oo--oo    oo--oo
        ooo---ooo      ooo---ooo
    oooo----oooo        oooo----oooo
ooooo-----ooooo          ooooo-----ooooo

Remark: the "cd" at the end of the procedure prevents time's result to be printed out below the pyramid, but changes the current directory - a side effect that's not explicitly forbidden.
Thanks to sergiol for a hint to save one byte.... and another hint to save one more byte.
Thanks to aspect (on tcl chat) for another 3 bytes saved!

Swift, 232 bytes
Probably could be better, but I don't have much time to refactor.
This answer uses Swift 4, so it can't currently be run online.
var p:(String,Int)->String={s,i in let r=(1...i).map{n in return s.map{return String(repeating:$0,count:n)}.joined()};return(r.map{return String(repeating:" ",count:(r.last!.count-$0.count)/2)+$0}as[String]).joined(separator:"\n")}

SOGL V0.12, 8 bytes
∫dč*∑}¹╚

Try it Here!
Explanation:
∫dč*∑}¹╚
∫    }    iterate over 1..input, pushing counter
 d        push the variable D, which sets itself to the next input as string
  č       chop into characters - a vertical array
   *      multiply horizontally by the counter
    ∑     join the array together
      ¹   wrap all that in an array
       ╚  center horizontally

I didn't feel like updating my old answer here as it uses a different method and uses a new(er than the challenge) feature - ╚

C (gcc), 123 bytes
i,j,c;p(char*s,int n){for(i=0;i<n;){printf("\n%*s",strlen(s)/2*(n-++i),"");for(c=0;s[c];c++)for(j=0;j++<i;)putchar(s[c]);}}

Try it online!
Pretty Code:
// declare variables gcc-style
i,j,c;
p(char *s, int n){
    // for every n
    for(i=0;i<n;){
        // print [ strlen(s)/2 * (n-(i+1)) ] spaces
        printf("\n%*s",strlen(s)/2*(n-++i),""); // increment i instead of (i+1)
        // for every character in the input string
        for(c=0;s[c];c++)
            // for every repetition required
            for(j=0;j++<i;)
                // print the current character
                putchar(s[c]);
    }
}

112 bytes

Excel VBA, 98 Bytes
Anonymous VBE immediate window function that take input as string from [A1] and int from [B1] then outputs to the VBE immediate window
For i=1To[B1]:?Spc([Len(A1)/2]*([B1]-i));:For j=1To[Len(A1)]:?String(i,Mid([A1],j,1));:Next:?:Next

Vyxal C, 2 bytes
ɾ•

Try it Online!
ɾ  # 1...n
 • # Repeat each char of input by each of those
   # (C flag) center and join by newlines

Canvas, 6 bytes
⁷；１＊］ｒ

Try it here!


text:
Flip rows and columns
Objective
To flip the rows and columns of a table in a code-golf challenge.
Instructions
You will be passed a "table" of 3 arrays/lists with 3 items each as input. Your job is to flip the rows and columns on it by writing a program that can do this efficiently and creatively. You will flip the "table" according to the example below.
Example
Input
["foo", 5, 0b1011]
[3.14, "bar", 10]
["apple", 90, "monty"]

Output
["foo", 3.14, "apple"]
[5, "bar", 90]
[0b1011, 10, "monty"]

Qualification
In order to qualify for winning, you must:

Solve the challenge (use the above input for a test case)
Optional: Post a link to an ideone or repl.it
Follow standard loopholes
Put a header in the format: Language, XX bytes.

This is code-golf, so least bytes wins. Good Luck!
Leaderboard

var QUESTION_ID=127611,OVERRIDE_USER=46066;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

Is STDIN required? Can we not use the Standard IO?

So, essentially "zip"?

@ATaco I thought STDIN was Standard IO. Go ahead and use Standard IO. It seems the same. As long as it isn't arguments.

What kind of arguments? Also, why require ideone or repl.it? Why not TIO ?

@CalculatorFeline as in terminal or function arguments. Just as a convenient way to run.

@juniorRubyist What do you mean by arguments? Did you follow the link? Standard IO is our communities standard consensus for Input Output. It's not necessary for a challenge writer to follow, but it's suggested.

@ATaco Oh ok. Sorry about that.

Please edit the question to remove the IO restrictions.

This challenge's IO seems to be geared towards a particular language (Not sure which one), and is unusually restrictive about it when handling IO doesn't seem like it should be the main focus of the challenge. I strongly recommend allowing much more flexible IO.

-1 for having a very strict IO format; it ends up becoming a larger portion of the answer than the actual challenge. I will revert if you change that.

-1 because of 2. Post a link to an ideone or repl.it. Some languages are not available on those sites.

Not to mention that 0 answers follow this rule circa now.

In the future, I recommend using the Sandbox to get early feedback on your question.

Can we take input/output as a list of lists?

Related. Not quite a duplicate, though, AFAICT, because the padding rules are different (this challenge allows you to assume that the input is 3×3 rather than needing to be able to handle a ragged array).

@ais523 That one is also zip+reverse (so rotate), not quite just zip. but yes, closely related

Voting to reopen as this is on the diagonal, not the antidiagonal.

Math.JS, 1 byte
'

' is a named operator which takes it's left argument and transposes it.
Try it out

Doesn't output in the correct format.

@juniorRubyist That's fine. But do consider that it does technically solve the challenge.

Mathematica, 3 bytes


This character (U+F3C7) is Mathematica's builtin Transpose suffix operator.

Yes it is accepted.

Python, 3 bytes
zip

Note that you must pass the arguments not in a list, but rather as separate arguments, which I believe is acceptable. If not, lambda x:zip(*x) works too for a list as a parameter.
If builtins are not allowed (which was not specified), lambda x:[[b[a]for b in x]for a in range(len(x[0]))] works, or, since it's specified to be 3 × 3, lambda x:[[b[a]for b in x]for a in[1,2,3]] works.
If you're going to enforce the strict IO, then here you go:
print(zip(*[input()for i in'3cs'])) # '3cs' because why not, CalcCat

@juniorRubyist Functional under site standards. Override standards and enforce STDIN? (not recommended)

[0]*3 can be "3cs" for +customizability.

@CalculatorFeline Oh smart. Thanks!

wait that doesn't save bytes. nvm. but still, nice

Pyth, 1 byte
C

Pyth's C command transposes the given nested list.

TI-Basic, 2 bytes
AnsT
Not eligible for "winning" due to specification #2 but a valid answer nonetheless.

Please use a code block.

@CalculatorFeline: The answer appears to be using HTML to reproduce characters that are in TI-Basic's character set but not in ASCII. You could use Unicode instead, though: Ansᵀ.

Python 2, 44 51 bytes
Crossed out 44 is still 44 :(
for i in zip(*[input()for i in"hi!"]):print list(i)

Try it online!
Follows original IO rules. Only works for 3 high input (other heights are not required). Change the length of "hi!" to height of input.

You can't request for the code to be changed given the input. You need to account for it somehow programmatically.

Nope. See question.

Ok, sorry. I see that you only need to support up to three. You might want to mention, though, Only works for \3` high input, as required`.

Jelly, 1 byte
Z

Try it online!
Footer added on the TIO link to make the result easier to see.
This is Jelly's builtin for Zip.

MacOS bash, 6
rs -Tc

Works on Linux as well, if rs is installed, as TIO:
Try it online.

Haskell, 26 bytes
import Data.List
transpose

This is a built-in


text:
Generating an adequate password
Story
I need to remember a lot of passwords and don't want to use the same one for multiple websites so I came up with a rule, but the rule shouldn't be transparent so what I do is:

Think of a long word or concept such as breadpudding.
Replace the first letter with the site we are logging into. If we are logging into google, our word becomes greadpudding.
Make the first letter uppercase.
Change the second letter to an @ sign.
If the password starts with a non-consonant, add a certain number (such as 1234); otherwise, add another number (such as 4321).

Ta da, you now have an adequate password.
This process is arduous though so I need a program to generate this for me based on the following:
Problem
Given input:

a : the initial word, which is a string and is always lowercase, and is guaranteed to be longer than 3 characters.
b : the site we are logging into, which is a string and is always lowercase, and is guaranteed to be non-empty.
c : the number for non-consonants, which is a positive integer that may have leading zeroes.
d : the number for consonants, which is a positive integer that may have leading zeroes.

Output a string based on above criteria.
Test cases
Input a="volvo", b="gmail", c=5555, d="0001"
G@lvo0001
Input a="sherlock", b="9gag", c=31415926535, d=3
9@erlock31415926535
Input a="flourishing", b="+google", c=11111, d=2222
+@ourishing11111
Rules

y is a consonant.
If you decide c or d is an integer, you may parse it as such, and leading zeroes can be ignored (0091 gets treated as 91).
Trailing whitespace and newlines are allowed.
You may output the result to STDOUT or return the result in a function.
Characters allowed in a and b are [a-z0-9!@#$%^&*()_+=-].
You may accept the 4 inputs in any consistent order.

This is code-golf. Shortest code in bytes wins.

Through 20 years of effort, we've successfully trained everyone to use passwords that are hard for humans to remember, but easy for computers to guess. Strength of password is never determined by how many uppercase/special characters there is in the password.

@LeakyNun Yes I agree but the amount of character sets allowed makes it harder as well, so imagine if a password box only allowed lowercase letters, that decreases the difficulty of brute-forcing a lot.

Yes, at a given length inclusion of more types of characters (numbers, uppercase, symbols) increases security, but not exponentially. A long all lowercase letter password is much stronger than a short mixed character type password. According to zxcvbn:
"4321breadpudding" (10^9) broken in <1s stored as fast hash,
"4321G@eadpudding" (10^11) broken in 8s,
"granny makes great bread pudding" (10^24) broken in centuries,
"Granny, make great bread pudding!" (10^27) broken in centuries. Remember to calculate password difficulty in orders of magnitude, in which case 2 is not a lot!

@vee_ess How long does G@anny makes great bread pudding1234 take to get broken, because that's the point of this, take a phrase and add complexity based on easy to remember rules.

centuries (guesses: 10^28). It's a great exercise for code golf, but it's bad for real passwords since the complexity added is significant for the user and negligible for the attacker.

@vee_ess Okay but you forget about stuff like what happens when a site you are a user to gets hacked and your email, password combo gets tried on all major sites before you can react, this protects against that as well. Compromising 1 password doesn't compromise them all.

"How long does G@anny makes great bread pudding1234 take to get broken"? Well, now it's on all the crackz0rd lists so less than 1 second :-P

@LeakyNun Did you read the flavor text for that xkcd comic..?

@vee_ess Okay I've fixed the title.

distant echo of people crying at Security.SE

@Hankrecords Crying? You're all going and writing helpful generator applications for this pattern! Saves us lots of work!

@Matthew It was just a joke about how there's always conflict there when speaking of passwords :)

My passwords (when not restricted by arbitrary rules) all have the form of :cJw:tang)Kinetic/supervisor+sasquatch:, or :xTM:western0Mole4Azure4Scan:, or :ouX:bag3slats"spinner*Covered:, etc.... I find them easy to remember, but, even when the attacker knows the form I use, each one still has over 80 bits of entropy.

Jelly, 17 bytes
Ḣ©Œu;”@o;⁶⁵®eØC¤?

A full program, taking the arguments in the order b, a, c, d.
Try it online!
How?
The main link is dyadic, taking b and a, the program inputs are then b, a, c, and d (the 3rd through sixth command line arguments), so c and d are accessed as such.
Ḣ©Œu;”@o;⁶⁵®eØC¤?  Main link: b, a           e.g. "gmail", "volvo" (c="5555" and d="0001")
Ḣ                  head b                         'g'
 ©                 copy to register and yield     'g'
  Œu               convert to uppercase           "G"
     ”@            literal '@' character          '@'
    ;              concatenate                    "G@"
       o           logical or with a (vectorises) "G@lvo"
                ?  if:
               ¤     nilad followed by link(s) as a nilad:
           ®           recall value from register  'g'
             ØC        yield consonants            "BCDFGHJKLMNPQRSTVWXYZbcdfghjklmnpqrstvwxyz"
            e          exists in?                  1
         ⁶         ...then: 6th arg = 4th in = d   "0001"
          ⁵        ...else: 5th arg = 3rd in = c   "5555"
        ;          concatenate                     "G@lvo0001"
                   implicit print

Python 3, 69 bytes
lambda a,b,*c:b[0].upper()+"@"+a[2:]+c[b[0]in"bcdfghjklmnpqrstvwxyz"]

Try it online!

Why not use b[0]not in"aeiou" instead?

@officialaimm because for some godforsaken reason 9 is counted as a non-consonant.

Yea, the rule in the question does not say anything about the numbers explicitly...

Save 3 bytes (note: z is the maximum char possible): ('a'<b[0])*b[0]not in"eiou"

05AB1E, 22 20 18 bytes
н©u'@I¦¦žN®åiI\}IJ

Input taken as b,a,c,d
Try it online!
Explanation (outdated)
¦                     # remove the first char of a
 s                    # swap b to the top of the stack
  н©                  # push the head of b and store a copy in register
    uì                # convert the head to upper case and prepend to a
      U               # store in variable X
       žN®åi          # if the head of b is a consonant
            \}        # discard c
              X«      # concatenate X with c or d
                '@1ǝ  # insert an "@" at character position 1

0è used in the link as н isn't pulled to TIO yet.

C, 441 286 139 Bytes
#define o(c)*a[1]==0xc
int main(int b,char** a){printf("%c@%s%s",*a[1],a[2]+2,(*a[1]>97&*a[1]<128)
&!(o(65)|o(69)|o(6F)|o(75))?a[4]:a[3]);}

erm... instead of 21 sets of argv[1][0]='c'|argv[1][0]='c'|... where c = consonant, you can easilly reduce this by doing !(argv[1][0]='a'|argv[1][0]='e'|argv[1][0]='i'|argv[1][0]='o'|argv[1][0]='u') Reduces score by 264 just by that!

No, as mentioned otherwise, that allows numbers and other characters

@muddyfish then you make it (argv[0][1]>='a'&argv[0][1]<='z'&!(argv[1][0]='a'|argv[1][0]='e'|argv[1][0]='i'|argv[1][0]='o'|argv[1][0]='u')). Still shorter by a margin. However there are so many ways to golf this code I don't know where to start... :s

I am open to ideas :) This is my first attempt at golfing

Well, you're doing fine! I'm sure it can still be improved, like using a variable instead of using a macro, but yeah, you're starting on the right foot! :) You could probably make good use of these golfing tips!

I saved that somewhere, i will look into it in detail when i have the time. Thanks.

Javascript ES6, 87 bytes
(a,b,c,d)=>b[0].toUpperCase()+'@'+a.slice(2)+(/[bcdfghjklmnpqrstvwxyz]/.test(b[0])?d:c)

Demo

f=
(a,b,c,d)=>b[0].toUpperCase()+'@'+a.slice(2)+(/[bcdfghjklmnpqrstvwxyz]/.test(b[0])?d:c)

console.log(f("volvo","gmail", 5555, "0001")); //G@lvo0001
console.log(f("sherlock","9gag", 31415926535, 3)); //9@erlock31415926535
console.log(f("flourishing","+google", 11111, "2222")); //+@ourishing11111

I was about to post this. I mean, literally this, character by character. Bummer, lol

@Hankrecords Hehe, we can maybe improve it

Since {|}~ are not valid characters, you can replace /[bcdfghjklmnpqrstvwxyz]/.test(b[0])?d:c with /[ -_aeiou]/.test(b[0])?c:d for minus 13 bytes

Retina, 80 75 bytes
^..(.*)¶(.).*
$2@$1
^([ -_aeiou].*)¶(.*)¶.*
$1$2
(.*)¶.*¶(.*)
$1$2
T`l`L`^.

Try it online!
Trying out a new language here, takes inputs in the order given in the question
Explanation:
^..(.*)¶(.).*
$2@$1

Create a word which is second word first letter, @ sign, first word from the 3rd character on.
^([ -_aeiou].*)¶(.*)¶.*
$1$2

If the word starts with a non-consonant, append the first number
(.*)¶.*¶(.*)
$1$2

If there are still 3 lines left (no substitution in the last step, so it starts with a consonant), append the second number
T`l`L`^.

Uppercase the first letter

R, 105 103 bytes
pryr::f({m=substr(b,0,1);paste0(toupper(m),'@',substring(a,3),'if'(grepl("[b-df-hj-np-tv-z]",m),d,c))})

Anonymous function. Evaluates to
function (a, b, c, d)
{
    m = substr(b, 0, 1)                      #first letter of website
    paste0(toupper(m),                       #concatenate that letter, capitalized,
           "@",                              #an '@',
           substring(a, 3),                  #the rest of the long string,
           if(                               #and
           grepl("[b-df-hj-np-tv-z]", m)),   #if the first letter is a consonant,
           d                                 #the consonant string/num,
           else c)                           #else the other one
}

which is what's on TIO. Please help me golf that regex because I'm terrible at them.
Saved 2 bytes from Giuseppe.
Try it online!

you could use !grepl('[aeiouy]',m)

or better yet, grepl('[aeiouy]',m) and just swap c and d.

93 bytes
"if" makes the if syntax much neater instead of using else or ifelse; I also saved substring to a variable and put m to uppercase immediately to save a byte.

I tried running your function and ran into two issues: pryr is trying to make substring an argument; and your grepl only finds "not vowels", which isn't the same as consonants. The "if" thing I just missed, thanks for pointing that out.

I hadn't actually tested it; I didn't realize pryr::f wouldn't like that; you could use the regex '[a-z&&[^aeiouy]]' from Kevin Cruijissen's answer?

QBIC, 81 bytes
G=ucase$(_s;,1|)+@@`+_s;,3,_lC||~instr(@bcdfghjklmnpqrstvwxyz`,_sC,1|)|?G+;\?G+;

Explanation
Parameters are Website(A$), base word(C$), consonant-number(E$), and nonsonant-number(F$)
G=                           SET G$ to
 ucase$(      )              the upper-case version of (also works for '9gag', '+google')
        _s;,1|                  the first char of the website A$ read from cmd line
 +@@`                        plus a literal @ (B$)
 +_s;,3,_lC||                plus all characters from base word C$ from 3rd char onwards
~instr(                      IF the second arg to INSTR is in the first
 @bcdfghjklmnpqrstvwxyz`,      with all consonants in the first arg
 _sC,1|                        and the first char of the base word C$ in the second
 )
|?G+;                        THEN print G$ plus the consonant addition
\?G+;                        ELSE print G$ plus the other addition

Note that the last two lines appear the same, but the interpreter changes the behaviour slightly
on each ;: Whenever it sees the ; instruction, it creates a new variable (in this case, the
vars È$andF$` are the first available after reading all other literals and cmd line arguments) and
assigns the first not-yet-assigned cmd line paraeter to that variable.

Java 8, 112 99 92 87 bytes
(a,b,c,d)->b.toUpperCase().charAt(0)+"@"+a.substring(2)+(b.matches("[a-z&&[^aeiou]].*")?d:c)

-13 bytes by taking parameter b last instead of second.
-1 byte by removing y
-7 bytes thanks to @OlivierGrégoire (and parameters are in order again)
-5 bytes thanks to @PunPun1000
Explanation:
Try it here.
(a,b,c,d)->                     // Method with 4 String parameters and String return-type
  b.toUpperCase().charAt(0)     //  First character of B capitalized
  +"@"                          //  + literal "@"
  +a.substring(2)               //  + A excluding first two characters
  +(b.matches("[ -_aeiou].*")?  //  If B starts with a consonant:
    d                           //   + D
   :                            //  Else:
    c)                          //   + C
                                // End of method (implicit / lambda with single return)

y is a consonant so you can drop the y in your regex for 1 byte.

(a,b,c,d)-> is shorter than a->b->c->d->. Currying is only helpful for 2 parameters. For 3, currying is the same as no currying. For 4 and above, no currying is shorter.

(a,b,c,d)->b.toUpperCase().charAt(0)+"@"+a.substring(2)+(b.matches("[a-z&&[^aeiou]].*")?d:c) is 92 bytes long. Also, it uses the parameters in proper order (which confused me at first :-( ).

@OlivierGrégoire Thanks. Second time I make that mistake regarding the currying with four parameters.. And first toUpperCase() and then .charAt(0) is indeed shorter.. Not sure how I've missed that. (And the different order was to allow (b=...), which wouldn't be possible if it isn't the last parameter with currying, because then it had to be final / was implicit final.)

Since {|}~ are not valid characters, you can use [ -_aeiou] for non consonants and swap d and c for minus 5 bytes

JavaScript (ES6), 76 bytes
(a,b,c,d)=>b[0].toUpperCase()+'@'+a.slice(2)+(/[aeiou\d_\W]/.test(b[0])?c:d)

I would have added this as a suggestion as an improvement to Weedoze's solution, but it seems like I can't comment on it since I mostly lurk

C#, 111 bytes
(a,b,c,d)=>Char.ToUpper(b[0])+"@"+a.Substring(2)+(b.IndexOfAny("bcdfghjklmnpqrstvwxyz".ToCharArray()==0)?d:c);

Checking the consonant is particularly expensive with no direct regex capability on the string type.

F#, 157 bytes
let f(a:string)(b:string)c d=System.Char.ToUpper(b.[0]).ToString()+"@"+a.[2..]+(if((Seq.except['e';'i';'o';'u']['b'..'z'])|>Seq.contains b.[0])then d else c)

F# is still very new to me so there are probably better approaches to this.

V, 25 bytes
ldvjr@Ç^[aeiou]ü^Á/j

DÍî

Try it online!
Takes arguments in the buffer in order:
website
word/phrase
consonant number
non-consonant number

Bash 4, 76 bytes
g(){
a=${2:0:1}
c=$4
[[ "aeiou[0-9]" =~ .*$a.* ]]&&c=$3
p="${a^}@${1:2}$c"
}

Works in Bash 4:
g volvo gmail 5555 0001; echo $p
g sherlock 9gag 31415926535 3; echo $p
g flourishing +google 11111 2222; echo $p

Ruby, 73 bytes
->a,b,c,d{a.sub(/..(.*)/){b[0].upcase+"@#$1#{b[0]=~/[aeiou_\d\W]/?c:d}"}}

Try it online!

JavaScript (ES6), 69 bytes
(a,b,c,d)=>e=a[0].toUpperCase()+"@"+a.slice(2)+/[AEIOU]/.test(e)?c:d

Pretty simple, probably can be golfed


text:
Fold a string into a triangle
Given a string whose length is divisible by 4, make a triangle as demonstrate below.
If the string is abcdefghijkl, then the triangle would be:
   a
  b l
 c   k
defghij

If the string is iamastringwithalengthdivisiblebyfour, then the triangle would be:
         i
        a r
       m   u
      a     o
     s       f
    t         y
   r           b
  i             e
 n               l
gwithalengthdivisib

If the string is thisrepresentationisnotatriangle, then the triangle would be:
        t
       h e
      i   l
     s     g
    r       n
   e         a
  p           i
 r             r
esentationisnotat

Notes

The string will only consist of characters from a to z.
Leading/Trailing whitespaces and newlines are allowed as long as the shape is not broken.
A list of strings as output is allowed.

This is code-golf. Shortest answer in bytes wins. Standard loopholes apply.

Charcoal, 25 22 21 bytes
≔÷Ｌθ⁴λ↙…θλ→✂θλ±λ↖✂θ±λ

Try it online! Link is to verbose version of code. Simply slices the string into three parts and prints them in the appropriate directions. Edit: Saved 3 bytes by using integer division and slicing. Saved a further byte by using CycleChop instead of Slice for the head of the string. Edit: Charcoal now supports drawing arbitrary text along the edge of a polygon, simplifying the code to 12 bytes:
ＧＨ↙→→↖⊕÷Ｌθ⁴θ

Try it online! Link is to verbose version of code.

What do the ✂s do?

@EriktheOutgolfer That's the new Slice operator.

:| Oops meant to make PolygonHollow do this, ＧＨ↙→→↖⊕÷Ｌθ⁴θ will work next time I push Charcoal

JavaScript (ES6), 119 117 108 105 bytes
s=>(l=s.length/4,S=' ',g=([c,...s],p)=>S.repeat(l)+c+(l--?p+s.pop()+`
`+g(s,p?p+S+S:S):s.join``))(s+S,'')

Formatted and commented
s => (                            // given the input string s:
  l = s.length / 4,               // l = length of side edge - 1
  S = ' ',                        // S = space (defining S costs 6 bytes but saves 7)
  g = (                           // g = recursive function which takes:
       [c,                        //   - c = next character
           ...s],                 //   - s = array of remaining characters
                  p) =>           //   - p = middle padding string
    S.repeat(l) + c + (           // append left padding + left character
      l-- ?                       // if side edges are not complete:
        p + s.pop() + '\n' +      //   append middle padding + right character + Line Feed
        g(s, p ? p + S + S : S)   //   and do a recursive call with updated middle padding
      :                           // else:
        s.join``                  //   append all remaining characters and stop recursion
    )                             //   (this is the bottom edge)
  )(s + S, '')                    // initial call to g()

Test cases

let f =

s=>(l=s.length/4,S=' ',g=([c,...s],p)=>S.repeat(l)+c+(l--?p+s.pop()+`
`+g(s,p?p+S+S:S):s.join``))(s+S,'')

console.log(f('abcdefghijkl'))
console.log(f('iamastringwithalengthdivisiblebyfour'))
console.log(f('thisrepresentationisnotatriangle'))

05AB1E, 23 bytes
ćsIg4÷GćsÁćsŠN·<ú«s}».C

Try it online!
Explanation
ć                        # extract head of input
 s                       # swap the remaining string to top of stack
  Ig4÷G                  # for N in [1...len(input)/4-1] do:
       ć                 # extract head
        sÁ               # swap remaining string to top of stack and rotate right
          ć              # extract head
           sŠ            # reorder stack as tail, head, remaining
             N·<ú        # prepend N-1 spaces to tail
                 «s      # concatenate with head and swap remaining string to top
                   }     # end loop
                    ».C  # join by newlines and center

C#, 260 bytes
namespace System{using static Console;class P{static void Main(){var d=ReadLine();int e=d.Length/4,x=e,y=0,g=0,i=0;Action<int,int>a=(p,q)=>{SetCursorPosition(p,q);Write(d[g++]);};for(;i<e;i++)a(x--,y++);for(i=0;i<e*2;i++)a(x++,y);for(i=0;i<e;i++)a(x--,y--);}}}

Really wanted to use SetCursorPosition.
Ungolfed:
namespace System {
    using static Console;

    class P {
        static void Main() {
            var d = ReadLine();
            int e = d.Length / 4, x = e, y = 0, g = 0, i = 0;
            Action<int, int> a = (p, q) => { SetCursorPosition(p, q); Write(d[g++]); };
            for (; i < e; i++)
                a(x--, y++);
            for (i = 0; i < e * 2; i++)
                a(x++, y);
            for (i = 0; i < e; i++)
                a(x--, y--);
        }
    }
}

Pardon my ignorance, but what is the purpose of Action in your solution?  Is it just less bytes than a void function?

@confusedandamused I'm used to writing single function answers so didn't even consider putting the function normally, it will be shorter though.

Mathematica, 164 bytes
(b=Length[c=Characters@#];k=Column[#,Alignment->Center]&;T=Table;k@{#&@@c,k@T[""<>{c[[i+2]],T[" ",2i+1],c[[-i-1]]},{i,0,(a=b/4)-2}],""<>T[c[[i]],{i,a+1,b/2+1+a}]})&

input

["iamastringwithalengthdivisiblebyfour"]

We all know that [[1]] can be replaced with #&@@.

you are all so smart sweeties!

I meant https://codegolf.stackexchange.com/questions/12900/tips-for-golfing-in-mathematica .

When you find yourself doing @(...), just do [...] instead. And I haven't tested but you can probably save another byte by giving Column a name (or maybe even to Column[#,Alignment->Center]& to avoid q) and then by putting all the remaining variables into the first argument of the outer Column (to save the surrounding parentheses).

Python 3, 120 bytes
First golf, figured I might as well learn some Python along the way.
a=input()
l=len(a)//4
print(l*" "+a[0])
for i in range(1,l):print((l-i)*" "+a[i]+(2*i-1)*" "+a[4*l-i])
print(a[l:3*l+1])

Try it online!
Explanation:
The first character is printed by itself after len(a)//4 spaces, then the first and last i-th characters starting from the second are printed, separated by 2*i - 1 spaces.
Finally, the remaining substring is printed.

Welcome to PPCG! You can learn from this solution.

A possible golf here is to declare p=print, and then simply use p for the three prints you use.

Also, as the string length is guaranteed to always be divisible by four, // (floor division) can be replaced with /.

By the way, the code you've linked to try online is not the same as the code in your answer.

GNU sed, 178 158 132 + 1 = 133 bytes
+1 byte for -r flag.
s/(.)(.*)(.)/ \1\n\2;\3/
:
s/( *)(.\n.)(.*)(...);(.*)(.)/\1\2\1  \6\n\3;\4\5/m
t
:A
s/(.*\n)( *)(.*);/ \2;\1\2\3/m
tA
s/. (.)$/\1/gm

Try it online!
Explanation
In previous revisions I used a lot of  bytes dealing with math, special cases, and cleanup, even though intuitively I was sure they could be avoided. I've since managed to do so, mostly.
Suppose we have the input abcdEFGHIJKLMnop. The letters EFGHIJKLM will be the bottom of the triangle, so I've capitalized them as a visual aid.
First we prepare the input by putting the first character on its own line (preceded by a space) and inserting a cursor (;) before the last character:
s/(.)(.*)(.)/ \1\n\2;\3/

Now we have:
 a
bcdEFGHIJKLMno;p

Now, in a loop, we're going to do a few things to the last line: 1. Copy the spaces from the previous line and insert them after the first character, plus two; 2. Move the last character to right after the spaces, followed by a newline; and 3. Move the cursor three characters to the left.
:
  s/( *)(.\n.)(.*)(...);(.*)(.)/\1\2\1  \6\n\3;\4\5/m
  t

Here's the result of each iteration:
 a
b   p
cdEFGHIJKL;Mno

 a
b   p
c     o
dEFGHI;JKLMn

 a
b   p
c     o
d       n
EF;GHIJKLM

You can see the pyramid begin to take shape. You can also see what the cursor was for: In each iteration it moved left three characters, and when there are no longer three characters to its left, it breaks the loop, which happens to be just when we've reached the "bottom" of the pyramid.
Now we're going to do a similar operation but in reverse. In a loop, we'll copy the spaces from the beginning of the line with the cursor to the beginning of the preceding line, plus one, in the process moving the cursor up to that line.
:A
  s/(.*\n)( *)(.*);/ \2;\1\2\3/m
  tA

Here are a couple iterations and the end result:
 a
b   p
c     o
 ;d       n
EFGHIJKLM

 a
b   p
  ;c     o
 d       n
EFGHIJKLM

...

    ; a
   b   p
  c     o
 d       n
EFGHIJKLM

We're all done now, except for some extra characters: A ; and extra space on the first line, and two spaces in the "middle" of the pyramid on the next three lines. A simple substitution gets rid of them:
s/. (.)$/\1/gm

All done!
    a
   b p
  c   o
 d     n
EFGHIJKLM

Python 2, 100 97 96 bytes

Jacoblaw saved 1 byte: integer division is unnecessary

a=input()+" "
k=j=len(a)/4
while j:print j*" "+a[0]+(2*(k-j)-1)*" "+a[-1];a=a[1:-1];j-=1
print a

Try it online!
Explanation:
One smart thing I've done here is padded the input with a space at the end,
such that the first character pairs with it and this can be pushed into the
loop (and since trailing whitespaces are allowed)
abcdefghijkl[space]
To print [0] [-1]            Output=>[spaces]a[another_calculated_spaces(=0 here)][space]
Strip at both ends(a[1:-1])
bcdefghijkl
To print [0] [-1]            Output=>[spaces]b[another_calculated_spaces]l
Strip at both ends(a[1:-1])
and so on.

The number of loops to follow is associated with len(word)//4. In the final step, the whole remaining string is printed(this forms the base of the triangle).
The spaces follow a simple pattern; the first set of spaces go-on decreasing by 1,  while second set of spaces go on increasing by 2.

Can you shave off a byte by not doing integer division? Since a will always be a multiple of 4. // -> /

Thank you, I am surprised it is not throwing any errors even for [inputs with length not divisible by 4] [https://tio.run/##LYtBCsMgEADvvkI8aURaQ08pviTksAfBNWEV3VD6epvS3oZhpr45FZrHgIBUT9bGKqnEHnI4Imkwt4d4JTyizEttSCzzdAUW1vtm9Tzp3WXjvPlL57cnBFj98qXsghe/C8ZQnLC3WFvskRgYC2GnclFTHw]

That's because in Python 2, division is integer by default. That was canged in Python 3.

Haskell, 136 bytes
i#x=x<$[1..i]
f s|let h=div l 4;l=length s=unlines$[(h-i)#' '++(s!!i):(2*i-1)#' '++[(s++" ")!!(l-i)]|i<-[0..h-1]]++[drop h$take(l-h+1)s]

Try it online!

C#, 172 bytes
int i=0,n=s.Length;var p="";p=new string(' ',n/4)+s[i]+"\r\n";for(i=1;i<n/4;i++){p+=new string(' ',n/4-i)+s[i]+new string(' ',i*2-1)+s[n-i]+"\r\n";}p+=s.Substring(i,n/2+1);

Try it online!

C 225 bytes
p(c){putchar(c);}S(n){while(n--)p(' ');}main(int c,char**v){int i= strlen(v[1]),n=i/4,r;char*s=v[1],*e=&s[i-1];S(n);p(*s++);p('\n');for (r=1;r<n;r++){S(n-r);p(*s++);S(2*r-1);p(*e--);p('\n');}e++;while (s!=e)p(*s++);p('\n');}

explained
p(c){putchar(c);}        // p is alias for putchar
S(n){while(n--)p(' ');}  // S prints n spaces
main(int c,char**v){
    int i= strlen(v[1]), // counter
        n=i/4,           // num rows in figure - 1
        r;               // current row
    char*s=v[1],         // start char
        *e=&s[i-1];      // end char
    S(n);p(*s++);p('\n');// print first row
    for (r=1;r<n;r++){
        S(n-r);p(*s++);S(2*r-1);p(*e--);p('\n'); // print middle rows
    }
    e++;while (s!=e)p(*s++);p('\n'); // print last row
}

163 bytes

Ruby, 106 bytes
i=-1
s= ~/$/
sub /./,"#{' '*l=s/4}\\0
"
(l-1).times{sub /^(\w)(.*)(.)/,"#{' '*l-=1}\\1#{' '*i+=2}\\3
\\2"}

Try it online!

Octave, 87 bytes
@(s,x=(n=nnz(s))/4)[[' ';flip(diag(s(1:x))')]' [' ';diag(s(n:-1:n-x+2))];s(x+1:n-x+1)];

*In a windows machine the above code produces the correct result however in tio I added some code to correct it.
Explanation:
[' ';flip(diag(s(1:x))')]'        %left side
[' ';diag(s(n:-1:n-x+2))]         %right side
s(x+1:n-x+1)                      %bottom side

Try it online!

Java 11, 213 211 178 bytes
s->{int n=s.length()/4,i=1;var r=" ".repeat(n)+s.charAt(0)+"\n";for(;i<n;r+=" ".repeat(n-i)+s.charAt(i)+" ".repeat(i*2-1)+s.charAt(n*4-i++)+"\n");return r+s.substring(i,n*2-~i);}

-2 bytes thanks to @ceilingcat.
Explanation:
Try it online.
s->{                               // Method with String parameter and String return-type
  int n=s.length()/4,              //  The length of the input divided by 4
      i=1;                         //  And an index-integer, starting at 1
  var r=                           //  Result-String which starts as:
        " ".repeat(n)              //   Leading spaces
        +s.charAt(0)               //   + the first character
        +"\n";                     //   + a new-line
  for(;i<n;                        //  Loop `i` in the range [1, `n`):
      r+=                          //   And append the result-String with:
         " ".repeat(n-i)           //    Leading spaces
         +s.charAt(i)              //    + the character of the left diagonal line
         +" ".repeat(i*2-1)        //    + center spaces
         +s.charAt(n*4-i++)        //    + the character of the right diagonal line
         +"\n");                   //    + a new-line
  return r                         //  Return the result-String
         +s.substring(i,n*2+i+1);} //   + the bottom part of the triangle

@ceilingcat Thanks, pretty stupid mistake, haha. I've been able to golf it some more by using Java 11's " ".repeat(n) and Java 10's var instead of that separated method and String.

PHP>=7.1, 122 Bytes
for(;$i*2<$w=strlen($a=$argn)/2;$e=$a[-++$i])echo str_pad(str_pad($a[$i],$i*2).$e,$w+1," ",2),"
";echo substr($a,$i,$w+1);

PHP Sandbox Online
PHP>=7.1, 124 Bytes
for(;$i*2<$w=strlen($a=$argn)/2;$e=$a[-++$i],$s.=$s?"  ":" ")echo str_pad("",$w/2-$i)."$a[$i]$s$e
";echo substr($a,$i,$w+1);

PHP Sandbox Online

AWK, 129 bytes
{n=split($0,a,"")
printf"%"(w=n/4+1)"s\n",a[++i]
for(;++i<w;)printf"%"(w-i+1)"s%"2*i-2"s\n",a[i],a[n-i+2]
$0=substr($0,i,i+w-1)}1

Try it online!
I should think this could be golfed a bit more, just not seeing it.

Retina, 99 bytes
^(.)(?=(....)+)
$#2$*  $1¶$#2$*
( ( *).)(.*)(.)$
$1 $4¶$2$3
+`(( +).¶ ( *).)(.*)(.)$
$1$2  $5¶$3$4

Try it online! Explanation: The first two stages generate the first two lines, but after that no special-casing is necessary and each subsequent line can be generated automatically:
thisrepresentationisnotatriangle

        t
       hisrepresentationisnotatriangle

        t
       h e
      isrepresentationisnotatriangl

        t
       h e
      i   l
     srepresentationisnotatriang

...

        t
       h e
      i   l
     s     g
    r       n
   e         a
  p           i
 r             r
esentationisnotat

Vyxal C, 29 bytes
4/÷ḣ‟+^ṘYṘ2ẇṘḣð£ƛ¥j¥ðd+£;J^JJ

Try it Online!
No canvas builtins! Because Vyxal doesn't have those. feature-request?
-9 thanks to Aaron Miller.

29 bytes

Perl 5, 76 bytes
74 bytes of code +2 for -F
say$"x($l=@F/4),shift@F;say$"x$l,shift@F,$"x($#i+=2),pop@F while--$l;say@F

Try it online!

05AB1E, 14 bytes
g4/>x<‚ĆI527SΛ

Try it online (no test suite since there isn't a way to clean the Canvas).
Explanation:
g         # Take the length of the (implicit) input
          #  i.e. "thisrepresentationisnotatriangle" → 32
 4/       # Divide it by 4
          #  i.e. 32 → 8
   >      # Increase it by 1
          #  i.e. 8 → 9
    x     # Double it (without popping the value itself)
          #  i.e. 9 → 9 and 18
     <    # Decrease this doubled value by 1
          #  i.e. 18 → 17
      ‚   # Pair them together: [length/4+1, (length/4+1)/2-1]
          #  i.e. 9 and 17 → [9,17]
       Ć  # Enclose it, appending its head to itself: [l/4+1, (l/4+1)/2-1, l/4+1]
          #   i.e. [9,17] → [9,17,9]
I         # Push the input-string again
527S      # Push 527 as digit-list: [5,2,7]
Λ         # Use the Canvas builtin with these three arguments
          # (after which the result is output implicitly)

Canvas explanation:
The Canvas builtin takes three arguments:
1. The lengths of the lines to 'draw', which in this case is the list \$[\frac{l}{4}+1, \frac{\left(\frac{l}{4}+1\right)}{2}-1, \frac{l}{4}+1]\$.
2. The string to 'draw', which in this case is the input.
3. The directions, which in this case is [5,2,7]. These will be the directions [↙,→,↖].
With these arguments, it will draw as follows (let's take the string "thisrepresentationisnotatriangle" as example again):
9 characters ("thisrepre") in direction 5 (↙)
        t
       h
      i
     s
    r
   e
  p
 r
e

17-1 characters ("sentationisnotat") in direction 2 (→):
        t
       h
      i
     s
    r
   e
  p
 r
esentationisnotatr

9-1 characters ("riangle") in direction 7 (↖):
(NOTE: "riangle" are only 7 characters instead of 8, since the string isn't any longer,
       which won't cause problems and is actually convenient for our desired output)
        t
       h e
      i   l
     s     g
    r       n
   e         a
  p           i
 r             r
esentationisnotat

See this 05AB1E tip of mine for a more in-depth explanation of the Canvas builtin.