69
\$\begingroup\$

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)) {
  alert("Contains a disallowed character!");
} else {
  alert("No disallowed characters");
}

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

Leaderboard

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>

\$\endgroup\$
  • 7
    \$\begingroup\$ @ColdGolf You seem to be saying "yes" to functions, but functions don't display, they usually return. \$\endgroup\$ – xnor Aug 19 '16 at 23:06
  • 2
    \$\begingroup\$ Is ending up with a variable that contains just a also good enough ? \$\endgroup\$ – Ton Hospel Aug 19 '16 at 23:17
  • 1
    \$\begingroup\$ 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" ? \$\endgroup\$ – Ton Hospel Aug 20 '16 at 0:05
  • 1
    \$\begingroup\$ Why those particular characters? \$\endgroup\$ – immibis Aug 22 '16 at 1:32
  • 7
    \$\begingroup\$ @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. \$\endgroup\$ – Mego Aug 22 '16 at 6:26

170 Answers 170

5
\$\begingroup\$

Mathematica, 16 bytes

First@WordList[]

WordList[] gives a list of common English words. First takes the first element of this list, which is "a".

\$\endgroup\$
  • \$\begingroup\$ Is WordList guaranteed not to change in a newer Mathematics update? \$\endgroup\$ – Buffer Over Read Aug 22 '16 at 20:23
  • 1
    \$\begingroup\$ @ColdGolf It doesn't matter if it's updated. As long as any version of the language (i.e. any given interpreter or compiler) correctly runs this code, the answer is valid as far as PPCG is concerned. Otherwise, no answer would be valid since we couldn't be sure that any answer would still work in any future update of any language, since the authors of those languages are free to make changes that break backwards-compatibility. \$\endgroup\$ – Martin Ender Aug 22 '16 at 21:44
  • 2
    \$\begingroup\$ @ColdGolf Wordlist is lexigraphically sorted. The only word that could come before "a" is "". \$\endgroup\$ – Taemyr Aug 24 '16 at 13:36
5
\$\begingroup\$

Cubix, 5 bytes

o'@)^

Try in the online interpreter!

Cubix is a language where (as the name implies) everything is executed on the faces of a cube. This code maps to the following cube:

  o
' @ ) ^
  .

The basic idea of this answer is to get a nearby character and increment it to what we need. In Cubix, @ is the exit command needed to terminate the program, but also conveniently right under 'A' in the ASCII table. This means we can use the character once to mean two different things, saving bytes - here's the order in which the code is run:

  • '@ pushes the character code 64 to the stack.
  • ) increments the top of stack, yielding the desired character.
  • ^ sends the instruction pointer north, wrapping around to...
  • o outputs the top of stack, A.
  • @ terminates the program.
\$\endgroup\$
  • 2
    \$\begingroup\$ Ha, awesome double use of @ :-) \$\endgroup\$ – ETHproductions Jan 18 '17 at 15:11
5
\$\begingroup\$

Sesos, 3 bytes

The code contains two unprintable characters, so here is a hexdump:

0000000: a85a0d                                            .Z.

Try it online! (Note that this uses the assembly code, which TIO converts to the binary above as an intermediate step. The binary is shown as a debug message.)

It is generated from this assembly program:

add 65
put
\$\endgroup\$
  • \$\begingroup\$ Could you elaborate on the unprintable characters part? \$\endgroup\$ – Buffer Over Read Aug 19 '16 at 22:55
  • \$\begingroup\$ @ColdGolf Binary Sesos isn't a character based language; it stores its source code in form of a little-endian base-256 integer. \$\endgroup\$ – Dennis Aug 19 '16 at 23:12
  • 2
    \$\begingroup\$ Hmm... I'd say the assembly code is the source code of that program and it uses "a" and "6", which are forbidden. Otherwise everybody might just compile their program to an x86 binary and voilà, no forbidden characters used! \$\endgroup\$ – YetiCGN Aug 19 '16 at 23:40
  • 4
    \$\begingroup\$ @YetiCGN Submitting binary programs is perfectly acceptable. \$\endgroup\$ – Dennis Aug 21 '16 at 6:39
  • 1
    \$\begingroup\$ @YetiCGN TIO doesn't support binaries right now. I've added a note to the link. \$\endgroup\$ – NinjaBearMonkey Aug 21 '16 at 22:09
