Escriba un programa o función que tome tres enteros positivos, W, H y N. Imprima o devuelva una cuadrícula de W × H .donde cada Nth .en el orden normal de lectura en inglés se reemplaza con un X.
Por ejemplo, dado W = 7, H = 3, N = 3, la cuadrícula tiene 7 caracteres de ancho y 3 de alto, y la lectura de cada tercer carácter desde la parte superior izquierda es un X:
..X..X.
.X..X..
X..X..X
Del mismo modo, si la entrada es W = 10, H = 4, N = 5, la salida sería:
....X....X
....X....X
....X....X
....X....X
Notas
- "Orden de lectura en inglés normal" significa ir de izquierda a derecha en cada línea, desde la línea superior hasta la inferior.
- Cuando N es 1, entonces todas las
.'s se convertirán enX' s. - Puede usar dos caracteres ASCII imprimibles distintos en lugar de
.yX.- Si usa space (
), no se requieren espacios finales cuando el resultado sería visualmente el mismo. (Todavía se requieren líneas vacías). - No puede usar otra cosa en lugar de las nuevas líneas que dan forma a la cuadrícula.
- Si usa space (
- El formato de entrada exacto y el orden de W, H y N no es súper importante. Cosas como
[H,W,N]oN\nW,Hestán bien. - Una nueva línea final en la salida está bien.
- ¡El código más corto en bytes gana!
Ejemplos
W = 5, H = 3, N = 1
XXXXX
XXXXX
XXXXX
W = 5, H = 3, N = 2
.X.X.
X.X.X
.X.X.
W = 5, H = 3, N = 3
..X..
X..X.
.X..X
W = 5, H = 3, N = 4
...X.
..X..
.X...
W = 5, H = 3, N = 5
....X
....X
....X
W = 5, H = 3, N = 6
.....
X....
.X...
W = 5, H = 3, N = 7
.....
.X...
...X.
W = 5, H = 3, N = 15
.....
.....
....X
W = 5, H = 3, N = 16 (or more)
.....
.....
.....
W = 1, H = 1, N = 1
X
W = 1, H = 1, N = 2 (or more)
.
W = 8, H = 6, N = 2
.X.X.X.X
.X.X.X.X
.X.X.X.X
.X.X.X.X
.X.X.X.X
.X.X.X.X
W = 8, H = 6, N = 3
..X..X..
X..X..X.
.X..X..X
..X..X..
X..X..X.
.X..X..X
W = 8, H = 6, N = 4
...X...X
...X...X
...X...X
...X...X
...X...X
...X...X
W = 8, H = 6, N = 7
......X.
.....X..
....X...
...X....
..X.....
.X......
W = 8, H = 6, N = 16
........
.......X
........
.......X
........
.......X
W = 37, H = 1, N = 4
...X...X...X...X...X...X...X...X...X.
W = 1, H = 10, N = 8
.
.
.
.
.
.
.
X
.
.
code-golf
arithmetic
grid
Pasatiempos de Calvin
fuente
fuente

["..X..X.", ".X..X..", "X..X..X"]como la cuadrícula "?Respuestas:
J,
95 bytesUsa espacios y
1'sy espera entrada en el formularioH W f NExplicación:
Uso:
Pruébelo en línea aquí.
fuente
($":&1), ¿no contaría eso como 7 bytes?()no son parte de la función; podrías escribirf =. $":&1y luego3 7 f 3.Python 2, 60 bytes
Esto imprime espacio y
0en lugar de.yX. La entrada se toma como una tupla en forma dew,h,n.fuente
J, 12 bytes
Esta es una función diádica que toma la matriz
H Wcomo argumento izquierdo yNcomo argumento derecho. Uso:Explicación
fuente
X.realmente más corto?_1con paréntesis, y formatear los espacios entre columnas, y terminó siendo más largo.BBC Basic, 67 caracteres ASCII, tamaño de archivo tokenizado 43 bytes
Descargue el intérprete en http://www.bbcbasic.co.uk/bbcwin/download.html
BBC basic tiene un comando útil para limitar el ancho del campo. Usamos
STRING$para hacerw*hcopias de la cadena den-1períodos seguidos de una X. Luego usamos IZQUIERDA $ para truncar esto a losw*hcaracteres.fuente
Minkolang 0.14 ,
34302822 bytesMarque un caso aquí y marque todos los casos de prueba aquí. Espera entrada como
N W H.Explicación
Como la caja de códigos de Minkolang es toroidal, esto terminará hasta el principio. Como todos
ntomarán ahora-1, esto finalmente se bloquea con un error y no hay más resultados, lo que está permitido.fuente
CJam (16 bytes)
Toma la entrada en la pila en el orden
N W H, devuelve la cadena usando caracteres0y1. Demostración en líneaDisección
fuente
APL, 13 bytes
Esto toma
H Wcomo argumento izquierdo yNcomo argumento derecho.Explicación:
Pruébelo en línea: primeros casos de prueba , último caso de prueba . Tenga en cuenta que aunque esto muestra resultados en recuadro, mi copia de Dyalog no.
fuente
CJam, 20 bytes
Toma entrada como HW N.
fuente
q~_@*,@(S*'X+f=/N*con entrada en orden NH W.'Xcon0, y eso será 17MATLAB,
61 5554 bytesWow, pensé que MATLAB sería competitivo en este caso, ¡pero qué equivocado estaba!
La función crea una matriz de 1 de las dimensiones correctas y luego establece que cada enésimo elemento sea 0 (MATLAB maneja implícitamente el ajuste alrededor de los índices en 2D). Luego agregamos 45 ('-') a este número y lo convertimos en una matriz de caracteres para devolver.
Las preguntas permiten que se usen dos caracteres ASCII distintos para la cuadrícula, estoy usando '-' en lugar de 'x' para guardar algunos bytes. El formato de entrada tampoco es fijo, por lo que debe proporcionarse como
[w h],n- es decir, una matriz de ancho y alto, y luego n como segundo parámetro.Esto también funciona con Octave y puede probarse en línea aquí . La función ya está configurada en el espacio de trabajo vinculado, por lo que simplemente puede llamar, por ejemplo:
Qué salidas:
fuente
c=[b'+45,''];Procesamiento, 93 bytes (Java, 104 bytes)
La razón por la que utilicé Processing en lugar de Java es que no necesita acceder al puntero dando propinas
System.outporque se puede acceder directamente a una variable local. Gané 11 bytes con esto. La función no devuelve el resultado pero lo imprime.fuente
i++%a...), y parece que también dejó un repuesto}al final que no necesita.Japt ,
33322725 bytesToma entrada en formato
W H N. Usosy"en lugar de.yX, respectivamente. Pruébalo en línea!Sin golfos y explicación
Sugerencias bienvenidas!
fuente
Vitsy ,
2523222119 Bytes¡Gracias a @ Sp3000 por señalar que no necesito un duplicado y ahorrarme 2 bytes!
Toma entrada como
N W H. Pruébalo en línea!fuente
K,
21191814 bytesToma argumentos como
(H W;N):En acción:
fuente
Pyth -
191817 bytesEspero jugar más al golf. Toma entrada como
N\n[W, H].Test Suite .
fuente
R, 66 bytes
Esta es una función que acepta tres enteros y devuelve una matriz de valores de caracteres. Para llamarlo, asígnelo a una variable.
Sin golf:
fuente
JavaScript (ES6),
6560 bytesExplicación
Prueba
Mostrar fragmento de código
fuente
Mathematica, 85 bytes
Al igual que con muchas otras soluciones, esto crea una sola fila y luego la divide.
fuente
JavaScript (ES6), 55 bytes
Utiliza el IIFE
fpara recorrer para guardar una declaración de devolución.Salida para w = 5, h = 3, n = 7:
fuente
C #, 185 bytes
Para una lectura más legible:
Uso:
fuente
Julia, 50 bytes
Esto crea una función
fque acepta tres enteros y devuelve una matriz bidimensional de cadenas.Sin golf:
fuente
Ruby,
6756 bytesImprimir una matriz ya que se acepta.
67 bytes
Sin golf:
Uso:
fuente
MATLAB, 44 bytes
Nota: Enfoque muy diferente al utilizado por Tom Carpenter.
Define una función anónima que acepta entradas como
[W,H],N. Abordé este problema usando not-the-modulo-of- N para una matriz 1: W * H y luego simplemente reestructurando la solución a una matriz bidimensional, que luego se convierte en una matriz de caracteres.Ejemplo de salida para
[5,3],7:fuente
Lisp común, SBCL, 94 bytes
Explicación
(=(mod(1+ i)c)0)(=(mod(1+ i)a)0)se ve bastante tonto (porque es muy similar pero no sé si se puede resolver, ahorrando bytesYo uso en
(1+ i)lugar deiporquedotimescomienza desdei=0y quiero comenzar desde1. También es útil porque puedo usar en(* a b)lugar de(1+(* a b))fuente
Java,
185183 bytes¡Gracias Thomas Kwa, por salvarme 2 bytes!
Sin golf (ish):
Uso:
Quizás Java gane algún día: P
fuente
>0lugar de!=0, y en<1lugar de==0.