Намалюйте шахову дошку ASCII!


42

Ось вам простий виклик: ви повинні скласти це ASCII подання шахової дошки. Білий колір представлений великими літерами, а чорний - маленькими літерами. Порожні плитки представлені символом a .. Ось повний пансіон:

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

Оскільки це питання , ви не можете брати жодного вводу, і ви повинні вивести цю плату будь-яким методом за замовчуванням, наприклад, збереження файлу, друку в STDOUT або повернення з функції. Ви можете необов'язково створити один зворотний рядок. Застосовуються стандартні лазівки, а найкоротша програма в байтах!

Однак пам’ятайте, що це рівнозначна конкуренція між поданнями однією мовою. Хоча навряд чи такі мови, як Java, можуть перемогти таку мову, як perl, або мова для гольфу, як pyth чи cjam, найкоротший відповідь на Java все ще дуже вражає! Щоб допомогти вам відстежувати найкоротші відповіді на кожній мові, ви можете скористатись таблицею лідерів, яка покаже найкоротші подання за мовою та загалом.

Табло лідерів

Щоб переконатися, що ваша відповідь відображається, будь ласка, почніть свою відповідь із заголовка, використовуючи наступний шаблон Markdown:

# Language Name, N bytes

де Nрозмір вашого подання. Якщо ви покращите свій рахунок, ви можете зберегти старі бали у заголовку, прокресливши їх. Наприклад:

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

Якщо ви хочете включити у свій заголовок декілька чисел (наприклад, тому що ваш результат становить суму двох файлів або ви хочете окремо вказати штрафні санкції для перекладача), переконайтесь, що фактичний результат - це останнє число у заголовку:

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

Ви також можете зробити ім'я мови посиланням, яке потім з’явиться у фрагменті таблиць лідерів:

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


1
Напевно, ASCII artшахова дошка мала б повну зупинку на кожному другому квадраті?
Shaun Bebbers

Відповіді:


16

Желе , 25 24 байт

“.“.“p“rnbqkbn”ṁ€8µṚ;ŒuY

Спробуйте в Інтернеті!

Дякуємо @Lynn за те, що виграли 1 байт!

Як це працює

“.“.“p“rnbqkbn”ṁ€8µṚ;ŒuY  Main link. No arguments.

“.“.“p“rnbqkbn”           Yield [".", ".", "p", "rnbqkbnr"].
               ṁ€8        Mold-each 8; reshape each string like the array
                          [1, 2, 3, 4, 5, 6, 7, 8], i.e., cyclically repeat its
                          contents to create strings of length 8.
                          This yields the upper half of the board in reversed
                          order, i.e., the string array
                          A := "........", "........", "pppppppp", "rnbqkbnr"].
                  µ       Begin a new, monadic chain. Argument: A
                   Ṛ      Reverse A.
                     Œu   Convert all characters in A to uppercase.
                    ;     Concatenate the results to both sides.
                       Y  Join the strings, separating by linefeeds.

15

Vim, 26 байт

irnbqkbnr<Esc>Y6p5Vr.VrpYGPgUj

Покладається на свіжий Vim, інакше 5Vможе вибрати неправильну область.

  • irnbqkbnr<Esc>: Напишіть верхній рядок. Досить просто.
  • Y6p: Зробіть решта рядків, крім одного . Звичайно, всі, крім верхнього та нижнього рядків, містять неправильні символи.
  • 5Vr.: Якщо ви ще не використовували візуальний режим в сеансі, ви можете зробити такі речі, щоб вибрати 5 рядків. Якщо ви знову введете те саме, спробуйте вибрати 25 рядків. Вім такий дивний.
  • Vrp: Ми вже на лінії 2, тому давайте зробимо лінію пішаків.
  • YGP: Скопіюйте цю лінію пішака на своє місце внизу. Ось чому я використовував 6pзамість цього 7pраніше.
  • gUj: Великі літери білого кольору.

1
Найкраща мова для гольфу існує!
перестали повертати проти годинника

10

Brainfuck , 224 байти

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

На це пішло майже годину.


8

Python 2, 63 байти

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

На жаль, досить простий підхід був набагато коротшим, ніж "розумні" речі, які я спробував спочатку ...

