Entrada: un número positivo, menor que 80, desde stdin o como argumento de línea de comandos.
Salida: un patrón de tablero de ajedrez cuadrado, el tamaño del número de entrada. Los campos oscuros están representados por la letra 'X', los campos blancos por un espacio. El campo superior izquierdo debe ser 'X'.
Se requiere un programa completo.
Ejemplos:
Entrada : 1
Salida :
X
Entrada : 8
Salida :
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
Respuestas:
Pyth, 13 caracteres
Nota: Pyth es demasiado nuevo para ser elegible para ganar. Sin embargo, fue un golf divertido y pensé en compartirlo.
Pruébalo aquí
Cómo funciona:
Básicamente, esto se usa
X
para generar"X "
o" X"
alternativamente, luego repite esa cadenaQ
veces y toma sus primerosQ
caracteres. Esto se repiteQ
veces.¿Cómo funciona la función
X
(asignar en)? Toma la cadena original," "
en este caso, una ubicación de asignación,N
en este caso, y un carácter de reemplazo,"X"
en este caso. Dado que las asignaciones de Pyth son modulares, esto reemplaza el espacio en la ubicaciónN%2
con anX
, y devuelve la cadena resultante, que por lo tanto está"X "
en la primera, tercera, etc. líneas, y" X"
en las otras.fuente
Golfscript - 17 caracteres
Análisis
~
convertir la entrada a un int:N
almacén en la variable N,{...}
para cada valor de [0 ... N-1]"X "N*
repita "X" para dar una cadena de N * 2 caracteres>
tome la subcadena a partir del índice de bucle ...N<
... terminando N caracteres más tarde,n
coloque una nueva línea al final de cada cadenafuente
Perl,
4140Perl 5.10 o posterior, ejecutar con
perl -nE 'code'
(n
contado en tamaño de código)Salida de muestra:
fuente
x
es el operador de repetición de cadenas.'a' x 3
rendimientos'aaa'
.Python, 48 caracteres
fuente
Python, 76 caracteres
fuente
Scala -
14195 caracteresUso:
scala filename N
donde n es su entrada al programa.fuente
APL (16)
Suponiendo
⎕IO=0
(es decir, matrices indexadas a cero, es una configuración)Explicación:
⍳2⍴⎕
: lea un número N y cree una matriz N × N que contenga (0,0) a (N-1, N-1).2⊤¨
: obtiene el bit menos significativo de cada número en la matriz. (Entonces ahora tenemos (0,0), (0,1), (0,0) ... (1,0), (1,1), (1,0) ...)=/¨
: para cada par, vea si los dos números son iguales. (Ahora tenemos 1 0 1 0 1 0 ...)' X'[
...]
: ponga un espacio para cada 0 y una X para cada 1.fuente
Rubí
4542Demostración: http://ideone.com/Mw25e
fuente
(x=gets.to_i).times
ahorra tres caracteres. ¿Por qué el repentino interés renovado en este viejo?Pitón
48 caracteresEDITAR: Un poco equivocado ... Hay un espacio extra al final ... pero eso no es visible. Si cambia el espacio a "O" (o cualquier carácter que no sea un espacio en blanco), modifíquelo
[i%2:n]
a[i%2:n+i%2]
. para la versión correctafuente
C ++ - 253 caracteres ofuscados
fuente
JavaScript, 169
fuente
+'1'
lugar deparseInt('1')
. No te daré un número entero, pero no creo que sea importante tenerlo aquí, ¿verdad?k (26 caracteres)
26 Para la función desnuda:
O 7 más para recibir información de stdin
fuente
Bash: 60 caracteres
El tamaño de la tabla se pasa como parámetro de línea de comandos, por ejemplo
bash chesstable.sh 8
.fuente
Java 10, función lambda,
928784 bytesPruébalo en línea aquí .
Gracias a ceilingcat por jugar 4 bytes y a Kevin Cruijssen por jugar 3 más.
Versión sin golf:
Java 8, programa completo,
155139 bytesPruébalo en línea aquí .
Versión sin golf:
fuente
s+=
es 2 bytes más corto que esos 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":""));}
. Pruébalo en línea."X ".charAt(i%n+i/n&1)
lugar de((i%n+i/n)%2<1?"X":" ")
Japt,
87 bytesEjecútalo en línea
76 bytes si podemos reemplazarX
conx
:Ejecútalo en línea
Solución alternativa de 8 bytes :
Ejecútalo en línea
fuente
APL (Dyalog Extended) , SBCS de 12 bytes
Función de prefijo tácito anónimo. Requiere
⎕IO←0
(indexación basada en cero).Pruébalo en línea!
⍳
d ndices 0 ... n – 1+⍀
tabla plus con eso horizontal y verticalmente:⍳
d ndices 0 ... n – 12|
resto de división cuando se divide por dos'X '⊇⍨
usa esa matriz para indexar en la cadenafuente
Scala, 68 bytes
o
Pruébalo en línea!
fuente
Brainfuck, 140 bytes
fuente
Javascript, 67 bytes
Pruébalo en línea
C, 83 bytes
Pruébalo en línea
C64 básico, 89 bytes
fuente
on...go to
comando condicionalmente, comoON-(I+JAND1)GOTO3:?"X";:
donde es cero, pasará a la siguiente declaración, en este caso, si(I + J AND 1) === 0
imprime la X. Esto le permite empacar más declaraciones por línea y guardar bytes.Scala, 40 y 54
El número de caracteres es 40 para una función, 54 para un programa completo.
La solución que solo da un cuerpo funcional es:
("X "*n)sliding n take n foreach println
Pruébalo en línea
La solución que da un programa completo es:
val n=readInt;("X "*n)sliding n take n foreach println
Puede ejecutarlo usando la siguiente línea de comando.
scala -e 'val n=readInt;("X "*n)sliding n take n foreach println' <<< 8
donde 8 es la entrada.
fuente
("X "*n)sliding n take n map println
Python - 127 caracteres
fuente
C -
9286fuente
Q, 33
fuente
{(x;x-1-x mod 2)#"X "}
por 22 ... ah no, tiene el mismo error que el tuyo - no tiene 4 X en las filas impares para la entrada 8.Rubí 58
fuente
PHP - 136 caracteres (sin espacios en blanco)
Permite la entrada de funciones x e y.
También admite entradas impares ahora.
Si le da estilo a la salida para que tenga una altura de línea de 0.65 em y cambie este ▒█ y █ ° a □ ■ y ■ □, entonces se ve como un tablero de ajedrez real (cuadrado).
Código:
Salida:
fuente
PHP, 87
fuente
CJam, 18 bytes
Probablemente podría haber portado la respuesta de GolfScript, pero aquí hay un enfoque diferente. (Y CJam no es elegible para ganar de todos modos).
Pruébalo aquí.
La idea es iterar sobre la cuadrícula 2D con índices x e y en la pila, utilizando el
f{f{...}}
truco . Dados x e y, simplemente podemos determinar blanco y negro como(x+y)%2
y usar eso para elegir entre el carácterX
y una cadena que contiene un espacio.fuente
J, 21 caracteres
J también faltaba.
Anterior, 22 caracteres:
Códigos de char del patrón mod2 de
row #
+column #
:fuente
([:{&' X'=/~@$&1 0)
$"1[:|.&'X '"+i.
Pruébelo en línea!VB.net, 161
fuente
PHP, 75 bytes
fuente