47
\$\begingroup\$

Here is a simple challenge for you: You must produce this ASCII representation of a chess board. White is represented by uppercase characters, and black is represented by lowercase. Empty tiles are represented by a .. Here is the full board:

rnbqkbnr
pppppppp
........
........
........
........
PPPPPPPP
RNBQKBNR

Since this is a question, you may not take any input and you must output this board by any default method, for example, saving a file, printing to STDOUT or returning from a function. You may optionally produce one trailing newline. Standard loopholes apply, and the shortest program in bytes!

However, remember this is equally as much a competition between submissions in the same language. While it's unlikely that a languages like Java could beat a language like perl, or a golfing language like pyth or cjam, having the shortest Java answer is still really impressive! To help you track the shortest answer in each language, you may use this leaderboard, which will show the shortest submission by language and overall.

Leaderboards

To make sure that your answer shows up, please start your answer with a headline, using the following Markdown template:

# Language Name, N bytes

where N is the size of your submission. If you improve your score, you can keep old scores in the headline, by striking them through. For instance:

# Ruby, <s>104</s> <s>101</s> 96 bytes

If there you want to include multiple numbers in your header (e.g. because your score is the sum of two files or you want to list interpreter flag penalties separately), make sure that the actual score is the last number in the header:

# Perl, 43 + 2 (-p flag) = 45 bytes

You can also make the language name a link which will then show up in the leaderboard snippet:

# [><>](http://esolangs.org/wiki/Fish), 121 bytes

var QUESTION_ID=95745,OVERRIDE_USER=31716;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\$
1
  • 2
    \$\begingroup\$ Surely an ASCII art chess board would have the full stop every other square? \$\endgroup\$ Commented Sep 9, 2019 at 9:55

101 Answers 101

3
\$\begingroup\$

x86-64 Machine Code, 81 bytes

57                   push        rdi  
48 BA 52 4E 42 4B 51 42 4E 52 mov         rdx,524E42514B424E52h
52                   push        rdx  
BA 50 50 50 50       mov         edx,50505050h  
52                   push        rdx  
89 54 24 04          mov         dword ptr [rsp+4],edx  
51                   push        rcx  
5A                   pop         rdx  
6A 30                push        30h  
59                   pop         rcx  
48 2B E1             sub         rsp,rcx  
54                   push        rsp  
5F                   pop         rdi  
B0 2E                mov         al,2Eh  
F3 AA                rep stos    byte ptr [rdi]  
0F 10 44 24 30       movups      xmm0,xmmword ptr [rsp+30h]  
0F 11 04 24          movups      xmmword ptr [rsp],xmm0  
54                   push        rsp  
52                   push        rdx  
56                   push        rsi  
5A                   pop         rdx  
5F                   pop         rdi  
5E                   pop         rsi  
B1 10                mov         cl,10h  

80 74 8C FF 20       xor         byte ptr [rsp+rcx*4-1],20h  
E2 F9                loop        addLoop (07FF66A5A13B8h)  
B1 08                mov         cl,8  
B0 0A                mov         al,0Ah  

48 A5                movs        qword ptr [rdi],qword ptr [rsi]
AA                   stos        byte ptr [rdi]  
E2 FB                loop        addLoop+0Bh (07FF66A5A13C3h)  
C6 07 00             mov         byte ptr [rdi],0  
48 83 C4 40          add         rsp,40h  
48 8B F2             mov         rsi,rdx  
5F                   pop         rdi  
C3                   ret  

Create using abuse of push/pop instructions. Could probably save a few bytes by using Linux calling conventions. Outputs to a pointer specified in the first parameter rcx.

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

Vyxal L, 17 bytes

«æ≠⁺tO«ƛ`p..`+Ḃ⇧+

Try it Online!

-1 thqnks to Aaron Miller.

«...«           # Compressed string `rnbqkbnr`
     ƛ          # Map...
      `p..`+    # Append `p..` to each
            Ḃ   # Duplicate, reverse
             ⇧+ # Uppercase the reversed copy and append
                # (L flag) vertical join (rotate 90°) at the end.
\$\endgroup\$
1
3
\$\begingroup\$

