Entrada: um número positivo, menor que 80, de stdin ou como um argumento da linha de comando.
Saída: um padrão de tabuleiro de xadrez quadrado, o tamanho do número de entrada. Os campos escuros são representados pela letra 'X', os campos brancos por um espaço. O campo superior esquerdo deve ser 'X'.
É necessário um programa completo.
Exemplos:
Entrada : 1
Saída :
X
Entrada : 8
Saída :
X X X X
X X X X
X X X X
X X X X
X X X X
X X X X
X X X X
X X X X
Respostas:
Pitão, 13 caracteres
Nota: Pyth é muito novo para ser elegível para ganhar. No entanto, era um golfe divertido e pensei em compartilhá-lo.
Experimente aqui.
Como funciona:
Basicamente, isso é usado
X
para gerar"X "
ou" X"
alternadamente, depois repete esseQ
tempo de sequência e pega seus primeirosQ
caracteres. Isso é repetidoQ
vezes.Como funciona a função
X
(assign at)? Leva a sequência original," "
nesse caso, um local de atribuição,N
nesse caso, e um caractere de substituição,"X"
neste caso. Como as atribuições de Pyth são modulares, isso substitui o espaço no localN%2
por umX
e retorna a sequência resultante, que está, portanto,"X "
na primeira, terceira, etc. linhas e" X"
nas outras.fonte
Golfscript - 17 caracteres
Análise
~
converter entrada para um:N
armazenamento int na variável N,{...}
para cada valor de [0 ... N-1]"X "N*
repita "X" para fornecer uma sequência de caracteres N * 2,>
pegue a substring a partir do índice do loop ...N<
... N caracteres finais depoisn
colocam uma nova linha no final de cada stringfonte
Perl,
4140Perl 5.10 ou posterior, executado com
perl -nE 'code'
(n
contado no tamanho do código)Saída de amostra:
fonte
x
é o operador de repetição de string.'a' x 3
rendimentos'aaa'
.Python, 48 caracteres
fonte
Python, 76 caracteres
fonte
Scala -
14195 caracteresUso:
scala filename N
onde n é sua entrada no programa.fonte
APL (16)
Supondo
⎕IO=0
(ou seja, matrizes indexadas a zero, é uma configuração)Explicação:
⍳2⍴⎕
: leia um número N e crie uma matriz N × N contendo (0,0) a (N-1, N-1).2⊤¨
: obtém o bit menos significativo de cada número na matriz. (Agora, temos (0,0), (0,1), (0,0) ... (1,0), (1,1), (1,0) ...)=/¨
: para cada par, veja se os dois números são iguais. (Agora temos 1 0 1 0 1 0 ...)' X'[
...]
: coloque um espaço para cada 0 e um X para cada 1.fonte
Ruby
4542Demonstração: http://ideone.com/Mw25e
fonte
(x=gets.to_i).times
salva três caracteres. Por que o interesse repentino e renovado por esse velho?Pitão
48 CharsEDIT: Kinda errado ... Há um espaço extra no final ... mas isso não é visível. Se você alterar o espaço para "O" (ou qualquer caractere que não seja de espaço em branco), modifique
[i%2:n]
para[i%2:n+i%2]
. para a versão correta.fonte
C ++ - 253 caracteres ofuscados
fonte
JavaScript, 169
fonte
+'1'
vez deparseInt('1')
. Não lhe dará um número inteiro, mas não acho importante tê-lo como um número inteiro aqui, é?k (26 caracteres)
26 Para a função nua:
Ou mais 7 para receber sugestões de stdin
fonte
Bash: 60 caracteres
O tamanho da tabela é passado como parâmetro de linha de comando, por exemplo
bash chesstable.sh 8
.fonte
Java 10, função lambda,
928784 bytesExperimente online aqui .
Agradecimentos ao ceilingcat por jogar 4 bytes e a Kevin Cruijssen por jogar mais 3.
Versão não destruída:
Java 8, programa completo,
155139 bytesExperimente online aqui .
Versão não destruída:
fonte
s+=
é de 2 bytes mais curto do que os parêntesis:n->{var s="";for(int i=0;i<n*n;s+=++i%n<1?"\n":"")s+=(i%n+i/n)%2<1?"X":" ";return s;}
n->{for(int i=0;i<n*n;)System.out.print(((i%n+i/n)%2<1?"X":" ")+(++i%n<1?"\n":""));}
. Experimente online."X ".charAt(i%n+i/n&1)
vez de((i%n+i/n)%2<1?"X":" ")
Japonês,
87 bytesExecute on-line
76 bytes se pudermos substituirX
porx
:Execute on-line
Solução alternativa de 8 bytes :
Execute on-line
fonte
APL (Dyalog Extended) , SBCS de 12 bytes
Função de prefixo tácito anônimo. Requer
⎕IO←0
(indexação baseada em zero).Experimente online!
⍳
ɩ ndices 0 ... n-1+⍀
além de tabela com isso horizontal e verticalmente:⍳
ɩ ndices 0 ... n-12|
restante divisão quando dividido por dois'X '⊇⍨
use essa matriz para indexar na stringfonte
Scala, 68 bytes
ou
Experimente online!
fonte
Brainfuck, 140 bytes
fonte
Javascript, 67 bytes
Experimente online
C, 83 bytes
Experimente online
C64 básico, 89 bytes
fonte
on...go to
comando condicionalmente, comoON-(I+JAND1)GOTO3:?"X";:
onde é zero, ele passará para a instrução a seguir, nesse caso, se(I + J AND 1) === 0
for imprimir o X. Isso permite que você inclua mais instruções por linha e salve bytes.Scala, 40 e 54
O número de caracteres é 40 para uma função, 54 para um programa completo.
A solução que fornece apenas um corpo de função é:
("X "*n)sliding n take n foreach println
Experimente online
A solução que oferece um programa completo é:
val n=readInt;("X "*n)sliding n take n foreach println
Você pode executá-lo usando a seguinte linha de comando.
scala -e 'val n=readInt;("X "*n)sliding n take n foreach println' <<< 8
onde 8 é a entrada.
fonte
("X "*n)sliding n take n map println
Python - 127 caracteres
fonte
C -
9286fonte
Q, 33
fonte
{(x;x-1-x mod 2)#"X "}
para 22 ... ah não, tem o mesmo bug que o seu - não tem 4 X's nas linhas ímpares para a entrada 8.Ruby 58
fonte
PHP - 136 caracteres (sem espaço em branco)
Permite a entrada da função x e y.
Também suporta entradas ímpares agora.
Se você estilizar a saída com 0,65 em altura de linha e alterar ▒█ e █░ para □ ■ e ■ □, ela será parecida com um tabuleiro de xadrez real (quadrado).
Código:
Resultado:
fonte
PHP, 87
fonte
CJam, 18 bytes
Eu provavelmente poderia ter portado a resposta GolfScript, mas aqui está uma abordagem diferente. (E CJam não é elegível para ganhar de qualquer maneira.)
Teste aqui.
A idéia é iterar sobre a grade 2D com índices x e y na pilha, usando o
f{f{...}}
truque . Dado xey, podemos simplesmente determinar preto e branco(x+y)%2
e usá-lo para escolher entre o caractereX
e uma string que contém um espaço.fonte
J, 21 caracteres
J também estava desaparecido.
Anterior, 22 caracteres:
Códigos de caracteres do padrão mod2 de
row #
+column #
:fonte
([:{&' X'=/~@$&1 0)
$"1[:|.&'X '"+i.
Experimente online!VB.net, 161
fonte
PHP, 75 bytes
fonte