The ASCII character countdown!

Since this is a challenge, you might want to sort answers by oldest.

Your task is simple: Choose any printable ASCII character that's not chosen in the previous answers. And then, you need to print your chosen character in your program to standard output. (You can ONLY print your chosen character, without printing other garbage to STDOUT)

The catch

Let's say you picked x as your chosen character, and your answer is the answer numbered y. You have to insert y x's into the previous source code, at any position you like. For the first answer, the previous answer is the empty program.

An example

Answers have to start with the number 1. So for example, I chose the character #, and I posted a 1 byte answer in /// that prints the # mark.

#


And then, the second answer (numbered 2) has to insert 2 of their picked x character into the previous source code, such that the modified code will print their x character. So assume this is written in Keg:

x#x


And then, the third answer has to do the same, and so on, until 95 is reached.

I'd love to see an explanation of your code as well, preferably with an online interpreter link!

# [{Language name}]({link-to-language}), {code-length} bytes

$$\y= {The number of your answer}\$$. Used so far: <code>{Characters used in answers so far}</code>



The winning criterion & other rules

• The first user whose answer stays without a succeeding answer for a month wins the challenge. If that's not satisfied, the first person who reaches the number 95 wins the challenge.
• You are not allowed to put any other character in your code other than printable ASCII characters.
• You can answer in a language that is used in previous answers.
• You could only insert y x's into the source code.
• Your are not allowed to take input.
• Your program can output to STDERR, as long as the output to STDOUT is as intended.
• I suggest adding a requirement to add the text "$y=$<answer number> Used so far: <characters used so far in order>" below the standard header (I added this to the first answer to get it going). – Jonathan Allan Jul 24 at 13:30
• Can we output using our favourite language's natural output format? For R, this would be a variable containing the particular ASCII character. – Dominic van Essen Jul 24 at 14:24
• @DominicvanEssen You have to output through STDOUT, unless you mention an I/O default in which setting variables is acceptable. – user92069 Jul 24 at 14:26
• I posted an answer but I deleted 'cause I'm not sure it fits. The source code of the answer can only contain the previous chosen characters? e.g. I can only post print('a') if the characters p,r,i,n,t,(,',) were already chosen? – yyyyyyyan Jul 24 at 18:22
• @AdHocGarfHunter You can output to STDERR, as long as the output to STDOUT is correct. – user92069 Jul 27 at 2:18

2sable, 36 bytes

//9#999999//,#,#,221'/,#q',#q,qq2///


$$\y=8\$$. Used so far: 1'2q#,9/

Try it online.

Maybe this opens up some other languages that use // to comment. :)

Explanation:

2sable is an old version of 05AB1E (legacy) (which of itself is an old version of 05AB1E).

The legacy version outputs a leading newline however: try it online.
And the latest 05AB1E version outputs three leading newline: try it online.

//                                    # Divide twice, no-ops with an empty stack
9                                   # Push 9
#                                  # Pop and split it by spaces
# (since it contains no spaces, it only pops)
999999                            # Push 999999
/                           # Divide the empty stack by this, popping the integer
/                          # No-op divide again with an empty stack
,                         # No-op print (which would output a newline in the
#,#,                     # Some more no-ops
221                  # Push 221
'/               '# Push "/"
,               # Pop and print this "/" to STDOUT
#              # Split the 221 on spaces, so it just pops
q             # Exit the program
',#q,qq2/// '# No-ops

• But he waited 2 answers. He answered 5 and now 8. – yyyyyyyan Jul 24 at 18:30
• @yyyyyyyan thanks, apparently counting from 5 to 8 is too much for me. I probably need to leave the counting to my two-year-old. – Giuseppe Jul 24 at 20:02
• @Giuseppe yyyyyyyan is indeed correct, there are 2 answers in between. I actually already have a plan to add some more answers (if the two characters I need are still available by then) for when it's my turn again. ;) Although I'm going on vacation starting tomorrow for a week, and I'm not sure I have wifi (or whether I'm in the mood for codegolf) over there, so I doubt I'm able to add the two I had planned. – Kevin Cruijssen Jul 24 at 20:05