C (gcc), 71 70 bytes

I would be really surprised if someone could make this any shorter (seems impossible to me, but who knows?).

Edit: The cat has one-upped me again.

*c=L"湲煢扫牮瀊灰灰灰ੰ⸮⸮⸮⸮⸊⸮⸮⸮ਮ⸮⸮⸮⸮⸊⸮⸮⸮ਮ偐偐偐偐刊䉎䭑乂ꁒ";main(){for(;printf(c++););}

Try it online (with explanation)

Explanation:

// The full output stored as wide characters.
// Each wide character stores 2 ASCII characters (represented as U+XXYY).
// For example, to store "rn" take the ASCII values (r => 0x72, n => 0x6E) and
// find the character U+6E72. Notice the order is reversed. I assume this is
// because x86 is little-endian.
*c=L"湲煢扫牮瀊灰灰灰ੰ⸮⸮⸮⸮⸊⸮⸮⸮ਮ⸮⸮⸮⸮⸊⸮⸮⸮ਮ偐偐偐偐刊䉎䭑乂ꁒ";
main(){
    // printf() returns the number of characters printed. When 'c' contains
    // '\0' at the end of the string, printf() will return 0. Resulting in
    // the loop terminating.
    for(;printf(c++););
}
\$\endgroup\$
0
2
\$\begingroup\$

IBM/Lotus Notes Formula, 69 bytes

A:="rnbqkbnr";B:="pppppppp";C:="........";A:B:C:C:C:C:@Uppercase(B:A)

Formula in a multi-value field with newline as the seperator.

Output:

enter image description here

\$\endgroup\$
2
\$\begingroup\$

Batch, 105 bytes

@set e=@echo ........
@echo rnbqkbnr
@echo pppppppp
%e%
%e%
%e%
%e%
@echo PPPPPPPP
@echo RNBQKBNR

Batch is seriously verbose...

\$\endgroup\$
2
\$\begingroup\$

R, 75 bytes

Edit: Fixed a silly error and simply write out the uppercase part of the board now.

cat("rnbqkbnr\npppppppp\n",rep("........\n",4),"PPPPPPPP\nRNBQKBNR",sep="")
\$\endgroup\$
3
  • 1
    \$\begingroup\$ The black pieces come out wrong as this stands: the pawns should be in front of the other pieces. \$\endgroup\$
    – JDL
    Commented Oct 10, 2016 at 8:45
  • \$\begingroup\$ @JDL You're of course correct, thanks. Silly mistake when doing last second changes. \$\endgroup\$
    – Billywob
    Commented Oct 10, 2016 at 9:00
  • \$\begingroup\$ 71 using newlines instead of \n \$\endgroup\$
    – Giuseppe
    Commented Sep 10, 2019 at 13:50
2
\$\begingroup\$

///, 52 bytes

/:/........
/rnbqkbnr
pppppppp
::::PPPPPPPP
RNBQKBNR

Try it online!

\$\endgroup\$
2
\$\begingroup\$

J, 55 52 bytes

