Estás organizando una búsqueda del tesoro para tus amigos. Para realizar las cosas con mayor facilidad, desea dibujar un mapa de todos los lugares donde escondió los objetos preciosos.
Entrada
Se 0 0
permite cualquier forma de entrada que denote una lista de puntos que consista en las coordenadas x e y (no negativas), siendo la esquina superior izquierda (Nota: también puede usar indexación basada en 1 en su respuesta, por favor comente eso si lo hace ) Ejemplo:
1 2
3 0
0 1
Desafío
Su función o programa debería ser capaz de construir un mapa que denote cada ubicación dada con un lugar x
donde la marca se encuentre en la fila y + 1 y la columna x + 1 en la salida. Las ubicaciones sin marcar se representan con un . El mapa también consiste en un marco donde las esquinas son
+
s, las líneas verticales son |
sy las líneas horizontales son -
s. Su solución debe generar el marco más pequeño posible. Mapa para el ejemplo de entrada dado anteriormente:
+----+
| x|
|x |
| x |
+----+
Posibles casos de prueba
"0 0"
=>
+-+
|x|
+-+
"0 10
5 5
10 0"
=>
+-----------+
| x|
| |
| |
| |
| |
| x |
| |
| |
| |
| |
|x |
+-----------+
""
=>
++
++
"0 0
0 2
2 0"
=>
+---+
|x x|
| |
|x |
+---+
Por supuesto, este es el código de golf , lo que significa que gana la solución con el conteo de bytes más bajo. Se alientan las explicaciones de su solución.
the input is a list of locations (e.g. nested list, list of tuples, space & newline separated, separate inputs, ect.)
Respuestas:
J ,
3734 bytesPruébalo en línea!
fuente
::empty
tan detallado? Que hace ¿Por qué no se puede simplificar a 1 byte más o menos? (No tengo conocimiento de J)JavaScript (ES6), 150 bytes
Toma la entrada como una lista de coordenadas indexadas 1 en
[x,y]
formato. Devuelve una cadena.Pruébalo en línea!
fuente
Haskell ,
127123 bytesEsto define el operador
(!)
que toma una lista de x coordenadas y una lista de las coordenadas y correspondientes :Pruébalo en línea!
Ungolfed / Explicación
La función auxiliar
m
espera una lista y devuelve índices (basados en 1) hasta el máximo, si la lista está vacía, devuelve[]
:El operador real
(!)
es solo una lista de comprensión, que atraviesa todas las coordenadas y elige un caráctero
x
, que se une con nuevas líneas:fuente
Lienzo , 22 bytes.
Pruébalo aquí!
Toma entradas indexadas 1.
Finalmente decidí arreglar un error que me ha estado molestando durante años y lo reduje a 21 bytes .
Explicación (medio ASCII-fied para monoespacio):
fuente
Pitón 2 ,
151140138 bytes-2 bytes gracias a Jo King.
La entrada está indexada en 1.
Pruébalo en línea!
fuente
Carbón , 37 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. 1 indexado. Explicación:
Entrada vacía de casos especiales dibujando un rectángulo de 2x2 de
+
s.Transponga la entrada, tome el máximo de cada columna (ahora fila) y agregue 2 para obtener el tamaño de la caja en coordenadas de carbón.
Dibuja la caja.
Pase sobre cada coordenada.
Salta a su posición.
Marcar con una cruz.
fuente
Stax ,
323124 bytesEjecutar y depurarlo
Toma índices basados en 0 como una matriz de
[y, x]
pares.Explicación:
fuente
|S
instrucción surround y un mapa abreviado final. (m
) El sonido envolvente tomaa
yb
de la pila y produceb+a+b
. Y puede usar enm
lugar de la final|J
para iterar sobre las filas y producir resultados. Por ejemploz]n+H%
concM%
. Esta es la pieza que obtiene el ancho del mapa, pero tiene un caso especial para mapas vacíos. Si transpone el mapa antes de medirlo, el caso especial desaparece.R ,
133125122bytesPruébalo en línea!
1 indexado. Toma una matriz como argumento. ¡Ahorré 8 bytes gracias a digEmAll, 3 gracias a Giuseppe! Explicación (versión anterior del código):
fuente
[<-
directamente para eliminar las llaves.coordenadas tomadas del formato [y, x]
JavaScript (Node.js) ,
191184 bytesPruébalo en línea!
fuente
a.map(([y,x])
)JavaScript, 180 bytes
fuente
Java 10,
238223 bytesCoordenadas indexadas en 1.
Pruébalo en línea.
Explicación:
fuente
get
/for
? : S XDC (gcc) ,
246234 bytesGracias a ceilingcat por la sugerencia.
Indexado a cero. La función toma una lista de coordenadas y búfer, encuentra los valores máximos de x e y, llena el búfer con espacios, genera el marco y luego traza las 'x'.
Pruébalo en línea!
fuente
05AB1E ,
4442 bytesPruébalo en línea!
X e Y pueden revertirse, no sabía si eso importaba en absoluto.
Creo que tengo esto en menos bytes, pero ya veremos ...No.fuente
F
aLv
, eliminarNV
y cambiarY
ay
. 41 bytesεZ}
puede serۈ
.Ýv
noLv
, pero sigue siendo una buena edición :).Ýv
en lugar deLv
. Culpa mía.C (gcc) ,
229220216 bytes-9 bytes gracias a ceilingcat .
Indexado a cero. Toma las coordenadas como una lista de números, donde los números pares son X y los impares son Y.
Pruébalo en línea!
fuente
for(n&&X++-Y++;i<=Y;i+=puts(""))
lugar den&&X++-Y++;for(--i;i++<Y;puts(""))