z{}xxxx≥x≥x≥xXUqXxq≤qq≤q *R_IIRq q *R_I0II*IRqxXq≤qxqxq CR_0II÷Rq0*
Try it Here!
Note: whenever q
or output is referred to here, it doesn't pop as popping output (any of oOpP
) are unavailable or output a prepending newline.
Explanation (outdated, what's changed is that the "H" is printed using the alphabets letters):
$ push "$"
R_ convert to an array of ordinals, then push all the contents to the stack
0II push 0+1+1 = 2
* multiply by that
R convert to character
q output
z push the lowercase alphabet
{} iterate over it, pushing each char, and do nothing. Stack: ["H","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"]
stack manipulation:
xxxx ["H","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r"]
≥ ["r","H","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q"]
x ["r","H","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o"]
≥ ["o","r","H","a","b","c","d","e","f","g","h","i","j","k","l","m","n"]
x ["o","r","H","a","b","c","d","e","f","g","h","i","j","k","l"]
≥ ["l","o","r","H","a","b","c","d","e","f","g","h","i","j","k"]
xxx ["l","o","r","H","a","b","c","d","e"]
q output the "e"
≤ ["o","r","H","a","b","c","d","e","l"]
qq output the "l" twice
≤ ["r","H","a","b","c","d","e","l","o"]
q output the "o"
* push "*",
R_ convert to an array of ordinals, then push all to stack
II increase by 2
R convert back to character
q output
q push a space, then output
* push "*"
R_ convert to an array of ordinals, then push all to stack
I increase that
0II push 0+1+1 = 2
* multiply
I increase
Rq output as character
stack manipulation: (starting stack: ["r","H","a","b","c","d","e","l","o",","," ","W"])
x ["r","H","a","b","c","d","e","l","o",","]
X ["r","H","a","b","c","d","e","l","o"]
q output the "o"
≤ ["H","a","b","c","d","e","l","o","r"]
q output the "r"
x ["H","a","b","c","d","e","l"]
q output the "l"
x ["H","a","b","c","d"]
q output the "d"
C push "C"
R_ convert to ordinal as before
0II÷ floor divide by 2
Rq output as character
0* multiply by 0 so nothing extra would be outputted
Fun fact: all of the characters from the allowed characters are in SOGLs codepage :D