Polyglot, 3 bytes

1''


$$\y=2\$$. Used thus far: 1'.

This works in a bunch of stack-based languages, which basically all do the following:

1    # Push a 1 to the stack
''  # Push the string "'" to the stack
# (output the top of the stack implicitly as result)


Try it online in ,,,.
Try it online in 05AB1E.
Try it online in Japt.
etc.

Tip: Using a similar stack-based language, it's easy to insert almost any character by interleaving.

• It's possible?! – null Jul 25 at 3:34

05AB1E, 10 bytes

$$\y=4\$$. Used so far: 1'2q

221'q'qqq2


Try it online!

221         # push 221 to the stack
'q'q     # push character q (twice for good measure)
q    # quit; implicitly print top-of-stack q
q2  # no-ops


05AB1E, 15 bytes

###221'#q'#qqq2


$$\y=5\$$. Used thus far: 1'2q#

Try it online.

Maybe this opens up some other languages that use # to comment. :)

Explanation:

###              # Split by spaces three times (no-ops without input)
221           # Push integer 221
'#        '# Push character "#"
q        # Stop the program
# (after which the top of the stack is output implicitly as result)
'#qqq2 '# No-ops

• Thank-you from one of the '# to comment' language-users! – Dominic van Essen Jul 24 at 17:17
• @DominicvanEssen You're welcome. :) – Kevin Cruijssen Jul 24 at 17:35

Befunge-98, 45 bytes

$$\y=9\$$. Used so far: 1'2q#,9/j

//9#999999//j,#,#,221'j/,#qjjjjj'j,#jq,qq2///


Try it online!

Explanation

Mainly (ab)uses j to skip sections we don't want to execute.

//                                              # Divide twice (no-ops, as 0/0 is 0 in Befunge-98)
9                                             # Push 9
#9                                           # No-op (skipped by #)
99999                                      # Push more 9s
/                                     # Divide, results in 9/9 = 1
/                                    # Divide, results in 9/1 = 9
j                                   # Jump forward 9 instructions
,#,#,221'                          # (not executed)
j                         # Jump forward 9 instructions
/,#qjjjjj                # (not executed)
'j              # Push the character 'j'
,             # Print the character
#j           # No-op
q          # Quit program
,qq2///   # (not executed)


Trigger, 55 bytes

$$\y=10\$$. Used so far: 1'2q#,9/j\

\//9#9\99999//j,\\\#,#,221'j/\,#\\qjjjjj'j,#\jq,qq2/\//


Try it online!

This took a lot longer than I'm willing to admit...