Бонусна відповідь, також 63 байти:

print"\n".join(["rnbqkbnr"]+[c*8for c in"p....P"]+["RNBQKBNR"])

8

05AB1E , 24 байти

Використовує кодування CP-1252 .

"rnbqkbnr"'p8×'.8×D)Âu«»

Спробуйте в Інтернеті!

Пояснення

"rnbqkbnr"                # push the string "rnbqkbnr"
                          # STACK: "rnbqkbnr"
          'p8×            # push the char "p" repeated 8 times
                          # STACK: "rnbqkbnr", "pppppppp"
              '.8×        # push the char "." repeated 8 times
                          # STACK: "rnbqkbnr", "pppppppp", "........"
                  D       # duplicate
                          # STACK: "rnbqkbnr", "pppppppp", "........", "........"
                   )      # wrap in list
                          # STACK: ["rnbqkbnr", "pppppppp", "........", "........"]
                    Â     # push a reversed copy of the list
                          # STACK: ["rnbqkbnr", "pppppppp", "........", "........"], 
                                   ["........", "........", "pppppppp", "rnbqkbnr"]
                     u«   # convert to upper-case and concatenate
                          # STACK: ['rnbqkbnr', 'pppppppp', '........', '........', 
                                    '........', '........', 'PPPPPPPP', 'RNBQKBNR']
                       »  # join list by newline

1
Я думаю, що це ПЕРШИЙ раз, коли я коли-небудь гольфував відповідь, не дивлячись і відповідав тобі на 100% використаних символів. Треба погодитися, що це так добре, як це стає ха-ха.
Чарівний восьминога Урна

7

Власне , 26 байт

