Você está organizando uma caça ao tesouro para seus amigos. Para conduzir as coisas com mais facilidade, você deseja desenhar um mapa de todos os locais onde ocultou os objetos preciosos.
Entrada
0 0
É permitida qualquer forma de entrada que denote uma lista de pontos que consistem nas coordenadas x e y (não-negativas), sendo o canto superior esquerdo (Nota: Você também pode usar a indexação baseada em 1 na sua resposta, por favor, comente se você fizer isso. ) Exemplo:
1 2
3 0
0 1
Desafio
Sua função ou programa deve ser capaz de construir um mapa indicando cada local determinado, x
onde a marca é encontrada na linha y + 1 e na coluna x + 1 na saída. Locais não marcados são representados com um . O mapa também consiste em um quadro em que os cantos são
+
s, as linhas verticais são se |
as linhas horizontais são -
s. Sua solução deve gerar o menor quadro possível. Mapa para o exemplo de entrada fornecido acima:
+----+
| x|
|x |
| x |
+----+
Possíveis casos de teste
"0 0"
=>
+-+
|x|
+-+
"0 10
5 5
10 0"
=>
+-----------+
| x|
| |
| |
| |
| |
| x |
| |
| |
| |
| |
|x |
+-----------+
""
=>
++
++
"0 0
0 2
2 0"
=>
+---+
|x x|
| |
|x |
+---+
Obviamente, isso é código-golfe , o que significa que a solução com a menor contagem de bytes vence! Explicações da sua solução são incentivadas.
the input is a list of locations (e.g. nested list, list of tuples, space & newline separated, separate inputs, ect.)
Respostas:
J ,
3734 bytesExperimente online!
fonte
::empty
tão detalhado? O que ele faz? Por que não pode ser simplificado para 1 byte? (Eu não tenho conhecimento de J)JavaScript (ES6), 150 bytes
Recebe a entrada como uma lista de coordenadas indexadas em 1 no
[x,y]
formato. Retorna uma string.Experimente online!
fonte
Haskell ,
127123 bytesIsso define o operador
(!)
que obtém uma lista de coordenadas xe uma lista das coordenadas y correspondentes :Experimente online!
Ungolfed / Explicação
A função auxiliar
m
espera uma lista e retorna índices (com base em 1) até o máximo, se a lista estiver vazia, ela retornará[]
:O operador real
(!)
é apenas uma compreensão da lista, percorrendo todas as coordenadas e escolhendo um caractereou
x
, que se junta às novas linhas:fonte
Tela , 22 bytes
Experimente aqui!
Recebe entradas indexadas em 1.
Finalmente decidi consertar um bug que me incomoda há muito tempo e reduziu isso para 21 bytes .
Explicação (semi-ASCII-fied para monoespaço):
fonte
Python 2 ,
151140138 bytes-2 bytes graças a Jo King.
A entrada é indexada em 1.
Experimente online!
fonte
Carvão , 37 bytes
Experimente online! Link é a versão detalhada do código. 1 indexado. Explicação:
Caso vazio de entrada especial, desenhando um retângulo 2x2 de
+
s.Transponha a entrada, pegue o máximo de cada coluna (agora linha) e adicione 2 para obter o tamanho da caixa nas coordenadas de carvão.
Desenhe a caixa.
Faça um loop sobre cada coordenada.
Salte para sua posição.
Marque com uma cruz.
fonte
Stax ,
323124 bytesExecute e depure
Toma índices baseados em 0 como matriz de
[y, x]
pares.Explicação:
fonte
|S
instrução surround e um mapa abreviado à direita. (m
) Surround tiraa
eb
da pilha e produzb+a+b
. E você pode usar, emm
vez da final,|J
para iterar nas linhas e produzir saída. Por exemploz]n+H%
porcM%
. Esta é a peça que obtém a largura do mapa, mas possui um caso especial para mapas vazios. Se você transpõe o mapa antes de medi-lo, o caso especial desaparece.R ,
133 125122 bytesExperimente online!
1 indexado. Toma uma matriz como argumento. Economizou 8 bytes graças a digEmAll, 3 graças a Giuseppe! Explicação (versão anterior do código):
fonte
[<-
diretamente para remover os chavetas.cordas tiradas do formato [y, x]
JavaScript (Node.js) ,
191184 bytesExperimente online!
fonte
a.map(([y,x])
) #JavaScript, 180 bytes
fonte
Java 10,
238223 bytesCoordenadas indexadas em 1.
Experimente online.
Explicação:
fonte
get
/for
? : S XDC (gcc) ,
246234bytesAgradecimentos a ceilingcat pela sugestão.
Indexado a zero. A função pega uma lista de coordenadas e buffer, encontra os valores máximos xey, preenche o buffer com espaços, gera o quadro e, em seguida, plota os 'x'.
Experimente online!
fonte
05AB1E ,
4442 bytesExperimente online!
X e Y podem ser revertidos, não sabiam se isso importava.
Eu acho que tenho isso em menos bytes, mas vamos ver ...Não.fonte
F
paraLv
, removerNV
e alterarY
paray
. 41 bytesεZ}
pode serۈ
.Ýv
nãoLv
, mas ainda assim uma boa edição :).Ýv
ao invés deLv
. Foi mal.C (GCC) ,
229220216 bytes-9 bytes graças ao ceilingcat .
Indexado a zero. Toma coordenadas como lista de números, onde números pares são X e números ímpares são Y.
Experimente online!
fonte
for(n&&X++-Y++;i<=Y;i+=puts(""))
vez den&&X++-Y++;for(--i;i++<Y;puts(""))