• explanation is in the works... (I'll finish it in the morning) – Daniel H. Jul 25 at 2:22

Befunge-98, 21 bytes

#,#,#,221',#q',#q,qq2


$$\y=6\$$. Used so far: 1'2q#,

Try it online!

#                         # Skip the next instruction
,                        # (skipped)
#,                      # (skipped)
#,                    # (skipped)
221                 # Push 2, 2, 1 onto the stack
',               # Push character ','
#q             # (skipped by #)
',           # Push character ','
#q         # (skipped)
,        # Output character
q       # Quit program
q2     # (not executed)


R, 28 bytes

9#999999,#,#,221',#q',#q,qq2


$$\y=7\$$. Used so far: 1'2q#,9

Try it online!

Based on a combination of functions may output via their return values and the fact that R functions naturally output their return values to STDOUT (albeit with some prepended characters to indicate index of the outputed value), I hope that this is Ok.

Explanation:

9               # integer value 9; output by default
#              # comment character; everything after this (on the same line) is ignored
999999,#,#,221',#q',#q,qq2
# not run


Big thank-you to Kevin Cruijssen for putting the # character at the beginning of answer #5, which (as he suspected) was critical to make this answer work!

Befunge-98 (FBBI), 66 bytes

$$\y=11\$$. Used so far: 1'2q#,9/j\;

;\//9#9\99999//j,\\\#,#,221;';;j/\;,;#\\;qjjjjj'j,#\jq,qq2/\//;;;;


Try it online!

; is the comment character in Befunge, and this program works by running ';,q with inapplicable parts commented out. Doesn't work in Pyfunge for reasons I can't figure out.

Befunge-98, 253 bytes

$$\y=22\$$. Used so far: 1'2q#,9/j\;0"35s46%7*x

*7%7*77%*7*77%666666%x*77*7%*7*77%6*666666666655555555555555444444%***4%44*4*444444xxxx"033333%33333333s;s\/s/90*%35*s46#"9\s99%%9%90s9/"/j0s,\"\*0\"#s,#,22s01;"*'s"*;0;j/x\xxxx"s;xxx,0;%#x\"\;xxqsj*j"0j%%jj'j,#\"j%qs,q0q2/"\%s//s;0;%;;0"s77*77777xxxxxx


Try it online!

After running the part before the first x, the top of the stack is 6 0 (from the code 666%). Thus, the x instruction sets the program delta to (6, 0), meaning that the instruction pointer moves right 6 spaces every step. This skips over most of the remaining instructions, leaving %%66554*44"33s0s\9/,\,;*x",\q0'j0%0"7x to be executed. %%66544*44 does some stack manipulation, "33s0s\9/,\,;*x" pushes the string x*;,\,/9\s0s33, and , prints the first character of that string, which is x. Finally, \ swaps the top two elements of the stack (which we don't care about) and q ends the program.

Japt, 6 bytes

$$\y=3\$$ Used so far: 1'2

221''2


Test it

Explanation

The code is transpiled to 221, "'", 2 and Japt only implicitly prints the last expression so outputs 2

///, 1 byte

$$\y=1\$$ Used so far: 1

1


Try it online!

Just to start things off.

Explanation:

1     # since this isn't a / or \, the character is simply printed and removed.
# no characters left so the program terminates.


Keg, -hr, 78 bytes

$$\y=12\$$. Used so far: 1'2q#,9/j\;0

0;\//90#9\999909//j0,\\0\#,#,2201;';0;j/\;,0;#\\;qjj0jjj'j,#\jq,q0q2/\//;0;;;0


Try it online!

And this kids, is why we use languages where single digits auto push! This pushes a whole bunch of stuff, a 0, then prints the t.o.s using the -hr flag.

Trigger, 190 bytes

$$\y=19\$$. Used so far: 1'2q#,9/j\;0"35s46%

%%%666666%%%6666666666655555555555555444444%4%444444444"033333%33333333s;s\/s/90%35s46#"9\s99%%9%90s9/"/j0s,\"\0\"#s,#,22s01;"'s";0;j/\"s;,0;%#\"\;qsjj"0j%%jj'j,#\"j%qs,q0q2/"\%s//s;0;%;;0"s


Try it online!

Here's hoping using % makes a lot of languages a lot harder to use

• % is no issue for me. However starting your answer with 3 of the same character is. – Wheat Wizard Jul 25 at 15:39

Trigger, 276 bytes

$$\y=23\$$. Used so far: 1'2q#,9/j\;0"35s46%7*x@

@@@*@@@@@@@@7%7*77%*7*77%666666%@x*77*7%*7*7@7%6*@666666666655555555555555444444%*@**4%44*4*444444xx@xx"033333%33333333s;s\/s@/90*%35*s46#"9\s99%%9%90s9/"/j0s,\"\*0\"#s,#,22s01;"*'s"*;0;j/@x\xxxx"s;x@xx,0;%#x\"\;xxqsj*j"0j%%jj'j,#\"j%qs,q0q2/"\%s@//s;0;%;;0"s77*77777@xxxxxx@@


