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 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,H
está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 N
Explicació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 =. $":&1
y luego3 7 f 3
.Python 2, 60 bytes
Esto imprime espacio y
0
en 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 W
como argumento izquierdo yN
como argumento derecho. Uso:Explicación
fuente
X.
realmente más corto?_1
con 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*h
copias de la cadena den-1
períodos seguidos de una X. Luego usamos IZQUIERDA $ para truncar esto a losw*h
caracteres.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
n
tomará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 caracteres0
y1
. Demostración en líneaDisección
fuente
APL, 13 bytes
Esto toma
H W
como argumento izquierdo yN
como 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.'X
con0
, 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.out
porque 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
y
W H N
. Usos"
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
f
para 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
f
que 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 dei
porquedotimes
comienza desdei=0
y 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
>0
lugar de!=0
, y en<1
lugar de==0
.