'p8*"rnbqkbnr"│û@û4'.8*n((

Спробуйте в Інтернеті!

Пояснення:

'p8*"rnbqkbnr"│û@û4'.8*n((
'p8*                        "p"*8 ["pppppppp"]
    "rnbqkbnr"              that string ["rnbqkbnr", "pppppppp"]
              │             duplicate stack ["rnbqkbnr", "pppppppp", "rnbqkbnr", "pppppppp"]
                û@û         uppercase the dupes ["RNBQKBNR", "PPPPPPPP", "rnbqkbnr", "pppppppp"]
               4   '.8*n    "."*8, 4 times ["RNBQKBNR", "PPPPPPPP", "........", "........", "........", "........", "rnbqkbnr", "pppppppp"]
                        ((  move the uppercase strings to the bottom of the stack, implicitly print

6

Чеддар, 56 байт

a=['rnbqkbnr','p'*8]+['.'*8]*2->(a+a.rev=>@.upper).vfuse

Використовує нову =>функцію.

Пояснення

a=                      // set a to the first half
  ['rnbqkbnr','p'*8] +  // First two rows
  ['.'*8]*2             // Next two dots
->(
   a +
   a.rev=>@.upper       // Reverse and map all items to uppercase
).vfuse                 // Join on newlines

5
Отже, ви відповіли на питання про "шахи" в "чес"?
DJMcMayhem

4
@DJMcMayhem .................. ти щойно .....
Пуховик

1
мм це гарний сир. приємне зловживання параметами за замовчуванням
Conor O'Brien

6

Пайк, 28 27 26 байт

"rnbqkbnr"i"P..p"1c8m*Xil3

Спробуйте тут!

Сьогодні я дізнався щось нове про свою мову: 1cможе бути використаний як двозначний спосіб поділу рядка на список символів.

"rnbqkbnr"i                - i = "rnbqkbnr"
                             stack = ["rnbqkbnr"])
           "P..p"1c        -  chunk("P..p", 1)
                             stack = ["rnbqkbnr", ["P", ".", ".", "p"]]
                   8m*     - map(8*>, ^)
                             stack = ["rnbqkbnr", ["PPPPPPPP", "........", "........", "pppppppp"]]
                      X    - splat(^)
                             stack = ["rnbqkbnr", "pppppppp", "........", "........", "PPPPPPPP"]
                       il3 - i.changecase()
                             stack = ["rnbqkbnr", "pppppppp", "........", "........", "PPPPPPPP", "RNBQKBNR"]
                           - implicit join with newlines

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

5

MATL , 26 байт

'rnbqkbnr' 'p..'!l8X"vtPXk

Спробуйте в Інтернеті!

Пояснення

'rnbqkbnr'   % Push this string (1×8 char array)
'p..'!       % Push this string transposed (3×1 char array)
l8X"         % Repeat 1×8 times: gives 3×8 char array
v            % Concatenate the two arrays vertically into a 4×8 char array
tP           % Duplicate and flip vertically
Xk           % Convert to uppercase. Implicitly display the two 4×8 arrays

5

Рубі, 45 44

Збережено 1 байт завдяки tuxcrafting.

puts"rnbqkbnr",?p*8,[?.*8]*4,?P*8,"RNBQKBNR"

Це 45

puts s="rnbqkbnr",?p*8,[?.*8]*4,?P*8,s.upcase

Якщо зробити щось розумнішим, то, здається, це довше.


Видаліть пробіл перед рядком післяputs
TuxCrafting

5

JavaScript (ES6), 69 65 байт

Збережено 4 байти завдяки edc65

let f =

_=>`rnbqkbnr
p....PRNBQKBNR`.replace(/p|\./ig,c=>c.repeat(8)+`
`)

console.log(f());


1
Дуже розумний! Можливо, занадто розумний, міг би врятувати 4 байти за допомогою 'rnbqkbnrnp....PRNBQKBNR'.replace(/p|\./ig,c=>c.repeat(8)+'\n')(перейти \nна буквальний новий рядок)
edc65

5

C #, 94 92 байт

Редагувати: Завдяки молоку збережено 1 байт, змінивши порядок рядків, щоб видалити пробіл, що повертається.

Редагувати: збережено ще 1 байт, додавши параметр манекена ( x замість () ) для анонімної функції та викликавши його будь-яким об’єктом.

x=>{string a="RNBQKBNR\n",b="PPPPPPPP\n",c="........\n";return(a+b).ToLower()+c+c+c+c+b+a;};

Повна програма з використанням вищевказаної функції:

using System;

namespace DrawAnASCIIChessBoard
{
    class Program
    {
        static void Main(string[] args)
        {
            Func<object,string>f= x=>{string a="RNBQKBNR\n",b="PPPPPPPP\n",c="........\n";return(a+b).ToLower()+c+c+c+c+b+a;};
            Console.WriteLine(f(1));
        }
    }
}

C # - дуже багатослівна мова ...


C # повна програма, 131 байт

class P{static void Main(){string a="rnbqkbnr\n",b="pppppppp\n",c="........\n";System.Console.Write(a+b+c+c+c+c+(b+a).ToUpper());}}

Безголівки:

class P
{
    static void Main()
    {
        string a="rnbqkbnr\n",
            b="pppppppp\n",
            c="........\n";
        System.Console.Write(a+b+c+c+c+c+(b+a).ToUpper());
    }
}

2
"C # - дуже багатослівна мова ...". Ви ще не пробували VB.NET тоді ...;)
TyCobb

2
Ви можете зберегти байт, визначивши aі bяк великі регістри, а потім зможете позбутися місця після return:return(a+b).ToLower()+...
молоко

@TyCobb Я намагався VB.NET досить давно. Я тоді ще не знав про код гольфу: P
adrianmp

ви можете використовувати varзамість string?
NibblyPig

@SLC я деякий час не програмував на C #, тому виправте мене, якщо я помиляюся, але я не думаю, що ви можете використовувати varз декількома деклараціями в одному рядку. Так string a="rnbqkbnr\n",b="pppppppp\n",c="........\n";стане var a="rnbqkbnr\n";var b="pppppppp\n";var c="........\n";, що збільшує кількість байтів. EDIT: Це дало б помилку " неявно набрана локальна змінна декларація не може включати кілька деклараторів " .
Kevin Cruijssen

4

Python 2, 68 байт

Публікація все одно, хоча вищевказана версія Python 2 коротша. Це не повинно бути одним вкладишем на кількість байтів, просто граючи з ним.

x,y,z="rnbqkbnr\n","p"*8+"\n","."*8+"\n";print x,y,4*z,(y+x).upper()

Оскільки zвикористовується лише один раз, ви можете позбутися від неї та створити крапки у звіті про друк.
Карл Напф

3

Haskell, 53 байти

a="rnbkqbnr" 
unlines$a:map(<$a)"p....P"++["RNBKQBNR"]

aвикористовується як перший рядок і для визначення довжини струн, виготовлених з p, .і P(-> <$a). .


3

JavaScript (ES6), 73

.toUpperCase просто занадто довгий

_=>`rnbqkbnr
${r=c=>c[0].repeat(8)+`
`,r`p`+(b=r`.`)+b+b+b+r`P`}RNBQKBNR`

O.textContent=(
  
_=>`rnbqkbnr
${r=c=>c[0].repeat(8)+`
`,r`p`+(b=r`.`)+b+b+b+r`P`}RNBQKBNR`

)()
<pre id=O></pre>


Я думаю , що (r=c=>c[0].repeat(8)+\ п ,b=r. )=>економить вам байт.
Ніл

@Neil Я не бачу економії. Я спробував переписати код, збільшивши читальність (трохи), але кількість байтів залишилася незмінною
edc65

Ах, я бачу, що я там зробив не так, я якось втратив новий рядок по дорозі. Вибач за те.
Ніл

3

PowerShell v2 +, 44 байти

'rnbqknbr'
'p'*8
,('.'*8)*4
'P'*8
'RNBQKNBR'

Рядки, залишені на конвеєрі, неявно друкуються Write-Outputпри виконанні програми. Ми поєднуємо це з поведінкою нового рядка за замовчуванням для масиву для створення чотирьох рядків періодів разом із оператором коми.

PS C:\Tools\Scripts\golfing> .\draw-ascii-chess-board.ps1
rnbqknbr
pppppppp
........
........
........
........
PPPPPPPP
RNBQKNBR

Де нові лінії в лініях точок? ", ('.' * 8) * 4" це саме "," Я гадаю ...
RosLuP

@RosLuP Коматор-оператор ,створює масив (у цьому випадку масив рядків). За замовчуванням Write-Outputпри завершенні програми вставляється нова лінія між елементами, що залишилися в конвеєрі, включаючи окремі елементи масиву. Отже, ми зловживаємо вихідною поведінкою за замовчуванням, щоб не потрібно писати явні нові рядки в код.
AdmBorkBork

3

V , 27 , 26 байт

i¸P
RNBQKBNRäkgujddppÒ.4Ä

Спробуйте в Інтернеті!

Він містить кілька недрукованих символів, тому ось читабельна версія:

i¸P
RNBQKBNR<esc>äkgujddppÒ.4Ä

де <esc>представляє 0x1B. Пояснення:

i                               " Enter insert mode
 ¸P                             " Enter 8 'P' characters
                                " and a newline
RNBQKBNR<esc>                   " Enter the first row and escape to normal mode.
             äk                 " Duplicate this line and the line above
               guj              " Convert this line, and the line below to lowercase
                  dd            " Delete this line
                    pp          " And paste it twice below us
                      Ò.        " Replace this whole line with '.' chars
                        4Ä      " And create four copies of this line

3

Емотінікон, 89 байт

На жаль, Emotinomicon не має нічого подібного до функції дублювання стека. Було б корисно. Але принаймні коротше Java. :)

😭RNBKQBNR
PPPPPPPP
........
........
........
........
pppppppp
rnbkqbnr😲⏪⏬⏩

Пояснення:

😭(...)😲⏪⏬⏩
😭(...)😲            String literal
         ⏪  ⏩      Loop
           ⏬        Pop one char and output

Гм ... це була б корисна функція, тепер не так ...
Conor O'Brien

Навіть програма сумна. 😭 = Сумно
A _

3

Мозг-Флак , 366 350 + 3 = 353 байти

Спробуйте в Інтернеті!

(((((((((((()()())){}(((({}))){}{}(([((({})){}){}](([({}())](((((({}()){}){}){}()){})<>))<>)<>)<>)))<<>({}<>)<>({}<>)<>({}<>)([]()())>[()]))))))))(()()()()){({}[()]<((((((((((((()()()()()){})()){}()){}))))))))>)}{}(((()()()()()){})<((((((((([][]()()()()))))))))<>)<>>)(((((()()()))){})(({}{})(([{}({})](([{}()](<>({}()())<>)<>)<>)<>)<>))){<>({}<>)}{}

Це отримує плюс 3, оскільки він вимагає, щоб -Aпрапор працював належним чином.

Пояснення

First we push the last 5 letters to the active stack.
We also push copies of last 3 numbers to the inactive stack.
This is done with fairly simple methods I won't go into for the sake of brevity.

 (((()()())){}(((({}))){}{}(([((({})){}){}](([({}())](((((({}()){}){}){}()){})<>)<><>)<>)<>)<>)))

We Move Everything from the offstack to the onstack.
The first 3 letters are the same as the last 3 letters in the first line

{<>({}<>)}{}

We push 10 for a new line

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

Using the value of Q we create a P and push it 8 times

((((((((<...>[()]))))))))

We loop 4 times each time pushing 8 dots and a newline

(()()()())
{({}[()]<
    ((((((((((((()()()()()){})()){}()){}))))))))
>)}{}

We push the last two lines in a very similar way to the first two.

(((()()()()()){})<((((((((([][]()()()()))))))))<>)<>>)(((()()()){})(({}()()())(([{}(()()())](([{}()](<>({}()())<>)<>)<>)<>)<>))){<>({}<>)}{}

Ви можете натиснути перші два рядки, за допомогою ((((((((((((((((((((()()()()()){}){}){}()){})[()()()()])[([][][]){}])[][][])[]()())[[][][]])[][])()()()())<([]()())>[()()]))))))))яких я думаю, що ви заощадите 16 байт. При цьому взагалі не використовується альтернативний стек, тому він, можливо, може бути ще коротшим.
DJMcMayhem

3

Python 3,5, 56 байт

for r in['rnbqkbn',*'p....P','RNBQKBN']:print((r*8)[:8])

Для цього використовується ідея zawata для кодування кожного рядка як (r*8)[:8], з рядком, повтореним 8 разів та обрізаним по довжині 8. Пішаки і порожні рядки є просто 'p'*8, '.'*8і 'P'*8, без обрізки. Перший ряд використовує'rnbqkbn' , ('rnbqkbn'*8)[:8]включаючи ще один грак праворуч, коли його множують та обрізають. Останній рядок такий же, але з великої літери.

Ми виражаємо список частин рядків компактно, ['rnbqkbn','p','.','.','.','.','P','RNBQKBN']використовуючи узагальнене розпакування Python 3.5 . Ми виписуємо перший і останній записи, а інші односимвольні розпаковуємо з рядка.

У Python 2 ми могли б вирішити splitзамість цього 60 байт:

for i in'rnbqkbn p . . . . P RNBQKBN'.split():print(i*8)[:8]

3

Пітон 3, 82 80 75 байт

Не найкоротша відповідь у python, але це моя перша, і я думаю, що це досить добре вперше

print('\n'.join((i*8)[:8]for i in'rnbqkbn p . . . . P RNBQKBN'.split()))

1
Ласкаво просимо на сайт! Ви можете зняти два байти, якщо видалите зайві пробіли. Наприклад[:8]for i in['rnbqkbn'....
DJMcMayhem

1
Хороша ідея з об'єднанням усіх ліній та повторним використанням повторень. Ви можете написати список коротше як 'rnbqkbn p . . . . P RNBQKBN'.split().
xnor

@DJMcMayhem не знав, що вони не потрібні. Дякую!
zawata

@xnor, це чудова ідея! я мушу додати цю хитрість до мого "арсеналу" ха-ха
завата

2

Пакетна, 105 байт

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

Пакет серйозно багатослівний ...


2

R, 75 байт

Редагувати: виправлена ​​дурна помилка та просто випишіть верхню частину дошки зараз.

cat("rnbqkbnr\npppppppp\n",rep("........\n",4),"PPPPPPPP\nRNBQKBNR",sep="")

1
Чорні шматки виходять неправильно, коли це стоїть: пішаки повинні бути перед іншими шматками.
JDL

@JDL Ви, звичайно, правильні, дякую. Нерозумна помилка під час зміни в останню секунду.
Billywob


2

Powershell, 82 73 байт

$x=("rnbqkbnr",$("p"*8),$("."*8),$("."*8));$x+$x[3..0].ToUpper()-join"`n"


@Veskah - як це працює? Я раніше цього не бачив *per, і Google не дає мені ніяких покажчиків. Маєте пояснення?
Кріс Дж.

Перевірте тут повну реєстрацію, але |% може викликати властивості / методи (із
символами

2

J, 55 52 байти

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

Тестові та проміжні кроки

   '.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

2

Python 3, 64 байти

Виходячи з відповіді DLosc на Python 2, як на моєму, я не зміг покращити.

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

На 1 байт менше в порівнянні з використанням "\ n" .join

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

2

q, 51 байт

"\n"sv flip{x,"p...P","c"$("i"$x)-32}each"rnbqkbnr"

Ви можете голити кілька байтів з верхніх і кожного правого. Також такі друкує на стандартний висновок , а не повертає рядок з символами нового рядка: -1 flip"p...P"{y,x,upper y}/:"rnbqkbnr";. 40 байт. Хороше рішення, хоча!
Стрітер

2

GNU sed, 54 байт

s:^:rnbqkbnr:p;h
s:.:p:gp;G
h;s:[^\n]:.:gp;G
s:.:\U&:g

Спробуйте в Інтернеті!

Пояснення:

Чорні шматки надрукуються першими, зберігаючи два пов'язаних ранги дошки у зворотному порядку на місці утримування. Білі шматки друкуються шляхом перетворення місця утримування на великі літери.

s:^:rnbqkbnr:p;h   # change pattern and hold spaces to 'rnbqkbnr' and print string
s:.:p:gp           # replace each pattern space letter with a 'p', then print
G;h                # append hold space, then copy pattern space to hold space
s:[^\n]:.:gp       # replace each pattern space letter with a '.', then print
G;s:.:\U&:g        # append hold space and convert pattern space to uppercase
                   # (automatic printing of pattern space at the end)

2

Java 7, 103 99 89 байт

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

10 байт збережено порівняно з жорстко кодованим результатом завдяки підходу @SLC у його відповіді C # .

Спробуйте тут.

Вихід:

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

Що з цим String f(){return"rnbqkbnr\npppppppp\n........\n........\n........\n........\nPPPPPPPP\nRNBQKBNR";}. Це 100 байт .
Numberknot

@Numberknot Як нудно .. але ти правий, він коротший. Btw, це 99 байт, а не 100.
Кевін Круїйсен

2

C #, 85 84 83 74 байт

Редагувати: Випадково було занадто багато рядків порожніх пробілів!

Редагувати: звільнив зайвий персонаж і виправив замовлення (випадково все це було відмінено) дякую @KevinCruijssen

Редагувати: Повернуто назад до 83, тому у мене креветки були неправильні

Редагувати: Завдяки @adrianmp, який допоміг мені зменшити його, пропустивши повернення

Використовуючи той самий формат, що і відповідь @adrianmp вище:

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

Повна програма з використанням вищевказаної функції:

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));
        }
    }
}

Привіт, Ласкаво просимо до PPCG! Гм, порядок ваших творів здається невірним із порядком з ОП. До речі, ви можете зберегти 1 байт, видаляючи простір між return ", тому вона стає: x=>{return"rnbqkbnr\npppppppp\nxxxxPPPPPPPP\nRNBQKBNR".Replace("x","........\n");};. Гарна відповідь, тому +1 від мене. І насолоджуйтесь перебуванням тут. :)
Кевін Кройсейсен

І дякую за вашу відповідь. Я відповів таким же підходом до моєї відповіді на Java 7 (звичайно, зараховуючи вас) , знизивши кількість байтів на 10. :)
Кевін Круїйсен

Я вдосконалив його далі
NibblyPig

Гах, я просто зрозумів, що це не так
NibblyPig

1
Гарний підхід! Ви можете насправді зменшити його до 74 байт:x=>"rnbqkbnr\npppppppp\nxxxxRNBQKBNR\nPPPPPPPP".Replace("x","........\n");
adrianmp
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.