Try it online!

Hopefully @ makes even more languages harder to use.... looking at you Befunge-98

Trigger, 351 bytes

$$\y=26\$$. Used so far: 1'2q#,9/j\;0"35s46%7*x@f8.

...ffffffffff.ffffffffffffff.88888.88888.88888.8888.88@.@@*@@@@@@@@7.%7*77%*7*77%666666%@x*78.8.87*7%*7*.7@7%6*@66666666.6655555555555555444444%*@**4%44*4*444444xx@xx".033333%33333333s;s\/s@/90*%35*s46#".9\s99%%9%90s9/"/j0s,.\"\*0\"#s,#,22s01;"*'s"*;0;j/@x.\.xxxx"s;x@xx..,0;%#x\"\;xxqsj*j"0j%%jj'j,#\"j%qs,q0q28/"\%s@//s;0;%;;0"s.77*7.7777@xxxxxx@@..


Try it online!

We're out of digits now, that should make things a little more interesting. I think we've made every language other than Trigger unusable at this point...

HTML, 630 bytes

$$\y = 35\$$, Used so far: 1'2q#,9/j;0"35s46%7*x@f8.a&Hb=cd<

<<dddcccccccccccccccccccccccccccccdc==d=b=b=b=HH&&&a&&a&a&&.&&&&&&&&&&&&&&&&&&&&&aaaaaaaaaaaaaaaaaaaaaaaa..ffffffffff.ffffffffffffff.88888.88888.88888.8888.88@.@@*@@@@@@@@7.%7*77%*7*77%666666%@x*78.8.87*7%*7*.7@7%6*@66666666.66555555b55HHbHHHHHHHHHHHHHHHHHHHHHHHHHH555555444444%*@**4%44*4*444444xx@xx".==033333%33333333s;s\/s@/90*%35*s46#".9\s99%%9%90s9/"/j0s,.\ccdc"\*0\"#s,#,22s01;"*'s"*;0;j/@x.\.xxxx"s;x@xx..,0;%#x\"\;xxqsj*j"0j%%jj'j,#\"j%qs,q0q28/"\%s@//s;0;%;;0"s.77*7.========================7777@xxxxxx@@..bbbbbbbbbbbbbbbbbbbbbbbbbbdddddddddddddddddddddddddddd<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

Save as index.html and run with w3m -dump index.html, so it goes to stdout as expected.

<dd.... is an un-closed html tag, which rendered into nothing. So the first < character rendered as HTML content.

w3m is an old school browser which use text I/O to render HTML. As this question is requiring stdout output. I'm also surprised that w3m may successfully parse and render such a malformed HTML.

Keg, -hr, 105 bytes

$$\y=14\$$. Used so far: 1'2q#,9/j\;0"3

"03333333333333;\//903#"9\999909/"/j0,\"\0\"#,#,2201;"'";0;j/\";,0;#\"\;qjj"0jjj'j,#\"jq,q0q2/"\//;0;;;0"


Trigger, 231 bytes

$$\y=21\$$. Used so far: 1'2q#,9/j\;0"35s46%7*

*7%7*77%*7*77%666666%*77*7%*7*77%6*666666666655555555555555444444%***4%44*4*444444"033333%33333333s;s\/s/90*%35*s46#"9\s99%%9%90s9/"/j0s,\"\*0\"#s,#,22s01;"*'s"*;0;j/\"s;,0;%#\"\;qsj*j"0j%%jj'j,#\"j%qs,q0q2/"\%s//s;0;%;;0"s77*77777


Try it online!

This language is really weird. I got this working by pure luck after about an hour

Keg, -hr, 325 bytes

$$\y=25\$$. Used so far: 1'2q#,9/j\;0"35s46%7*x@f8

