# The Letter A without A

Your task is to display the letter "A" alone, without anything else, except any form of trailing newlines if you cannot avoid them, doing so in a program and/or snippet. Code that returns (instead of printing) is allowed.

Both the lowercase and uppercase versions of the letter "A" are acceptable (that is, unicode U+0061 or unicode U+0041. Other character encodings that aren't Unicode are allowed, but either way, the resulting output of your code must be the latin letter "A", and not any lookalikes or homoglyphs)

You must not use any of the below characters in your code, regardless of the character encoding that you pick:

• "A", whether uppercase or lowercase.

• "U", whether lowercase or uppercase.

• X, whether uppercase or lowercase.

• +

• &

• #

• 0

• 1

• 4

• 5

• 6

• 7

• 9

Cheating, loopholes, etc, are not allowed.

Since this is , the shortest solution, in bytes, that follows all the rules, is the winner.

### Validity Checker

This Stack Snippet checks to make sure your code doesn't use the restricted characters. It might not work properly for some character encodings.

var t = prompt("Input your code.");

if (/[AaUuXx+&#0145679]/.test(t)) {
} else {
}

This Stack Snippet that makes sure you don't have a disallowed character is also available on JSFiddle.

var QUESTION_ID=90349,OVERRIDE_USER=58717;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="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});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;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>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}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr></thead> <tbody id="answers"> </tbody> </table> </div><div id="language-list"> <h2>Winners by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr></thead> <tbody id="languages"> </tbody> </table> </div><table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table>

• @ColdGolf You seem to be saying "yes" to functions, but functions don't display, they usually return.
– xnor
Aug 19 '16 at 23:06
• Is ending up with a variable that contains just a also good enough ? Aug 19 '16 at 23:17
• That's not what I meant. The supposed code doing a variable assignment would not contain any of the forbidden characters. I'm just trying to understand what is covered by "display by means other than printing". If "return from a function" is OK, what about "assign to a variable" ? Aug 20 '16 at 0:05
• Why those particular characters? Aug 22 '16 at 1:32
• @immibis A for obvious reasons. U for Unicode escape strings (\u0041 is A), X for hex escape strings (\x41), + for Unicode ordinals (U+0041), & for HTML entities, # for I actually don't know, 65 is the decimal ordinal of A, 41 is the hex ordinal of A, 97 is the decimal ordinal of a, and 0 for a few of the previous reasons.
– user45941
Aug 22 '16 at 6:26

## Straw, 6 bytes (non-competing)

Bæ}Æ>


Take the codepoint of B (Bæ), get the tail of the string (unary decrement) (}), take the character associated with the codepoint (Æ), and print it (>)

Try it online

PRINT CHR$(88-23)  Exploits the fact that the function which converts an integer to char is named CHR. # PowerShell, 89 59 32 Bytes: [Convert]::ToString((8-3)*2,8*2)  $d=2-2;[char][byte]"".insert($d,(3*3)-(2*2)).insert($d,2*3) $b=[string]::Concat(2*3);$c=[string]::Concat((3*3)-(2*2));[char][byte]$b.insert(2*2-3,$c) 

edit: use of a I see no way around this(not a golf language) It is possible...

• This is now fixed Oct 8 '16 at 17:47

# TI-Basic, 14 Bytes

