Escreva um programa ou função que consiga três números inteiros positivos, W, H e N. Imprima ou retorne uma grade W × H .
onde todos os enésimos .
na ordem normal de leitura em inglês são substituídos por um X
.
Por exemplo, dado W = 7, H = 3, N = 3, a grade possui 7 caracteres de largura e 3 de altura, e cada terceiro caractere lido no canto superior esquerdo é X
:
..X..X.
.X..X..
X..X..X
Da mesma forma, se a entrada for W = 10, H = 4, N = 5, a saída seria:
....X....X
....X....X
....X....X
....X....X
Notas
- "Ordem de leitura em inglês normal" significa ir da esquerda para a direita em cada linha, da linha superior à inferior.
- Quando N é 1, todos os
.
itens se tornarãoX
. - Você pode usar dois caracteres ASCII imprimíveis distintos no lugar de
.
eX
.- Se você usar space (
- Você não pode usar outra coisa no lugar das novas linhas que moldam a grade.
- Se você usar space (
- O formato exato de entrada e a ordem de W, H e N não são super importantes. Coisas como
[H,W,N]
ouN\nW,H
estão bem. - Uma nova linha à direita na saída é boa.
- O código mais curto em bytes vence!
Exemplos
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
Passatempos de Calvin
fonte
fonte
["..X..X.", ".X..X..", "X..X..X"]
como a grade "?Respostas:
J,
95 bytesUsa espaços e
1
's e espera entrada no formulárioH W f N
Explicação:
Uso:
Experimente online aqui.
fonte
($":&1)
, isso não conta como 7 bytes?()
não faz parte da função; você poderia escreverf =. $":&1
e então3 7 f 3
.Python 2, 60 bytes
Isso imprime o espaço e
0
no lugar de.
eX
. A entrada é tomada como uma tupla na forma dew,h,n
.fonte
J, 12 bytes
Essa é uma função diádica que toma a matriz
H W
como argumento à esquerda eN
como argumento à direita. Uso:Explicação
fonte
X.
realmente o mais curto?_1
com parênteses e formatar os espaços entre as colunas, e acabou sendo mais longo.BBC Basic, 67 caracteres ASCII, tamanho de arquivo tokenizado 43 bytes
Faça o download do intérprete em http://www.bbcbasic.co.uk/bbcwin/download.html
O BBC basic possui um comando útil para limitar a largura do campo. Nós usamos
STRING$
para fazerw*h
cópias da sequência den-1
períodos seguida de um X. Em seguida, usamos LEFT $ para truncar isso paraw*h
caracteres.fonte
Minkolang 0.14 ,
34302822 bytesVerifique um caso aqui e verifique todos os casos de teste aqui. Espera entrada como
N W H
.Explicação
Como o codebox de Minkolang é toroidal, isso será concluído desde o início. Como
n
agora todo mundo vai entender-1
, isso eventualmente trava com um erro e nenhuma saída adicional, o que é permitido.fonte
CJam (16 bytes)
Pega entrada na pilha na ordem
N W H
, retorna string usando caracteres0
e1
. Demonstração onlineDissecação
fonte
APL, 13 bytes
Isso toma
H W
como argumento da esquerda eN
como argumento da direita.Explicação:
Experimente on-line: primeiros casos de teste , último caso de teste . Observe que, embora isso mostre a saída em caixa, minha cópia do Dyalog não.
fonte
CJam, 20 bytes
Recebe entrada como HW N.
fonte
q~_@*,@(S*'X+f=/N*
, com a entrada em ordem NH W.'X
por0
, e isso será 17MATLAB,
61 5554 bytesUau, eu pensei que o MATLAB seria competitivo neste, mas como eu estava errado!
A função cria uma matriz de 1 com as dimensões corretas e, em seguida, define cada n-ésimo elemento como 0 (o MATLAB lida implicitamente com a quebra dos índices em 2D). Em seguida, adicionamos 45 ('-') a esse número e convertemos em uma matriz de caracteres a ser retornada.
As perguntas permitem que dois caracteres ASCII distintos sejam usados para a grade. Estou usando '-' no lugar de 'x' para salvar alguns bytes. O formato de entrada também não é fixo, portanto deve ser fornecido como
[w h],n
- ou seja, uma matriz de largura e altura, e depois n como um segundo parâmetro.Isso também funciona com o Octave e pode ser experimentado online aqui . A função já está configurada na área de trabalho vinculada, portanto, você pode simplesmente chamar, por exemplo:
Quais saídas:
fonte
c=[b'+45,''];
Processando, 93 bytes (Java, 104 bytes)
O motivo pelo qual eu usei Processing em vez de Java é que você não precisa acessar o ponteiro dando gorjeta,
System.out
porque uma variável local é diretamente acessível. Eu ganhei 11 bytes com isso. A função não retorna o resultado, mas o imprime.fonte
i++%a...
), e parece que você deixou um sobressalente}
no final do qual também não precisa.Japt ,
33322725 bytesRecebe entrada no formato
e
W H N
. Usa"
no lugar de.
eX
, respectivamente.Experimente online!Ungolfed e explicação
Sugestões são bem-vindas!
fonte
Vitsy ,
2523222119 BytesAgradeço ao @ Sp3000 por apontar que não preciso de uma cópia e me salvar 2 bytes!
Toma entrada como
N W H
. Experimente online!fonte
K,
21191814 bytesToma argumentos como
(H W;N)
:Em ação:
fonte
Pitão -
191817 bytesEspero jogar mais. Toma entrada como
N\n[W, H]
.Conjunto de Teste .
fonte
R, 66 bytes
Esta é uma função que aceita três números inteiros e retorna uma matriz de valores de caracteres. Para chamá-lo, atribua-o a uma variável.
Ungolfed:
fonte
JavaScript (ES6),
6560 bytesExplicação
Teste
Mostrar snippet de código
fonte
Mathematica, 85 bytes
Como em muitas outras soluções, isso cria uma única linha e a particiona.
fonte
JavaScript (ES6), 55 bytes
Usa o IIFE
f
para fazer um loop para salvar uma declaração de retorno.Saída para w = 5, h = 3, n = 7:
fonte
C #, 185 bytes
Para uma leitura mais legível:
Uso:
fonte
Julia, 50 bytes
Isso cria uma função
f
que aceita três números inteiros e retorna uma matriz bidimensional de seqüências de caracteres.Ungolfed:
fonte
Ruby,
6756 bytesImprimir uma matriz, uma vez que é aceita.
67 bytes
Ungolfed:
Uso:
fonte
MATLAB, 44 bytes
Nota: Abordagem muito diferente da usada por Tom Carpenter.
Define uma função anônima que aceita entradas como
[W,H],N
. Abordei esse problema usando não o módulo de N para uma matriz 1: W * H e, em seguida, simplesmente remodelando a solução para uma matriz bidimensional, que é então convertida em uma matriz de caracteres.Exemplo de saída para
[5,3],7
:fonte
Lisp comum, SBCL, 94 bytes
Explicação
(=(mod(1+ i)c)0)(=(mod(1+ i)a)0)
parece bem bobo (porque é muito parecido, mas não sei se pode ser resolvido, economizando bytesEu uso em
(1+ i)
vez dei
porquedotimes
começai=0
e quero começar1
. Também é útil porque eu posso usar em(* a b)
vez de(1+(* a b))
fonte
Java,
185183 bytesObrigado Thomas Kwa, por me salvar 2 bytes!
Ungolfed (ish):
Uso:
Talvez o java ganhe um dia: P
fonte
>0
vez de!=0
, e em<1
vez de==0
.