ffffffffffffffffffffffff888888888888888888888@@@*@@@@@@@@7%7*77%*7*77%666666%@x*78887*7%*7*7@7%6*@666666666655555555555555444444%*@**4%44*4*444444xx@xx"033333%33333333s;s\/s@/90*%35*s46#"9\s99%%9%90s9/"/j0s,\"\*0\"#s,#,22s01;"*'s"*;0;j/@x\xxxx"s;x@xx,0;%#x\"\;xxqsj*j"0j%%jj'j,#\"j%qs,q0q28/"\%s@//s;0;%;;0"s77*77777@xxxxxx@@


Try it online!

(no explanation because I have no idea how Keg works)

Stax, 91 bytes

$$\y=13\$$. Used so far: 1'2q#,9/j\;0"

"0;\//90#"9\999909/"/j0,\"\0\"#,#,2201;"'";0;j/\";,0;#\"\;qjj"0jjj'j,#\"jq,q0q2/"\//;0;;;0"


Try it online!

I know that OPs aren't intended to answer their own questions, but after seeing that nobody has the enthusiasm to add the quote character...

Keg, - hr, 171 bytes

$$\y=18\$$. Used so far: 1'2q#,9/j\;0"35s46

66666666666666666555555555555554444444444444444"03333333333333s;s\/s/9035s46#"9\s99990s9/"/j0s,\"\0\"#s,#,22s01;"'s";0;j/\"s;,0;#\"\;qsjj"0jjj'j,#\"jqs,q0q2/"\s//s;0;;;0"s


Try it online!

Keg-hr, 153 bytes

$$\y = 17\$$, Used so far: 1'2q#,9/j\;0"35s4

555555555555554444444444444444"03333333333333s;s\/s/9035s4#"9\s99990s9/"/j0s,\"\0\"#s,#,22s01;"'s";0;j/\"s;,0;#\"\;qsjj"0jjj'j,#\"jqs,q0q2/"\s//s;0;;;0"s


Try it online!

Stax, 136 bytes

$$\y = 16\$$, Used so far: 1'2q#,9/j\;0"35s

55555555555555"03333333333333s;s\/s/9035s#"9\s99990s9/"/j0s,\"\0\"#s,#,22s01;"'s";0;j/\"s;,0;#\"\;qsjj"0jjj'j,#\"jqs,q0q2/"\s//s;0;;;0"s


Try it online!

Octave, 210 bytes

$$\y=20\$$. Used so far: 1'2q#,9/j\;0"35s46%7

7%777%777%666666%777%777%6666666666655555555555555444444%4%444444444"033333%33333333s;s\/s/90%35s46#"9\s99%%9%90s9/"/j0s,\"\0\"#s,#,22s01;"'s";0;j/\"s;,0;%#\"\;qsjj"0j%%jj'j,#\"j%qs,q0q2/"\%s//s;0;%;;0"s7777777


Try it online!

Except for MATLAB/Octave, you mean?

Keg, -hd, 300 bytes

$$\y=24\$$ Used so far: 1'2q#,9/j\;0"35s46%7*x@f

ffffffffffffffffffffffff@@@*@@@@@@@@7%7*77%*7*77%666666%@x*77*7%*7*7@7%6*@666666666655555555555555444444%*@**4%44*4*444444xx@xx"033333%33333333s;s\/s@/90*%35*s46#"9\s99%%9%90s9/"/j0s,\"\*0\"#s,#,22s01;"*'s"*;0;j/@x\xxxx"s;x@xx,0;%#x\"\;xxqsj*j"0j%%jj'j,#\"j%qs,q0q2/"\%s@//s;0;%;;0"s77*77777@xxxxxx@@


Try it online!

Harder? It actually made it easier. @ starts a function in Keg, and because there aren't any closing ƒs (and there won't be because it ain't ascii), everything after the first @ is ignored. What a clanger!

Trigger, 378 bytes

$$\y = 27\$$, Used so far: 1'2q#,9/j\;0"35s46%7*x@f8.a