:ClrHome
:Disp "Ans
:Output(1,2,"


Note the two trialing spaces at the end of line 3.

• TI-Basic has its own character encoding where many commands are 1 or 2-byte tokens. For example, ClrHome is a single byte. Ans is a single byte, so it does not violate the challenge rules.

## Cheat version, 3 bytes

:"a


In this code, use the a from the statistic menu: VARS > 5 > Right Arrow > Right Arrow > 2.

# Japt, 3 bytes

Any of these 3-byte programs work:

;Bg
;Cg
;Hd


Test it online!

### How it works

;      Set B to the uppercase alphabet,
C to the lowercase alphabet,
and H to 65, among other things.
Bg    Take the first char of B.
Hd    Take the character with charcode H.
Implicitly output.


Any of these 4-byte programs work as well:

;EgG
;EgI
;FgG
;FgH
°I d
IÄ d


# C, 20 24

Surprisingly, you can cast negative integers to characters in C and you will get ASCII characters. I ran a loop up to -10,000 and found a few values that produce the character "A". One of which was -8383 which uses no invalid characters. Another being -2239 which breaks the rule of using '9', however you can use a bit operation of ~2238 which becomes -2239.

The generation function for negative integers producing 'A', at least in C-GCC4.9.2, is 65-256*i ... The first few are -191, -447, -703, -959 (Note: this is the same as 'A'-(256*n))

f(){printf("%c",-8383);}

f(){printf("%c",~2238);}

f(){printf("%c",-'¿');} //¿ (2 bytes) is x00BF in unicode (or 191 in base10), -191 = A

Bonus: printf("%c",-'₿'); //negative bitcoin produces A because bitcoin symbol is x20BF which is base_10 is 8383, -8383 cast to char is 'A', but the bitcoin symbol is 3 bytes putting my score to 25 so this is my popularity contest answer, not my codegolf answer

Edit: I can't use putchar since it contains a "U" and an "A". I've updated the answer above to use printf and thus increased my code by 4 bytes from a score of 20 to 24

• Suggest L"𐁁" instead of "%c",-'¿' Mar 11 '19 at 3:48

# Java 7, 73 69 bytes

Golfed:

void m(){System.err.println(new Object().toString().split("")[3-2]);}


Ungolfed:

void m()
{
System.err.println(new Object().toString().split("")[3 - 2]);
}


Outputs a to the standard error.

• I don't use Java but would 'C'-2 work and save you a byte? Jan 26 '17 at 4:40
• no, but [3-2] would :P thanks. Why it wouldnt work? Because .split("") splits a string by character and stores it into a string. something like ["j", "a", "v", "a", ".", "l", "a", "n", "g", ...]. with [3 - 2] I get the second string in that array, which is a. Jan 26 '17 at 13:01
• Interesting, thanks for the explanation! +1, clever solution Jan 26 '17 at 19:49

# Chicken, 495 bytes

chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken


You have to copy and paste the code but you can try it online.

# Braingolf, 7 bytes

"C"2-@;


Try it online!

Screw you @totallyhuman :(

## Explanation

It subtracts 2 from C and prints.

# Braingolf, 12 bytes

Keeping this one because IMO it's the better answer, and took way more effort to do.

/..*3*<2*-@;


Try it online!

Man, this was hard.

## Explanation

/..*3*<2*-@;
/             Niladic division, push 5 [5]
..           Duplicate twice          [5,5,5]
*          Multiply last 2 items    [5,25]
3         Push 3                   [5,25,3]
*        Multiply by 3            [5,75]
<       Left-shift stack         [75,5]
2      Push 2                   [75,5,2]
*     Multiply last 2 items    [75,10]
-    Subtract last 2 items    [65]
@   Print as character, 65 is the ASCII value of A
;  Suppress implicit output


# Braingolf, 9 bytes

And here's a shorter one that still uses the "calculate 65" method

/82*3-*@;


Try it online!

## Explanation

Uses niladic division for 5, calculates 13 from (8 * 2) - 3, then multiplies 5 and 13 to make 65

# Braingolf, 11 bytes

And finally here's one that prints a lowercase a.

*v/2*c/3-@;


Try it online!

## Explanation

*v/2*c/3-@;
*            Niladic multiply, push 1000 [1000]
v           Switch to stack2            []
/          Niladic division, push 5    [5]
2*        Double                      [10]
c       Collapse stack into stack1  [1000,10]
/      Divide last 2 items         [100]
3-    Subtract 3                  [97]
@;  Print as ASCII and suppress implicit output
97 is the ASCII value of a

• :P - - - - - - - Jul 18 '17 at 16:19

# Woefully, 335 bytes

|||||||| |
||||||| |
|||||| |
||||| |
|||| |
||| |
|| |
| | --push5; A[5], B[]
| |
| |
| |
| |
| | -- dupeA2B; A[5], B[5]
|| |
||| |
|||| |
||||| |
|||||| |
||||||| | -- swap dec/ascii (set to ascii)
|||||| |
||||| |
|||| |
||| |
|| | --push3; A[5,3], B[5]
|| |
|| | --popA2B; A[5], B[5, 3]
||| |
||| |
||| |
||| |
||| | --multiply; A[15], B[5]
|||| |
|||| |
||||| |
|||| |
||| |
|| |
| | --push2; A[15, 2], B[5]
| |
| | --popA2B; A[15], B[5, 2]
|| |
|| |
|| |
|| | --sub; A[13], b[5]
| |
| |
| |
| |
| | --multiply; a[65], b[]
|| |
||| |
|||| |
||||| |
|||||| | --print; OUTPUT; "A"
|||||| | --no op ends program


Try it online!

I've added the explanation of each step at the end of the step.

# Pushy, 2 bytes

ZQ


Try it online!

Z          \ Push 0
Q         \ Index into 0-indexed uppercase alphabet, print result


# x86 MS-DOS, 10 bytes

b4 02 mov ah,0x2
b2 40 mov dl,0x40
fe c2 inc dl
cd 21 int 0x21
cd 20 int 0x20


## Try yourself

echo "B402B240FEC2CD21CD20" | xxd -r -p > TEST.COM


# Pascal (FPC), 26 bytes

begin write(pred('B'))end.


Try it online!

At first, I wanted to use standard 88-23 approach, but luckily, there is the pred() which returns previous element of an ordinal type (integers, characters and enumerated types).

# Kotlin, 7 bytes

{'C'-2}


This is a lambda that returns the Char A. Char overloads the minus operator. Since C is 2 characters after A in Unicode, 'C'-2 produces A.

Try it online!

# Java 8, 9 bytes

()->'C'-2


-31 (!) bytes thanks to ASCII-only!
Try it online!

How?
I'm not sure. Best guess is the result of the subtraction is implicitly cast to char because of the return type of the function.

• 34 Mar 11 '19 at 7:03
• 9 Mar 11 '19 at 7:11
• @ASCII-only I thought that returned an integer. I guess golfing at night is not the best idea ;) Thanks. Mar 11 '19 at 7:49
• 9 bytes excluding the semicolon btw Mar 11 '19 at 8:19
• @ASCII-only fixed, now time for sleep. Mar 11 '19 at 8:20

# Python - 20 bytes

print(chr(-~(8<<3)))


# IPython 7.11.1 - 19 bytes

print(__doc__[3^3])

• Submissions must be full programs or functions, snippets are not allowed. You would need to print this somehow. Jan 24 '20 at 15:06

# Whispers v2, 190* 108 bytes

> e
> 8
>> 2²
> e
> e
> e
> e
>> ≻3
> e
> e
> e
> e
> e
> e
> e
> e
> e
> e
> e
> e
> e
>> '8
>> Error 22


Try it online!

Outputs A to STDERR, which is an accepted method of output

*82 bytes saved by golfing formula from $$\65 = (3 - (-2)) - (-2 \times 3) \times (8 - (-2))\$$ to $$\65 = 8^2+1\$$

## How it works

Whispers is different to most languages, in that numbers (0123456789) don't always represent their numerical values. A Whispers program is a series of lines, each of which matches (at least) one of a series of regexes. All the regexes require a line to begin with either >  or >>  (note the space).

Lines that begin with >  are nilad lines, and return a constant value each time. on these lines, digits do represent their respective numerical values. For example, line 2 (> 8) returns the integer $$\8\$$.

However, lines beginning with >>  treat numbers as line references, rather than numerical values. This means that >> 2² doesn't actually return $$\2^2 = 4\$$. Rather, it retrieves the value on line 2 and returns its square. Execution works by starting on the last line, and getting values passed along through other lines, similar to a game of Chinese Whispers (hence the name).

Now, as we can't use any of 0145679, we have to construct either $$\65\$$ or $$\97\$$ using only $$\2\$$, $$\3\$$ and $$\8\$$. Furthermore, we can't refer to any lines aside from 2, 3, 8, 22, 23, etc. which is why we have so many lines that are just > e. These are all unexecuted, and just serve to pad the important lines to line numbers that we can use.

We use the formula $$\65 = 8^2 + 1\$$ in order to build $$\65\$$ (the char code of A). Luckily, Whispers has an increment command (≻), so we don't have to deal with addition or calculating the number $$\1\$$. So, we start execution on the last line:

>> Error 22


This calls line 22, outputs its value to STDERR, then exits. Line 22, directly above, is

>> '8


' is the to character command, equivalent to Python's chr builtin, so here, we take the value on line 8 and convert it to a Unicode character. Now, we can see lines 2, 3 and 8, in order:

> 8
>> 2²
>> ≻3


Kind of counter intuitively, these lines are executed in reverse order: first line 8 increments the value on line 3, then line 3 squares the value on line 2 i.e. $$\8\$$. Ultimately, line 8 returns $$\8^2 + 1 = 65\$$ which is then cast to character and outputted to STDERR.

# Python 3, 24 bytes

print(chr(88-23),end='')


Prints an uppercase A without a newline.

# Python 2, 16 bytes (with newline)

print chr(88-23)


# Vyxal, 2 bytes

«∧


Try it Online!

Pushes 'a' as a compressed string, which is printed automatically.

# Factor, 12 bytes

[ "y""8"v- ]


Try it online!

## Befunge 93, 7 bytes

"C"2-,@


Pretty simple.

# ECMAScript 6, 41 5955 bytes

### Golfed

This is the golfed version, which doesn't support the use strict pragma. If you want to allow this to be compatible with it, simply replace s=(2-2>(3-2) with var s=(2-2)>(3-2).

Version 3 of this replaced the old substring (that uses the disallowed character u) with slice, a byte-efficient version that fits these rules.

You can try this on JSFiddle or use the below Stack Snippet.

s=(2-2)>(3-2);console.log(s.toString().slice((3-2),2));

### Ungolfed

This version of golfed code (version 3) supports the use strict pragma and is 79 bytes.

You can try this on JSFiddle or use the below Stack Snippet.

"use strict";
var s = (2-2) > (3-2);
console.log(s.toString().slice((3-2), 2));

Technically, this doesn't follow the rules as it uses u and a (in use and var respectively), but it was needed to support use strict.

• console.log((3<2).toString().slice(3-2,2)) works too. Aug 20 '16 at 18:30
• @BartekChom, thanks. Will update main post. Aug 20 '16 at 19:51
• Why not console.log(String(!2)[~-2]) Aug 21 '16 at 6:59

# Ruby, 20 Bytes

print ("c".ord-2).chr


Subtracts 2 from the unicode-code from "c".

# C# Interactive (REPL), 21 bytes

(3<2).ToString()[3-2]


I really wonder how much smaller it can become in C# in a REPL environment.

• I don't think this is valid, since it's just a snippet. It has to be wrapped in a function, which would almost definitely need to have an A or a U in it somewhere. Aug 21 '16 at 4:15
• @DJMcMayhem I can't seem to see anything specifying that it must be wrapped in a function. I also noticed a few answers aren't even necessarily printing the result explicitly either. It's also worth mentioning that by using something like C# Interactive (built into Visual Studio 2015, it's possible to just add the snippet I have above and it will output the correct value ('a'). Meaning if PowerShell can get away without a explicit print equivalent, C# could too? Aug 21 '16 at 7:00
• I've asked about this here and have as such now specified that the solution is for C# Interactive (or any other REPL C# environment that might exist). Aug 21 '16 at 7:48

# Python 2, 16 bytes

print chr(88-23)


Simpler but longer (21 bytes):

print chr(ord('c')-2)


# Senva, 9 bytes 4 bytes

There is two ways to write this program, let's begin by the longest :

82.8--8-~


This stores 82 in the memory, substract 8, 8 again, 1, then display the memory as an ASCII char (65 is the ASCII code of A). The cell's value is 82 - 8 - 8 - 1 = 65.

The second way is a little bit pernicious :

B_-~


This converts the 'B' character to its ASCII char code, substract 1, and then display it as an ASCII char.

# C# Interactive (REPL), 12 bytes

Lower case:

$"_{3<2}"[2]  This works by getting the third character from the string _False. Upper case: $"{new{}.GetType()}"[8-3]


This creates an anonymous object and gets its type, which is always of the form <>f__AnonymousType0#9. It then turns this into a string and gets the 6th character.

Answers are given as C# Interactive to compete with the other C# answer, though they can easily be converted to a printing anonymous lambda by wrapping them with:

()=>System.Console.Write(...);


This adds 27 characters to each solution.

• Note the method to wrap the call could be an Action and be displayed as: ()=>System.Console.Write(...);, Note the System. and ending ;. Aug 22 '16 at 10:06
• The problem with that is that you can't declare an Action without an explicit cast. Which you can't do, because the 'A' in 'Action' is disallowed. Aug 22 '16 at 10:29
• You don't need to declare the Action as the action by itself is fine i.e ()=>... Aug 22 '16 at 10:33
• Had a look and it does seem like anonymous lambdas are allowed. I've changed the answer accordingly. Aug 22 '16 at 10:59

## 3d, 7 bytes

Don't know if competing, but still, here it is.
Program:

>'b.-!;


Output:

a


Explanation:

>        Set direction of the IP
'b      Push Unicode ordinal of character 'b'
.     Push digit 1
-    Push difference
!   Print as Unicode character
;  End of program


# Javascript, 32 bytes

Uppercase A:

String.fromCodePoint(33*2-(3-2))

• “Your task is to print/display” – Your code is just a snippet generating the value. Aug 24 '16 at 7:01

## MSX-BASIC, 25 bytes

?CHR\$(3*3*3*2-(-3-3-3-2))