4
\$\begingroup\$

Pure Bash, 23

r=({Y..b})
echo ${r[8]}

Creates this array and displays the 8th member:

Y Z [  ] ^ _ ` a b
\$\endgroup\$
4
\$\begingroup\$

Deadfish~, 8 bytes

iiisdsic

The only difference from regular Deadfish is that it uses c, which outputs the accumulator as a character instead of an integer.

Explanation

  • increment 3 times (3)
  • square (9)
  • decrement (8)
  • square (64)
  • increment (65)
  • Output as a character ("A")
\$\endgroup\$
4
\$\begingroup\$

Dyalog APL, 12 bytes

⊃⎕DR/88-8 23

Equivalent to 80⎕DR65

\$\endgroup\$
4
\$\begingroup\$

Labyrinth, 6 5 bytes

833.@

Explanation

833     # push 833 to stack
    .   # print modulo 256 as byte
     @  # exit

Try it online

Saved 1 byte thanks to Martin Ender.

\$\endgroup\$
  • 1
    \$\begingroup\$ Actually making use of that modulo: 833.@ \$\endgroup\$ – Martin Ender Aug 21 '16 at 12:57
  • \$\begingroup\$ @MartinEnder: Brilliant! \$\endgroup\$ – Emigna Aug 21 '16 at 17:41
4
\$\begingroup\$

Commodore 64 BASIC, 6 bytes

2?"♠"

There's a non-printing character after the first quotation mark, with byte value 14.

How this works: The Commodore 64 has two character sets: "shifted mode" (which contains the full upper- and lower-case alphabet, and the startup "unshifted mode", which contains the upper-case alphabet and a selection of symbols. The "spade" symbol in unshifted mode has the same byte value as uppercase "A" in shifted mode, so if you switch modes before printing out a "♠", you get the letter "A" instead.

The question now becomes: what's the most efficient way of switching modes? The "approved" method is POKE 53272,23, but that's rather long for code golf. There's a control character (byte value 14) that switches to shifted mode, but you can't type it in directly, and ?CHR$(14) is still rather long. Further, both of these contain disallowed characters, and working around that would expand them quite a bit.

You can cut it down to a single byte, though, by combining it with the code to print out the "A". The Commodore has no memory protection, so after typing in a proxy program (I used 2?"Q♠"), you can modify the in-memory representation to replace the "Q" with byte value 14. For a freshly-started C64, POKE 2055,14 will do the job.

\$\endgroup\$
4
\$\begingroup\$

Powershell v5, 13 12 11 bytes

"$(!2)"[$?]

Thanks to krontogiannis for saving me a byte.

Old 12 byte solution.

"$(!$?)"[$?]

Explanation:

"$(!$?)"[$?]
    $?        #returns the status of the last command, in this case, the call to this PS file
   !          #false operator
 $(   )       #runs the code in between () even while its in between ""
"      "      #converts to string
        [$?]  #returns index 1 (true) of the preceding string (1 is forbidden)

I don't have any earlier versions easily available to test on right now, but this should work back to v2 at least.

\$\endgroup\$
  • 1
    \$\begingroup\$ Take the False value using a simple constant: "$(!2)"[$?] (11 bytes) \$\endgroup\$ – krontogiannis Aug 29 '16 at 13:26
  • \$\begingroup\$ I posted this: [Convert]::ToString((8-3)*2,16) then scrolled through and was like daheck, does "$(!2)"[$?] actually work!? \$\endgroup\$ – Chad Baxter Oct 7 '16 at 0:39
4
\$\begingroup\$

R, 11 bytes

el(LETTERS)

el(LETTERS) is equivalent to LETTERS[[1]].

Try it online!

\$\endgroup\$
3
\$\begingroup\$

Jolf, 3 bytes

Fpl

Try it here!

First (F) of the lowercase alphabet (pl).


Are you tired of verifying your code manually? Use this!


Another one for three bytes:

~TS

This is the hexadecimal char code of a newline (0x0A)

\$\endgroup\$
3
\$\begingroup\$

Dyalog APL, 15 bytes

{⍵::2⌷⊃⎕DM⋄⍺}⍴⍬

The straightforward options are all banned: both ⎕AV (APL character set vector) and ⎕UCS (Unicode conversion) contain banned characters.

It gives one uppercase A:

      {⍵::2⌷⊃⎕DM⋄⍺}⍴⍬
A

Explanation:

  • {...}⍴⍬: pass 0 (length of empty vector) into the function
  • ⍵::: trap the error with code , which will be 0. A trap on 0 means to trap all errors.
  • 2⌷⊃⎕DM: the 2nd character of the first line of the error message
  • ⋄⍺: try to return the value of the left argument. There isn't one, so this will raise a VALUE ERROR, which the A is then extracted from.
\$\endgroup\$
3
\$\begingroup\$

PHP, 14 bytes

<?=chr(88-23);

88 - 23 = 65, the ASCII value of A. 8, 2, and 3 are the only legal digits to use, and - is allowed.

\$\endgroup\$
  • \$\begingroup\$ Wow, exactly 1k ! Should I upvote? \$\endgroup\$ – NoOneIsHere Aug 25 '16 at 16:01
  • \$\begingroup\$ @NoOneIsHere: Go ahead, or I'll never get past it :) \$\endgroup\$ – Business Cat Aug 25 '16 at 16:15
3
\$\begingroup\$

Java 9 jshell, 18 bytes

printf("%c",'C'-2)

jshell is a Java REPL that comes with Java 9.

\$\endgroup\$
3
\$\begingroup\$

Brachylog, 7 bytes

@P:33mw

Try it online!

Explanation

@P is the following string:

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

(the first character is a space)

And its 33rd element is the required letter A.

@P:33mw
@P        generate the string above
  :33     append the number 33, yielding ["...",33]
     m    pass the array as Input of m, and the
          required character becomes the Output
      w   recycles the right argument of the previous
          predicate as the left argument, and then
          prints to STDOUT
\$\endgroup\$
3
\$\begingroup\$

VBA, 12 bytes

?Chr(88-23);

in the VBA Immediate window.

\$\endgroup\$
  • \$\begingroup\$ You could remove ; to make it 11 bytes \$\endgroup\$ – Anastasiya-Romanova 秀 Aug 20 '16 at 22:03
  • \$\begingroup\$ @Anastasiya-Romanova秀 ...except the instructions say to avoid a linefeed if you can. \$\endgroup\$ – Joffan Aug 21 '16 at 2:53
3
\$\begingroup\$

Pyke, 2 bytes

Gh

Try it here!

Gh - alphabet[0]
\$\endgroup\$
3
\$\begingroup\$

reticular, 9 bytes

"C"c2-co;

Try it online!

This is basically C converted from a char to a char code, subtracting two, converting back to a char, printing it with o, then finally terminating it with ;.

\$\endgroup\$
3
\$\begingroup\$

Bash, 19 17 bytes

Prints lower-case a:

printf \\$[282/2]

(Thanks to Dennis for reminding me of the deprecated syntax)

\$\endgroup\$
3
\$\begingroup\$

Fission, 5 bytes

R'B_O

Try it online!

How it works

R      Spawn an atom that moves to the right.
 'B    Set the atom's mass to 'B'.
   _   Decrement the atom's mass.
    O  Print the character that corresponds to the atoms mass and destroy the atom.
\$\endgroup\$
3
\$\begingroup\$

Retina, 8 bytes

M`
T`O`L

