Aqui está um desafio simples para você: Você deve produzir essa representação ASCII de um tabuleiro de xadrez. O branco é representado por caracteres maiúsculos e o preto é representado por letras minúsculas. Ladrilhos vazios são representados por a .
. Aqui está a pensão completa:
rnbqkbnr
pppppppp
........
........
........
........
PPPPPPPP
RNBQKBNR
Como essa é uma pergunta de complexidade kolmogorov , você não deve receber nenhuma entrada e deve enviar esta placa por qualquer método padrão, por exemplo, salvar um arquivo, imprimir em STDOUT ou retornar de uma função. Opcionalmente, você pode produzir uma nova linha à direita. Aplicam-se brechas padrão e o programa mais curto em bytes!
No entanto, lembre-se de que isso é igualmente uma competição entre envios no mesmo idioma. Embora seja improvável que uma linguagem como Java possa superar uma linguagem como perl ou uma linguagem de golfe como pyth ou cjam, ter a resposta mais curta em Java ainda é realmente impressionante! Para ajudar a rastrear a resposta mais curta em cada idioma, você pode usar este cabeçalho, que mostrará o envio mais curto por idioma e em geral.
Classificação
Para garantir que sua resposta seja exibida, inicie-a com um título, usando o seguinte modelo de remarcação:
# Language Name, N bytes
onde N
está o tamanho do seu envio. Se você melhorar sua pontuação, poderá manter as pontuações antigas no título, identificando-as. Por exemplo:
# Ruby, <s>104</s> <s>101</s> 96 bytes
Se você quiser incluir vários números no cabeçalho (por exemplo, porque sua pontuação é a soma de dois arquivos ou você deseja listar as penalidades do sinalizador de intérpretes separadamente), verifique se a pontuação real é o último número no cabeçalho:
# Perl, 43 + 2 (-p flag) = 45 bytes
Você também pode transformar o nome do idioma em um link que será exibido no snippet da tabela de classificação:
# [><>](http://esolangs.org/wiki/Fish), 121 bytes
fonte
ASCII art
tabuleiro de xadrez teria ponto final em qualquer outra praça?Respostas:
Geléia ,
2524 bytesExperimente online!
Graças a @Lynn por jogar fora 1 byte!
Como funciona
fonte
Vim, 26 bytes
irnbqkbnr<Esc>Y6p5Vr.VrpYGPgUj
Confia em um Vim novo, ou então
5V
pode selecionar a área errada.irnbqkbnr<Esc>
: Escreva a linha superior. Bastante fácil.Y6p
: Faça o restante das linhas, exceto uma . É claro que todas, exceto as linhas superior e inferior, contêm os caracteres incorretos.5Vr.
: Quando você ainda não usou o modo visual na sessão, pode fazer coisas assim para selecionar 5 linhas. Se você digitasse a mesma coisa novamente imediatamente, tentaria selecionar 25 linhas. Vim é estranho assim.Vrp
: Já estamos na linha 2, então vamos fazer uma linha de peões.YGP
: Copie essa linha de peões para o seu lugar na parte inferior. É por isso que eu usei em6p
vez de7p
antes.gUj
: Capitalize as peças brancas.fonte
Brainfuck , 224 bytes
Demorou quase uma hora para conseguir isso.
fonte
Python 2, 63 bytes
Infelizmente, a abordagem bastante simples foi muito mais curta do que as coisas "inteligentes" que tentei no início ...
Resposta bônus, também 63 bytes:
fonte
05AB1E , 24 bytes
Usa a codificação CP-1252 .
Experimente online!
Explicação
fonte
Na verdade , 26 bytes
Experimente online!
Explicação:
fonte
Cheddar, 56 bytes
Usa o novo
=>
recurso.Explicação
fonte
Pyke,
282726 bytesExperimente aqui!
Eu aprendi algo novo sobre o meu idioma hoje:
1c
pode ser usado como uma maneira de 2 caracteres de dividir uma string em uma lista de caracteres.fonte
MATL , 26 bytes
Experimente online!
Explicação
fonte
Ruby,
45441 byte economizado graças ao tuxcrafting.
Isso é 45
Tentar qualquer coisa mais inteligente parece prolongar mais.
fonte
puts
JavaScript (ES6),
6965 bytesGuardado 4 bytes graças a edc65
fonte
'rnbqkbnrnp....PRNBQKBNR'.replace(/p|\./ig,c=>c.repeat(8)+'\n')
(a mudança\n
para uma nova linha literal)C #,
9492 bytesEdit: Obrigado ao leite por economizar 1 byte, alterando a ordem das strings para remover o espaço em branco de retorno.
Editar: economizou mais 1 byte adicionando um parâmetro fictício ( x em vez de () ) para a função anônima e chamando-o com qualquer objeto.
Programa completo usando a função acima:
C # é uma linguagem muito detalhada ...
Programa completo em C #, 131 bytes
Ungolfed:
fonte
a
eb
em maiúsculas, então você pode se livrar do espaço depois dereturn
:return(a+b).ToLower()+...
var
vez destring
?var
com várias declarações em uma única linha. Assimstring a="rnbqkbnr\n",b="pppppppp\n",c="........\n";
se tornariavar a="rnbqkbnr\n";var b="pppppppp\n";var c="........\n";
, o que aumenta a contagem de bytes. EDIT: Daria um erro " Uma declaração de variável local digitada implicitamente não pode incluir vários declaradores " .Python 2, 68 bytes
Postando de qualquer maneira, embora a versão acima do Python 2 seja mais curta. Não precisaria ser um liner para a quantidade de bytes, apenas jogado com ele.
fonte
z
é usado apenas uma vez, você pode se livrar dele e produzir os pontos na declaração de impressão.Haskell, 53 bytes
a
é usado como a primeira linha e para determinar o comprimento das strings feitas dep
,.
eP
(-><$a
). .fonte
JavaScript (ES6), 73
.toUpperCase
é simplesmente muito longofonte
(r=c=>c[0].repeat(8)+
\ n,b=r
.)=>
economiza um byte.PowerShell v2 +, 44 bytes
As seqüências deixadas no pipeline são implicitamente impressas com
Write-Output
a execução do programa. Associamos isso ao comportamento de nova linha padrão de uma matriz para produzir as quatro linhas de períodos com o operador de vírgula.fonte
,
cria uma matriz (neste caso, uma matriz de seqüências de caracteres). O padrãoWrite-Output
na conclusão do programa insere uma nova linha entre os elementos deixados no pipeline, incluindo elementos individuais da matriz. Portanto, estamos abusando do comportamento de saída padrão para não precisar escrever novas linhas explícitas no código.V ,
27, 26 bytesExperimente online!
Isso contém alguns caracteres não imprimíveis, então aqui está a versão legível:
onde
<esc>
representa0x1B
. Explicação:fonte
Emotinomicon, 89 bytes
Infelizmente, o Emotinomicon não tem nada como uma função de pilha duplicada. Seria útil. Mas pelo menos menor que o Java. :)
Explicação:
fonte
Flacidez cerebral ,
366350 + 3 = 353 bytesExperimente online!
Isso recebe mais 3 porque requer que o
-A
sinalizador seja executado corretamente.Explicação
fonte
((((((((((((((((((((()()()()()){}){}){}()){})[()()()()])[([][][]){}])[][][])[]()())[[][][]])[][])()()()())<([]()())>[()()]))))))))
quais acho que economizaria 16 bytes. Isso não usa a pilha alternativa, portanto pode ser ainda mais curto.Python 3.5, 56 bytes
Isso usa uma ideia de zawata para codificar cada linha como
(r*8)[:8]
, com uma sequência repetida 8 vezes e cortada no comprimento8
. Os peões e linhas vazias são apenas'p'*8
,'.'*8
e'P'*8
, sem corte. A primeira linha usa'rnbqkbn'
,('rnbqkbn'*8)[:8]
incluindo a outra torre à direita quando multiplicada e aparada. A última linha é a mesma, mas em maiúscula.Expressamos a lista de partes de linha compactamente
['rnbqkbn','p','.','.','.','.','P','RNBQKBN']
usando a descompactação generalizada do Python 3.5 . Escrevemos a primeira e a última entrada e as restantes de um caractere são descompactadas de uma sequência.No Python 2, poderíamos nos contentar
split
com 60 bytes:fonte
Python 3,
828075 bytesNão é a resposta mais curta em python, mas é a minha primeira e eu acho que é muito bom pela primeira vez
fonte
[:8]for i in['rnbqkbn'....
'rnbqkbn p . . . . P RNBQKBN'.split()
.Lote, 105 bytes
Lote é seriamente detalhado ...
fonte
R, 75 bytes
Edit: Corrigido um erro bobo e simplesmente escreva a parte maiúscula do quadro agora.
fonte
\n
Powershell,
8273 bytesfonte
*per
coisa antes, e um google não está me dando nenhuma dica. Tem uma explicação?J,
5552 bytesTeste e etapas intermediárias
fonte
Python 3, 64 bytes
Baseado na resposta do DLosc ao Python 2, como no meu, não pude melhorar.
1 byte a menos em comparação ao uso de "\ n" .join
fonte
q, 51 bytes
fonte
-1 flip"p...P"{y,x,upper y}/:"rnbqkbnr";
. 40 bytes. Solução agradável embora!GNU sed, 54 bytes
Experimente online!
Explicação:
As peças pretas são impressas primeiro, salvando as duas filas de cartão associadas na ordem inversa no espaço de espera. As peças brancas são impressas convertendo o espaço de espera em letras maiúsculas.
fonte
Java 7,
1039989 bytes10 bytes salvos em comparação com a saída codificada graças à abordagem do @SLC em sua resposta C # .
Experimente aqui.
Saída:
fonte
String f(){return"rnbqkbnr\npppppppp\n........\n........\n........\n........\nPPPPPPPP\nRNBQKBNR";}
Isso é 100 bytes .C #,
85848374 bytesEdit: acidentalmente tinha muitas linhas de espaços em branco!
Edit: Liberou um caractere extra e corrigiu a ordem (acidentalmente, tudo foi revertido) muito obrigado a @KevinCruijssen
Edit: Revertido de volta para 83 porque eu tinha os camarões na linha errada
Edit: Graças a @adrianmp que me ajudou a diminuir ainda mais, omitindo retorno
Usando o mesmo formato da resposta @adrianmp acima:
Programa completo usando a função acima:
fonte
return "
, por isso torna-se:x=>{return"rnbqkbnr\npppppppp\nxxxxPPPPPPPP\nRNBQKBNR".Replace("x","........\n");};
. Boa resposta, então +1 de mim. E aproveite a sua estadia aqui. :)x=>"rnbqkbnr\npppppppp\nxxxxRNBQKBNR\nPPPPPPPP".Replace("x","........\n");