# 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, 2016 at 23:06
• Is ending up with a variable that contains just a also good enough ? Aug 19, 2016 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, 2016 at 0:05
• Why those particular characters? Aug 22, 2016 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, 2016 at 6:26

# Brian & Chuck, 7 bytes

B?
!<-.


Try it online!

code:

Brian:
B    constant B
?    switch to Chuck

Chuck:
<    go to B
-    decrement it
.    and print it


# Brain-Flak, 28 bytes

(((((()()()()){}){}){}){}())


Try it online!

code:

(((((()()()()){}){}){}){}()) push 65
implicitly print stack


## Wd, 2 bytes

∑Ƿ


## Explanation

Pretty much boils down to this after decompression:

'A


# Pip, 4 bytes

/O@z


Try it online!

### Explanation

   z  Lowercase alphabet
@   First character
O    Output without newline
/     Invert


That last (first?) instruction requires some more explanation:

By default, Pip prints the last expression in the program with a trailing newline. (This is why we couldn't do @z for 2 bytes, since the challenge states that newlines should be avoided if at all possible.) That's a problem because O@z, in addition to outputting a without a newline, is also an expression that evaluates to a. So O@z by itself would print aa plus a newline.

There are two ways to get rid of the extra output: First, we could output inside an if statement (5 bytes: IzO@z or other similar programs). Second, we could make the final expression in the program evaluate to nil. Nil produces no output when printed, not even the trailing newline. The usual way to suppress auto-printing is to end the program with u, a variable preset to nil. Unfortunately, u is banned. We could use the nil expression (), which would put us back at 5 bytes: O@z().

Enter the unary division operator /, which inverts its operand. In this case, if we invert O@z, the operand is the string a. Non-numeric strings evaluate to 0 in numeric contexts, which means we're dividing by 0. This gives nil, which suppresses the newline exactly as desired.

# Wren, 41 bytes

System.write(String.fromCodePoint(88-23))


Try it online!

• You're not allowed to use characters 6 and 5 :/ Dec 26, 2019 at 22:00
• 6 and 5 are disallowed because the asker knew someone would try this lol Dec 27, 2019 at 1:15

# Wenyan, 39 33 bytes (WIP language)

加陰以『』夫其之二書之


Update: Wenyan now supports 『』 in place of 「「」」 for quoting strings. (starting from v0.1.2)

Literally console.log((false+"")[2-1]) but not using any of +, a and 1

### Explanation

　　　　　　　　　書之          // console.log(               )
夫其之　　　          //             (        )[ -1]
陰　　　　　　　　　          //              false

『』　　　　　　          //                    ""
二　　          //                        2


Note: Indexing in Wenyan is 1-based.

• What might make this non-competing? Dec 31, 2019 at 16:19
• @pppery For being a language invented in December 2019. I have heard that such restriction is removed, but the challenge was posted in 2016 so I doubt whether the change is applicable here. Jan 2, 2020 at 4:50
• That rules change does in fact apply to challenges that predate it. Jan 2, 2020 at 12:33
• But 加陰以""夫其之2書之 is only 27 bytes.
– tsh
Jun 12, 2020 at 2:43

# Ruby, 16 bytes

$><<[*??..?B][2]  Get's the third element in the range from '?' to 'B', which is 'A'! ## Explanation $><<[*??..?B][2]

[*      ]     create an array containing the elements from
..        the inclusive range from
??          literal '?' character to
?B      literal 'B' character
this array is now ['?', '@', 'A', 'B']
[2]  get the 3rd element of this array ('A')
<<              append/write that to
$> standard output  Try it online! # Google Sheets/Excel (15 bytes) Assuming your localization is in English: =MID(2=3,2,2/2) Note: this will not work on LibreOffice because it will change FALSE to 0 instead of "FALSE". # MAWP, 5 bytes 88WM;  Creates ASCII code for $$\8*8+1(existing)=65\$$ and outputs it. Try it! # HTML5, 99 48 bytes <p id=e><script>e.innerHTML=${!2}[2]</script>


(old version)

<p id=e><script>this[doc${[!!2].join[2]}ment].getElementByIde.innerHTML=${!2}[2]</script>


Try it below:

<p id=e><script>e.innerHTML= ${!2}[2]</script> Deobfuscated (new version): <!DOCTYPE html> <html> <head></head> <body></body> <p id="paragraphID"></p> <script> // in JavaScript, when paired with HTML, any element with an id implicitly has the element with the id stored as a global variable, so you don't need to call document.getElementById or document.querySelector paragraphID.innerHTML = ' false'[2]; // JS is 0 indexed, so ' false'[2] is 'a' (there's a space before 'false') </script> <html>  Deobfuscated (old version): <!DOCTYPE html> <html> <head></head> <body></body> <p id="paragraphID"></p> <script> document.getElementById("paragraphID").innerHTML = ' false'[2]; // JS is 0 indexed, so ' false'[2] is 'a' (there's a space before 'false') </script> <html>  [!!2].join[2]  is [true].join("") is true.toString() is "true", and the 2nd index of "true" is u ${!2}[2]


This is " false" index 2, which with the space at the beginning is a (inspired by slebetman)

# Knight, 10 9 bytes

O G F T T


Try it online!

# print...
OUTPUT(
# extract a substring
# Specifically, the "a" from "false"
GET(
FALSE # coerces to "false"
TRUE # 1
TRUE # 1
)
)

• 1 byte to a massive dum moment, thanks MarcMush
• O G F T T seems to work too Jun 18, 2021 at 14:02
• Lmao I'm dumb.... Jun 18, 2021 at 14:02

# PICO-8, 16 bytes

?chr(ord("c")-2)


Moves back from C to get to A.

# PostScript, 7 bytes

<~@/~>=


Prints "a", which is written using Ascii85 encoding as @/.

# Brainfuck, 24 bytes

not as good as Dennis' anyones, but still posting it.

----[---->-<]>--[->-<]>.


## Perl6, 20

(?0).comb[3>2].print

• Also (88-23).chr.print (17 bytes, from the Ruby answer), but that's arguably degenerate.
– bb94
Aug 25, 2016 at 3:15

# Visual C++, 32 bytes

std::clog<<decltype('C')('C'-2);


or

std::clog<<decltype('C')(260>>2);


on the basis of @Karl Napf

dont know why it gets downvoted it clearly compiles on VisualC++2015 and outputs A on my Machine

• 1. The downvote was cast automatically by the Community user when you edited your answer. I consider this a bug. 2. I'm not fluent in C++, but this looks like a snippet. Submissions have to be full programs or functions (named or lambdas) by default. Aug 28, 2016 at 19:52

# Lolo, 30 bytes

loloLo lOLo lo LOlo LO lOlolol


The only way to make characters in Lolo is to get it's number representation and convert it into a character.
Here, I get 65 which gives me A.

# Pyth, 6 bytes

C-*TT3


Try It Online

Explanation

C         ASCII integer to character
-*TT3    (Ten*Ten)-3 (97)


# R, 12 bytes

LETTERS[2/2]


Pretty self-explanatory: LETTERS is all the upper case letters, and 2/2 evaluates to 1, so we get the the first element.

# PHP, 19 Bytes

<?=chr(ord('C')-2);


Get the ASCII value for C and take 2 off it. Doesn't need any special encoding and will work in PHP 4, 5 and 7

If you turn errors off you can reduce it to 17:

<?=chr(ord(C)-2);

• turning off errors is not necessary: omitting the quotes will yield a notice; those are not printed with default settings. Nov 11, 2016 at 14:30

## R, 12 bytes

letters[2/2] #12 bytes; rules followed!

I tried other ways of doing this, but they broke the rules :(

tail(rev(letters),n=2/2) #24 bytes; uses 'a'


# Forth, 19 bytes

Creates the number 65 (23*3-2-2), then outputs it as the character A.

23 3 * 2 - 2 - emit


Try it online

# SmileBASIC, 12 bytes

Self-explanatory.

?CHR$(88-23)  # SOGL V0.12, 2 bytes Κ‘  Try it Here! A simple compressed string of "A". Really it should be more than a byte (3 bits on saying that it's a character + ~6.5 bits = 8.5 bits = 1 1⁄16 bytes), but I got lucky. # Common Lisp, 33 bytes (elt(string(type-of 3/2))(- 3 2))  type-of 3/2 returns the symbol RATIO, string transforms it into a string, and finally elt gets the character at index 1 (i.e. A). Try it online! # AutoHotkey, 19 bytes Send % Chr(8-2 8-3)  This types a single character, A. It does so through AHK's surprising yet convenient implicit concatenation. Send tries to write a string. %tells it to use the value of an expression (Rather than just plaintext) Chr() converts a number to a character. 8-2 8-3 evaluates to 6 5 which evaluates to 65, the ASCII code for A. # UNBABTIZED, 18 bytes !0,88.(°0,23.:°0  !0,88. put 88 in cell 0 (°0.23. subtract 23 from cell 0 :°0 print cell 0 as character # VBA, 19 Bytes Anonymous VBE immediate window function that takes no input and outputs A to the VBE immediate window ?Chr(-(-32-32-3)-2)  # Recursiva, 4 bytes Y(L'  Try it online! # Explanation: Y(L' Y - From, Take n-th element 'A' ( - Upper-case alphabet 'ABC...Z' L - Length of i.e. 0 ' - empty string  ## PHP 21 or 67 Bytes Try it online Kinda cheating but implode on $_SERVER just leaves a on the 8th position

<?=join($_SERVER)[8];  Else Creating an array of letter strating at chr(88) and end it at chr(33) leaves an A at position 23 <?php$u=[];for($i=88;$i>33;$i--){$u[]=chr($i);}echo join($u)[23];