Try it online!

Explanation

M`

This counts the number of matches of the empty regex in the empty input, so it produces a 1.

T`O`L

This is a transliteration which substitutes characters from the first set with corresponding characters from the second set. However, O and L are shorthands which expand to the odd digits and the upper case alphabet, respectively, so this replaces the 1 with A.

\$\endgroup\$
3
\$\begingroup\$

PHP, 12 bytes

<?=chr(833);

Due to an overflow the above produces an 'A' (see example 2 of the PHP doc).

\$\endgroup\$
3
\$\begingroup\$

Groovy, 12 bytes

print(--'B')

Makes use of the decrement operator overloading on Strings, per CharSequence.previous().

\$\endgroup\$
3
\$\begingroup\$

Mathematica, 27 25 bytes

Writes 10 in base 24. Half the length is one function name :(

IntegerString[2(8-3),3*8]

Thanks to Xavier for pointing out that the base doesn't have to be 16 (as in my original hexadecimal solution)!

\$\endgroup\$
  • \$\begingroup\$ What about First@WordList[]? \$\endgroup\$ – user48818 Aug 22 '16 at 16:21
  • \$\begingroup\$ @Xavier: Make that an answer and I'll upvote it! \$\endgroup\$ – Greg Martin Aug 22 '16 at 17:52
  • \$\begingroup\$ Done! A small gain for your approach: IntegerString[8 + 2, 3*3 + 2] :-) \$\endgroup\$ – user48818 Aug 22 '16 at 20:09
  • \$\begingroup\$ Unfortunately the mean OP doesn't let us use + in this challenge :) I upvoted your answer though! \$\endgroup\$ – Greg Martin Aug 23 '16 at 4:44
  • \$\begingroup\$ Ah yes, I have missed the + in the constraints. +1 as well! \$\endgroup\$ – user48818 Aug 23 '16 at 12:47
3
\$\begingroup\$

Python 3, 18 17 bytes

print(chr(88-23))

Prints the Unicode value 0x41 = 65 - credit SnoringFrog

Previous answers

print(str(int)[3])

Prints index 3 (the fourth character) of the string "<class 'int'>":

print(chr(33*3-2))

Prints the Unicode value 0x61 = 97

\$\endgroup\$
  • 1
    \$\begingroup\$ 88-23 saves one byte over 33*3-2 in the second example \$\endgroup\$ – SnoringFrog Aug 23 '16 at 14:29
  • 1
    \$\begingroup\$ @SnoringFrog - how did I miss it?! Thanks! \$\endgroup\$ – Jonathan Allan Aug 24 '16 at 8:52
3
\$\begingroup\$

R 3.2.2, 34 32 bytes

This is a tricky challenge in R, since the only function that will print without quotes and junk is cat, which contains an "a". We have to get it by indirect means. In a fresh R installation with no extra packages, the base package (in which cat resides) is the eighth in the search list (luckily 8 isn't prohibited!)

cat is the 297th thing in the base package, but 9 and 7 are prohibited. I think 322-23-2 is the most efficient way to calculate 297, but I may be wrong!

(Edit: I was wrong. Thanks to Albert Masclans for pointing out that 33*3*3 is more efficient. I also added the R version number since later versions of R will probably introduce more things into the base package.)

"a" is held in the first element of letters (alternatively, use LETTERS if you want "A") but since 1 is prohibited, we use 3-2 to get it.

    get(ls(8)[33*3*3])(letters[3-2])
\$\endgroup\$
  • 1
    \$\begingroup\$ I love how you did it. 297 = 3*3*33 \$\endgroup\$ – Masclins Aug 30 '16 at 10:55
3
\$\begingroup\$

Bash, 14 bytes

tr P-R @-B<<<Q

Output:

A
\$\endgroup\$
3
\$\begingroup\$

DC, 6 bytes

3BFFvP

...spits out an A and nothing else.

\$\endgroup\$
3
\$\begingroup\$

JavaScript ES6 ES5, 23 17 12

12 bytes

`${!3}`[3-2]

17 bytes: (typeof!3)[2- -3]

23 bytes: _=()=>(typeof!3)[2- -3]

Edit 05/10/2016: Took advantage of templating strings, as well as boolean coercion and string/array indexing... Also realized my previous code used +, I could always salvage 2+3 as 2- -3 at a cost of 2 bytes for each previous example... (Updated code and scores for previous submissions)

Edit 30/08/2016:

I took a different approach, exploiting the fat arrow functions as well as the typeof return type, which is a string. So converting a number to a boolean was easier then, had to encase it in parentheses before pulling the 5th element of the resulting string...

Seems that there was no mention of my answer requiring to be in the form of a function, so I've just stripped the fat arrow function declaration.

\$\endgroup\$
3
\$\begingroup\$

Vim, 6 bytes

grNg??

Challenge doesn't block N, and Vim has a ROT-13 feature. FDinoff's answer is probably cooler, but this is ASCII and works everywhere.

\$\endgroup\$

protected by Community Nov 11 '16 at 15:10

Thank you for your interest in this question. Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).

Would you like to answer one of these unanswered questions instead?

Not the answer you're looking for? Browse other questions tagged or ask your own question.