72
\$\begingroup\$

Our task is to, for each letter of the (English) alphabet, write a program that prints the alphabet, in a language whose name starts with that letter.

Input: none

Output:

abcdefghijklmnopqrstuvwxyz

uppercase and trailing newline optional

Rules:

  • The scoring metric is the length of the programming language name, plus the length of the code. Hence, C will be assessed a "penalty" of 1, while GolfScript will be assessed a penalty of 10.
  • One language/implementation per answer. Multiple answers are encouraged.
  • If a programming language name's first letter is not an English letter, it should not be coerced into one. It will be treated as a separate letter (meaning less competition).
  • No answer will be accepted until every English letter has a solution.

Current rankings:

Tell me if I'm missing anybody.

Automatic leaderboard (experimental)

var QUESTION_ID=2078;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){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&&r.indexOf('non-competing')===-1&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],lang:/<a/.test(a[1])?jQuery(a[1]).text():a[1],link:s.share_link})}),e.sort(function(e,s){var d=e.lang[0].toLowerCase(),a=s.lang[0].toLowerCase();return(d>a)-(d<a)||e.size-s.size});var s={},a=null,n="A";e.forEach(function(e){n=e.lang[0].toUpperCase(),a=e.size;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+" is for").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.lang,p=o[0].toUpperCase();s[p]=s[p]||{language:e.language,lang:e.lang,letter:p,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.letter>s.letter)-(e.letter<s.letter)});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.language).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),jQuery("#languages").append(jQuery(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*(?:<[^>]+>)?(?:[^]+?for )?((?:<a[^>]*?>)?(?:(?! [(=→-])[^\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} /* font fix */ body {font-family: Arial,"Helvetica Neue",Helvetica,sans-serif;} /* #language-list x-pos fix */ #answer-list {margin-right: 200px;}
<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>Winners by Letter</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>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table> <h2>Everything</h2> <table class="answer-list"> <thead> <tr><td></td><td>Language</td><td>Author</td><td>Size</td></tr></thead> <tbody id="answers"> </tbody> </table> </div><div id="language-list"> <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\$
  • 1
    \$\begingroup\$ Are we allowed to print junk to stderr? \$\endgroup\$ – Peter Taylor Apr 18 '11 at 22:02
  • \$\begingroup\$ @Peter Taylor: Go nuts. To answer your question, yes, printing junk to stderr is fine (as long as stdout is correct). \$\endgroup\$ – Joey Adams Apr 18 '11 at 22:05
  • \$\begingroup\$ Is it OK to print the alphabet IN BIG LETTERS? \$\endgroup\$ – user8397947 Jun 21 '16 at 18:25
  • \$\begingroup\$ Funge is distinct from Befunge. Surely my pedanticism will be rewarded on a site dedicated to feats of it! \$\endgroup\$ – tngreene Mar 23 '17 at 19:53
  • 5
    \$\begingroup\$ Is *0*5AB1E the same as *o*sabie :P? \$\endgroup\$ – Magic Octopus Urn Jun 6 '19 at 14:58

143 Answers 143

1 2 3 4
5
0
\$\begingroup\$

P is for PowerShell, 15 bytes+10 = 25

-join('a'..'z')

Try it online!

Uses the character range feature added in 6.0 to improve upon past answers.

| improve this answer | |
\$\endgroup\$
0
\$\begingroup\$

Z is for Zsh, 19 characters -> Score: 22

19 character solution thanks to @GammaFunction.

<<<${(j::):-{a..z}}

Another 18 character solution using Perl.

perl -eprint\ a..z
| improve this answer | |
\$\endgroup\$
  • 1
    \$\begingroup\$ Not sure whether that would qualify for Zsh, it's more "Zsh+perl" (which would have a much larger penalty). You can get a pure Zsh answer in 19 characters, though: <<<${(j::):-{a..z}} \$\endgroup\$ – GammaFunction Sep 26 '19 at 9:05
0
\$\begingroup\$

F is for Forth (gforth), 26 + 5 = 31

'{ 'a [do] [i] emit [loop]

Try it online!

Two improvements over the submission by leancz 6 years ago:

  • An ASCII char prefixed with a quote gives the ASCII value of that char. So '{ saves a byte over 123. 'a is just for consistency.
  • The looping words including do and loop can't be used in interpreted mode, but gforth provides interpreted versions surrounded with brackets like [do] and [loop]. If a function uses three or less such words, using interpreted mode saves some bytes, as illustrated below.
\ using compiled mode
: a '{ 'a do i emit loop ; a
\ using interpreted mode
'{ 'a [do] [i] emit [loop]
| improve this answer | |
\$\endgroup\$
0
\$\begingroup\$

Jelly, 2 bytes, score: 7

Jelly has a built-in.

Øa

Try it online!

| improve this answer | |
\$\endgroup\$
0
\$\begingroup\$

Pyth, 1 byte, score: 5

Pyth has a shorter built-in than Jelly.

G

Try it online!

| improve this answer | |
\$\endgroup\$
0
\$\begingroup\$

Canvas, 1 byte, score: 7

Try it online!

| improve this answer | |
\$\endgroup\$
0
\$\begingroup\$

CJam, 7 bytes, score: 11

Learnt this language just for solving this problem.

'{,'a,-

Try it online!

| improve this answer | |
\$\endgroup\$
0
\$\begingroup\$

Stax, 2 bytes, score: 6

Also, Stax has a built-in.

Va

Try it online!

| improve this answer | |
\$\endgroup\$
0
\$\begingroup\$

Pip, 1 byte, score: 4

z

Try it online!

| improve this answer | |
\$\endgroup\$
0
\$\begingroup\$

Gaia, 2 bytes, score: 6

₵a

Try it online!

| improve this answer | |
\$\endgroup\$
0
\$\begingroup\$

MathGolf, 1 byte, score: 9

Try it online!

| improve this answer | |
\$\endgroup\$
0
\$\begingroup\$

V (vim), 3 bytes, score: 4

¬az

Try it online!

| improve this answer | |
\$\endgroup\$
0
\$\begingroup\$

Japt, 2 bytes, score: 6

;C

Try it online!

| improve this answer | |
\$\endgroup\$
0
\$\begingroup\$

05AB1E, 1 byte, score: 7

A

Try it online!

| improve this answer | |
\$\endgroup\$
0
\$\begingroup\$

Wren, 58 bytes

The iteration method

System.printAll((97..122).map{|i|String.fromCodePoint(i)})

Try it online!

Wren, 42 bytes

The boring method

System.print("abcdefghijklmnopqrstuvwxyz")

Try it online!

| improve this answer | |
\$\endgroup\$
0
\$\begingroup\$

M is for MAWP, 20 characters - Score: 24

[!43W8WM;1M!93WA?.%]

Explanation:

[        start of loop
!        duplicate top of stack
43W8W    push 96 to stack (4*3*8)
M        add 96 to number below
;        output top of stack as ASCII char
1M       add 1 to top of stack
!        duplicate top of stack
93W      push 27 to stack (9*3)
A        Difference of top two stack values
?.       is equal to zero, then terminate program
%        pop top of stack
]        end of loop
| improve this answer | |
\$\endgroup\$
0
\$\begingroup\$

Befunge-93, 33 bytes

I thought I could beat Brachylog... never mind.

"a">:,1+:"{"-#v_@
   ^          <

Try it online!

| improve this answer | |
\$\endgroup\$
0
\$\begingroup\$

F is for Foo, 17 bytes, score: 20

&65>&26(-1<$c+1>)

Try it online!

Ties the Fish answer.

| improve this answer | |
\$\endgroup\$
0
\$\begingroup\$

ink, 26 bytes, score: 29

Glad to hear that newer languages are allowed.

abcdefghijklmnopqrstuvwxyz

Try it online!

| improve this answer | |
\$\endgroup\$
0
\$\begingroup\$

Jsonnet (with -S), 37 characters, score: 44

std.repeat("%c",26)%std.range(97,122)

Sample run:

bash-5.0$ jsonnet -Se 'std.repeat("%c",26)%std.range(97,122)'
abcdefghijklmnopqrstuvwxyz
| improve this answer | |
\$\endgroup\$
0
\$\begingroup\$

Husk, 4 bytes → Score: 8

…"ab

Try it online!

| improve this answer | |
\$\endgroup\$
  • \$\begingroup\$ …"ab saves a byte. \$\endgroup\$ – Zgarb Jun 21 at 16:44
0
\$\begingroup\$

Ni, 13 bytes, score: 15

#61>#1a{<!+>}

Try (the snippet) online!

Explanation

#61           Set Current as 'a'
   >          Move the pointer right
    #1a       Set current as 26
       {      Repeat 26 times:
        <         Move left
         !        Print the letter
          +       Increment the letter
           >      Move right
            }     (Automatically decrement counter)
| improve this answer | |
\$\endgroup\$
0
\$\begingroup\$

W, 3 bytes (score: 4)

Near built-in solution, intended to beat Wake.

'zk

Explanation

'z   Push the character z
  k  Generate a downwards character range for that character.
| improve this answer | |
\$\endgroup\$
1 2 3 4
5

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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