aaa.aaaaaaaaaaaaaaaaaaaaaaaa..ffffffffff.ffffffffffffff.88888.88888.88888.8888.88@.@@*@@@@@@@@7.%7*77%*7*77%666666%@x*78.8.87*7%*7*.7@7%6*@66666666.6655555555555555444444%*@**4%44*4*444444xx@xx".033333%33333333s;s\/s@/90*%35*s46#".9\s99%%9%90s9/"/j0s,.\"\*0\"#s,#,22s01;"*'s"*;0;j/@x.\.xxxx"s;x@xx..,0;%#x\"\;xxqsj*j"0j%%jj'j,#\"j%qs,q0q28/"\%s@//s;0;%;;0"s.77*7.7777@xxxxxx@@..


Try it online!

Keg, -rn, 406 bytes

$$\y=28\$$, 1'2q#,9/j;0"35s46%7*x@f8.a

aaa.aaaaaaaaaaaaaaaaaaaaaaaa..ffffffffff.ffffffffffffff.88888.88888.88888.8888.88@.@@*@@@@@@@@7.%7*77%*7*77%666666%@x*78.8.87*7%*7*.7@7%6*@66666666.6655555555555555444444%*@**4%44*4*444444xx@xx".033333%33333333s;s\/s@/90*%35*s46#".9\s99%%9%90s9/"/j0s,.\"\*0\"#s,#,22s01;"*'s"*;0;j/@x.\.xxxx"s;x@xx..,0;%#x\"\;xxqsj*j"0j%%jj'j,#\"j%qs,q0q28/"\%s@//s;0;%;;0"s.77*7.7777@xxxxxx@@..


Try it online!

Hehe. I used the power of strings to essentially make those .s nops.

Gol><>, 465 bytes

$$\y=30\$$, Used so far: 1'2q#,9/j;0"35s46%7*x@f8.a&H

HH&&&a&&a&a&&.&&&&&&&&&&&&&&&&&&&&&aaaaaaaaaaaaaaaaaaaaaaaa..ffffffffff.ffffffffffffff.88888.88888.88888.8888.88@.@@*@@@@@@@@7.%7*77%*7*77%666666%@x*78.8.87*7%*7*.7@7%6*@66666666.6655555555HHHHHHHHHHHHHHHHHHHHHHHHHHHH555555444444%*@**4%44*4*444444xx@xx".033333%33333333s;s\/s@/90*%35*s46#".9\s99%%9%90s9/"/j0s,.\"\*0\"#s,#,22s01;"*'s"*;0;j/@x.\.xxxx"s;x@xx..,0;%#x\"\;xxqsj*j"0j%%jj'j,#\"j%qs,q0q28/"\%s@//s;0;%;;0"s.77*7.7777@xxxxxx@@..


Try it online!

Explanation

   Push codepoint of next character:
H  'H'
H Halt, printing TOS as a character


Trigger, 496 bytes

$$\y=31\$$, Used so far: 1'2q#,9/j;0"35s46%7*x@f8.a&Hb

bbbHH&&&a&&a&a&&.&&&&&&&&&&&&&&&&&&&&&aaaaaaaaaaaaaaaaaaaaaaaa..ffffffffff.ffffffffffffff.88888.88888.88888.8888.88@.@@*@@@@@@@@7.%7*77%*7*77%666666%@x*78.8.87*7%*7*.7@7%6*@66666666.66555555b55HHbHHHHHHHHHHHHHHHHHHHHHHHHHH555555444444%*@**4%44*4*444444xx@xx".033333%33333333s;s\/s@/90*%35*s46#".9\s99%%9%90s9/"/j0s,.\"\*0\"#s,#,22s01;"*'s"*;0;j/@x.\.xxxx"s;x@xx..,0;%#x\"\;xxqsj*j"0j%%jj'j,#\"j%qs,q0q28/"\%s@//s;0;%;;0"s.77*7.7777@xxxxxx@@..bbbbbbbbbbbbbbbbbbbbbbbbbb
`

Try it online!