'.rnbkqpPQKBNR'{~(+-@|.)8 8$1 2 3 4 5 3 2 1,8 48#6 0

Test and intermediate steps

   '.rnbkqpPQKBNR'{~(+-@|.)8 8$1 2 3 4 5 3 2 1,8 48#6 0
rnbkqbnr
pppppppp
........
........
........
........
PPPPPPPP
RNBKQBNR
   8 48#6 0
6 6 6 6 6 6 6 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
   1 2 3 4 5 3 2 1,8 48#6 0
1 2 3 4 5 3 2 1 6 6 6 6 6 6 6 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
   8 8$1 2 3 4 5 3 2 1,8 48#6 0
1 2 3 4 5 3 2 1
6 6 6 6 6 6 6 6
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
   (+-@|.)8 8$1 2 3 4 5 3 2 1,8 48#6 0
 1  2  3  4  5  3  2  1
 6  6  6  6  6  6  6  6
 0  0  0  0  0  0  0  0
 0  0  0  0  0  0  0  0
 0  0  0  0  0  0  0  0
 0  0  0  0  0  0  0  0
_6 _6 _6 _6 _6 _6 _6 _6
_1 _2 _3 _4 _5 _3 _2 _1
   '.rnbkqpPQKBNR'{~(+-@|.)8 8$1 2 3 4 5 3 2 1,8 48#6 0
rnbkqbnr
pppppppp
........
........
........
........
PPPPPPPP
RNBKQBNR
\$\endgroup\$
2
\$\begingroup\$

Python 3, 64 bytes

Based off DLosc answer to Python 2 as on mine I could not improve.

print(*["rnbqkbnr","p"*8]+["."*8]*4+["P"*8,"RNBQKBNR"],sep="\n")

1 byte less compared to using "\n".join

print("\n".join(["rnbqkbnr","p"*8]+["."*8]*4+["P"*8,"RNBQKBNR"]))
\$\endgroup\$
2
\$\begingroup\$

q, 51 bytes

"\n"sv flip{x,"p...P","c"$("i"$x)-32}each"rnbqkbnr"
\$\endgroup\$
1
  • 1
    \$\begingroup\$ You can shave off a few bytes with upper, and each-right. Also the following prints to stdout rather than returning a string with newlines: -1 flip"p...P"{y,x,upper y}/:"rnbqkbnr";. 40 bytes. Nice solution though! \$\endgroup\$
    – mkst
    Commented Jul 19, 2017 at 16:18
2
\$\begingroup\$

Java 7, 103 99 89 bytes

String f(){return"rnbqkbnr\npppppppp\nxxxxPPPPPPPP\nRNBQKBNR".replace("x","........\n");}

10 bytes saved compared to hardcoded output thanks to @SLC's approach in his C# answer.

Try it here.

Output:

rnbqkbnr
pppppppp
........
........
........
........
PPPPPPPP
RNBQKBNR
\$\endgroup\$
2
  • \$\begingroup\$ What about this String f(){return"rnbqkbnr\npppppppp\n........\n........\n........\n........\nPPPPPPPP\nRNBQKBNR";}.This is 100 bytes. \$\endgroup\$
    – Numberknot
    Commented Oct 11, 2016 at 8:40
  • \$\begingroup\$ @Numberknot How boring.. but you're right, it is shorter. Btw, it's 99 bytes, not 100. \$\endgroup\$ Commented Oct 11, 2016 at 8:53
2
\$\begingroup\$

Vim, 35 bytes

4irnbqkbnr<cr><esc>ddVkr.kVrpkyG:g//m0<cr>gUGP 

 

4irnbqkbnr<cr><esc> # enter 4 lines, each containing the lowercase figures
dd                  # delete the empty line at the bottom
Vkr.                # replace the bottom two lines with '.'s
kVrp                # replace the next line up with 'p's
kyG                 # go up and copy all lines
:g//m0<cr>          # move the lines with periods to the top
                    # now instead of the black half of the board, we have the white half
gUG                 # change all characters upper case
P                   # paste what we had copied before (the black half) above the current line

The :g//m0 trick is copied from this answer by Lynn.

\$\endgroup\$
2
\$\begingroup\$

C#, 85 84 83 74 bytes

Edit: Accidentally had too many rows of blank spaces!

Edit: Freed an extra character and fixed the ordering (accidentally had it all reversed) many thanks to @KevinCruijssen

Edit: Reverted back to 83 cos I had the prawns on the wrong line

Edit: Thanks to @adrianmp who helped me shrink it further by omitting return

Using the same format as @adrianmp answer above:

x=>"rnbqkbnr\npppppppp\nxxxxRNBQKBNR\nPPPPPPPP".Replace("x","........\n");

Full program using the above function:

using System;

namespace DrawAnASCIIChessBoard
{
    class Program
    {
        static void Main(string[] args)
        {
            Func<object, string> f = 
                x=>"rnbqkbnr\npppppppp\nxxxxRNBQKBNR\nPPPPPPPP".Replace("x","........\n");
                    Console.WriteLine(f(1));
        }
    }
}
\$\endgroup\$
5
  • \$\begingroup\$ Hi, welcome to PPCG! Hmm, the order of your pieces seems incorrect with the one of OP. Btw, you can save 1 byte by removing the space between return ", so it becomes: x=>{return"rnbqkbnr\npppppppp\nxxxxPPPPPPPP\nRNBQKBNR".Replace("x","........\n");};. Nice answer, so +1 from me. And enjoy your stay here. :) \$\endgroup\$ Commented Oct 11, 2016 at 11:53
  • \$\begingroup\$ And thanks for your answer. I've ported the same approach to my Java 7 answer (of course crediting you), lowering the byte-count by 10. :) \$\endgroup\$ Commented Oct 11, 2016 at 12:01
  • \$\begingroup\$ I have improved it further \$\endgroup\$
    – NibblyPig
    Commented Oct 11, 2016 at 12:10
  • \$\begingroup\$ Gah I just realised that's not right \$\endgroup\$
    – NibblyPig
    Commented Oct 11, 2016 at 12:13
  • 1
    \$\begingroup\$ Nice approach! You can actually reduce it to 74 bytes: x=>"rnbqkbnr\npppppppp\nxxxxRNBQKBNR\nPPPPPPPP".Replace("x","........\n"); \$\endgroup\$
    – adrianmp
    Commented Oct 11, 2016 at 12:23
2
\$\begingroup\$

Gloo, 46 Bytes

Gloo is a very, erm, young language with very little stack manipulation implemented. I think this is probably the best I can do since there's also no uppercase function. The raw bytes are below, and can be run from the interpreter using gloo.py -f <file>.

Offset   00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
000000   22 72 6E 62 71 6B 62 6E 72 0A 22 22 70 22 38 2A   "rnbqkbnr.""p"8*
000010   22 0A 22 22 2E 22 38 2A 22 0A 22 2B 34 2A 22 50   ".""."8*"."+4*"P
000020   22 38 2A 22 0A 52 4E 42 51 4B 42 4E 52 22         "8*".RNBQKBNR"

This doesn't count because it was updated after the challenge started, but now there's an easy 32 byte solution:

"rnbqkbnr"'p8*[_?¶Ä'.4*‘8*’;[¶jj

Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

00000000  22 72 6E 62 71 6B 62 6E 72 22 27 70 38 2A 5B 5F  "rnbqkbnr"'p8*[_
00000010  3F B6 C4 27 2E 34 2A 91 38 2A 92 3B 5B B6 6A 6A  ?¶Ä'.4*‘8*’;[¶jj
\$\endgroup\$
2
\$\begingroup\$

C, 113 92 bytes

main(){printf("rnbqkbnr\npppppppp\n%s%1$s%1$s%1$s%1$s%1$sPPPPPPPP\nRNBQKBNR","........\n");}

This makes use of the %1$s parameter-position to repeat the empty lines. Sorry, Matthew Greci, I don't have any reputation here to comment on your solution (you could also have removed some whutespace to get yours down a bit.

Edit 1: Removed arguments (thanks Martin Ender), removed a few too many empty-square lines.

\$\endgroup\$
2
  • \$\begingroup\$ Welcome to PPCG! I don't think you actually need the arguments to main though? \$\endgroup\$ Commented Oct 11, 2016 at 18:54
  • \$\begingroup\$ I don't think you need main instead of just f, which is the only reason I beat you (that and you print two extra ........ lines) \$\endgroup\$
    – S.S. Anne
    Commented Feb 5, 2020 at 0:33
2
\$\begingroup\$

Python 3, 60 bytes

print('rnbqkbnr','p'*8,*['.'*8]*4,'P'*8,'RNBQKBNR',sep='\n')
\$\endgroup\$
2
  • \$\begingroup\$ I get an error with this: SyntaxError: only named arguments may follow *expression \$\endgroup\$
    – lbragile
    Commented Dec 1, 2019 at 2:21
  • \$\begingroup\$ What version of python are you using? This only works in python 3.x. \$\endgroup\$ Commented Dec 2, 2019 at 11:56
2
\$\begingroup\$

C, 97 bytes

char *e="........\n";main(){printf("rnbqkbnr\npppppppp\n%s%s%s%sPPPPPPPP\nRNBQKBNR\n",e,e,e,e);}
\$\endgroup\$
5
  • \$\begingroup\$ You do not need to specify the #include (at least for gcc), nor the return-type of main or the void parameter. This shaves quite a few chars: main(){char*e="........\n";printf("RNBKQBNR\nPPPPPPPP\n%s%s%s%spppppppp\nrnbkqbnr\n",e,e,e,e);} (100 bytes) \$\endgroup\$
    – tucuxi
    Commented Oct 11, 2016 at 10:31
  • \$\begingroup\$ Good to know for golfing thank you. \$\endgroup\$ Commented Oct 12, 2016 at 4:10
  • \$\begingroup\$ It's only 90 bytes like this e="........\n";main(){printf("rnbqkbnr\npppppppp\n%s%s%s%sPPPPPPPP\nRNBQKBNR\n",e,e,e,e); \$\endgroup\$
    – cleblanc
    Commented Oct 12, 2016 at 19:46
  • \$\begingroup\$ That code would not compile. Variable e needs a type (char *) and main is missing a } at the very end. But you are right that I could remove the "void" \$\endgroup\$ Commented Oct 13, 2016 at 23:46
  • \$\begingroup\$ I think I beat you. \$\endgroup\$
    – S.S. Anne
    Commented Feb 5, 2020 at 0:31
2
\$\begingroup\$

Python, 69 bytes

n='\n'
p,a='p'*8+n,'rnbqkbnr'+n
print a+p+('.'*8+n)*4+(p+a).upper()

There are two things that frustrate me with this code: the print and "upper". Wouldn't an up function be cool? Anyway, here's my first golf answer.

\$\endgroup\$
0
2
\$\begingroup\$

Common Lisp, 72 69 68 65 63 59 bytes

(format t"rnbqkbnr
~8@{p~}
~4@{~8@{.~}
~}~8{P~}
RNBQKBNR"1)

Ideas for improvement are welcomed.

\$\endgroup\$
2
\$\begingroup\$

Perl, 58 Bytes

say for map/../?$_:$_ x8,qw(rnbqkbnr p . . . . P RNBQKBNR)

Run like this:

perl -E'say for map/../?$_:$_ x8,qw(rnbqkbnr p . . . . P RNBQKBNR)'

For each elem in the list (qw), print (say) the element if its length is two (or more) or print the element eight times if just length of one.

\$\endgroup\$
2
\$\begingroup\$

Japt, 23 bytes

`rnbqkbnr`y+"p.."
y_+Ôu

Test it

`rnbqkbnr`           //String "rnbqkbnr"
          y          //Map each column
           +"p.."    //  and add "p.." to the column
                     //Save to variable 'U'
y_                   //Map each column again
   Ôu                //Reversed, then converted to uppercase
  +                  //Append that
\$\endgroup\$
2
\$\begingroup\$

C (gcc), 81 bytes

f(){printf("rnbqkbnr\npppppppp\n%s%1$s%1$s%1$sPPPPPPPP\nRNBQKBNR","........\n");}

I'd try reusing more but that wouldn't beat the naive solution because there's no easy upper() or lower() functions.

Try it online!

C (gcc), 92 bytes

f(){puts("rnbqkbnr\npppppppp\n........\n........\n........\n........\nPPPPPPPP\nRNBQKBNR");}

When not overthinking it, this is the best solution.

Try it online!

\$\endgroup\$
1
  • \$\begingroup\$ Your to-the-point 92 byte version could be 89: Try it online. \$\endgroup\$ Commented Feb 25, 2020 at 14:29
2
\$\begingroup\$

Python 3.8, 64 bytes

I've just started code-golfing, so I'm not very good at it. This is what I got.

print('rnbqkbnr\n'+'p'*8+('\n'+'.'*8)*4+'\n'+'P'*8+'\nRNBQKBNR')

Try it online

\$\endgroup\$
2
\$\begingroup\$

StupidStackLanguage, 159 bytes

avvqimqvdflfqwwddflqiiifqwdfbblfbflfavvflddfffffffflfqvvvvvvvifffffffflflfffffffflflfffffffflflfffffffflflvvvvvvvdfffffffflfliifqwifqwwddfbldfldddfwwifvviifbif

Try it online!

Note: Due to StupidStackLanguage not being on tio.run, I have linked the python interpreter with the program loaded in. Close the header and footer tabs to hide the interpreter and only show the StupidStackLanguage program & output.

\$\endgroup\$
2
\$\begingroup\$

Python, 70 60 bytes

print("rnbqkbnr","p"*8,*["."*8]*4,"P"*8,"RNBQKBNR",sep='\n')

Also if someone could explain to me why this doesn't work, I'd appreciate it!

map(print,["rnbqkbnr","p"*8,*["."*8]*4,"P"*8,"RNBQKBNR"])
\$\endgroup\$
2
  • \$\begingroup\$ Welcome to the site! Nice first answer. \$\endgroup\$ Commented Nov 27, 2020 at 19:28
  • \$\begingroup\$ The second program doesn't work because map is lazy in Python 3. \$\endgroup\$
    – xigoi
    Commented Aug 22, 2021 at 7:39
2
\$\begingroup\$

K (ngn/k), 28 26 bytes

-2 bytes from @ngn's improvements

|a,_|a:+"RNBQKBNR",\:"P.."

Try it online!

  • "RNBQKBNR",\:"P.." prepend each of "RNBQKBNR" to "P.."
  • a:+ tranpose this, storing in variable a. this generates the capitalized half of the chess board.
  • |a,_| append the lower-cased, reversed lines to the upper-cased lines. reverse again to put the lower-cased lines at the top and the upper-cased lines at the bottom
\$\endgroup\$
2
  • \$\begingroup\$ Oops, fixed (adding 1 byte). \$\endgroup\$
    – coltim
    Commented Sep 6, 2021 at 23:54
  • 1
    \$\begingroup\$ -2: |a,_|a:+"RNBQKBNR",\:"P.." \$\endgroup\$
    – ngn
    Commented Sep 7, 2021 at 18:33
2
\$\begingroup\$

POSIX Shell + Utilities, 58 bytes

printf rnbqkbnr%08d%32sPPPPPPPPRNBQKBNR|tr 0\  p.|fold -w8

Always nice to outdo a Bash-specific solution :)

$ cat cg; echo; wc -c cg
printf rnbqkbnr%08d%32sPPPPPPPPRNBQKBNR|tr 0\  p.|fold -w8
58 cg
$ ./cg
rnbqkbnr
pppppppp
........
........
........
........
PPPPPPPP
RNBQKBNR
\$\endgroup\$
1
\$\begingroup\$

Japt, 37 bytes

[A="rnbqkbnr"B='pp8 C='.p8 CCCBu Au]·

I really oughta remake this language soon... Test it online!

How it works

[                                  ]  // Wrap all of the following in an array:
 A="rnbqkbnr"                         //   A = "rnbqkbnr",
             B='pp8                   //   B = 8 "p"s,
                    C='.p8            //   C = 8 periods,
                           CCC        //   3 more copies of C,
                              Bu      //   B.toUpperCase(),
                                 Au   //   and A.toUpperCase().
                                    · // Join everything with newlines and implicitly print.
\$\endgroup\$
1
1
\$\begingroup\$

Jolf, 32 bytes

pη++γͺ"rnbqkbnr"*8'p*²*8'.6ΜγdBH

I oughta remake this language soon... Try it here!

Bonus: all-ascii version:

pη++on~."rnbqkbnr"*8'p*~:*8'.6ΜndBH

Explanation

pη++γͺ"rnbqkbnr"*8'p*²*8'.6ΜγdBH
     ͺ                           pair
      "rnbqkbnr"                  this string
                *8'p              and 8 p's
    γ                            (call this γ)
   +                             add that with
                      *8'.        8 .'s
                     ²             wrapped in an array
                    *     6         repeated 6 times
  +                               add THAT with
                            Μγd    γ mapped over
                              BH   the uppercase version of H
pη                                and join all this with newlines
\$\endgroup\$
1
\$\begingroup\$

Bash, 73 bytes

e=........\\n
echo -e "rnbqkbnr\npppppppp\n$e$e$e${e}PPPPPPPP\nRNBQKBNR"
\$\endgroup\$
1

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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