Tome dos listas de enteros no negativos y envíe un cuadro ASCII como se define a continuación.
- Las esquinas y las intersecciones son ventajas:
+
(código ASCII 43) - Las líneas verticales son barras
|
(código ASCII 124) - Las líneas horizontales son menos
-
(código ASCII 45)
La primera lista de entrada especifica el número de desventajas entre cada signo más, en dirección horizontal.
La segunda lista de entrada especifica el número de barras entre cada signo más, en dirección vertical.
Es más fácil de explicar con algunos ejemplos:
0 // No minuses between each + sign
0 // No bars between + signs
++
++
------------------
1 2 // First a single minus, then two minuses
1 2 // First one bar, then two bars
+-+--+
| | |
+-+--+
| | |
| | |
+-+--+
------------------
1 0 3 0 2 0
2 1 0 0
+-++---++--++
| || || ||
| || || ||
+-++---++--++
| || || ||
+-++---++--++
+-++---++--++
+-++---++--++
Aclaraciones:
- El orden de entrada y el formato son opcionales
- Solo se deben imprimir / mostrar los cuadros, pero se acepta un espacio final o nuevas líneas.
- Opcionalmente, puede agregar 1 a todos los valores de entrada si es más conveniente. El segundo ejemplo sería entonces:
2 3; 2 3
.
Este es el código de golf, por lo que gana el código más corto en bytes.
Respuestas:
MATL ,
252221 bytesUtiliza entradas con
1
agregado (permitido por el desafío).Pruébalo en línea!
Explicación
El código inicialmente construye una matriz que contiene
1
los índices de columna de caracteres que no son espacios en el resultado final, y de lo0
contrario. Entonces, si la primera entrada es[2 1 4 1 3 1]
(estaría[1 0 3 0 2 0]
en el formato basado en 0) esta matriz seráObserve cómo la longitud de las ejecuciones de ceros está relacionada con la entrada. Específicamente, esta matriz se construye de la siguiente manera:
1
.1
. En el ejemplo esto da[3 4 8 9 12 13]
.1
a las entradas con índices (basados en 1) dados en el paso 2. Las entradas intermedias se configuran automáticamente en0
.Se crea una matriz similar para las filas. La segunda entrada
[3 2 1 1]
(o[2 1 0 0 ]
) daAhora la segunda matriz se multiplica
2
, transpone y agrega con difusión a la primera. Esto le da a la matriz 2DLa indexación en la cadena
'|-+ '
da el resultado final como una matriz de caracteres 2D. Como la indexación es modular y está basada en 1, el índice0
corresponde al último elemento (espacio).fuente
Python 2, 117 bytes
Pruébalo con ideone.
No esperar demasiado de esto. Realmente simple, solo usa combinaciones de python y multiplicación de cadenas para unir todo.
fuente
JavaScript (ES6), 83 bytes
La salida incluye dos nuevas líneas finales.
fuente
CJam, 50 bytes
Pruébalo en línea!
fuente
Pyth, 45 bytes
Un programa que toma la entrada de dos listas separadas por comas en STDIN e imprime el resultado.
Probablemente todavía hay algo de golf por hacer aquí.
Pruébalo en línea
Explicación después
fuente
Haskell, 55 bytes
Define una función
g
que toma las dos listas de entrada y devuelve una lista que contiene las líneas de la salidafuente
PowerShell v2 +, 89 bytes
Dang, no creo que pueda atrapar JavaScript.
Toma entrada
$a
y$b
como matrices explícitas. Establece que la variable$x
sea la fila superior de los cuadros según el bucle$a
y alguna concatenación de cadenas. Eso está encapsulado en parens, por lo que se coloca en la tubería. Luego, recorremos$b
cada iteración colocando dos cadenas en la tubería: la misma cadena de estilo pero con espacios y en|
lugar de guiones y+
, y$x
. Todas esas cadenas se recopilan de la canalización con un implícitoWrite-Output
al finalizar el programa, con una nueva línea predeterminada entre ellas.Ejemplos
fuente
Ruby, 66 bytes
fuente
Jalea ,
3026 bytesPruébelo en TryItOnline
¿Cómo?
La entrada tomada es una lista de las dos listas,
[vertical, horizontal]
y utiliza la opción incrementada, por lo que el ejemplo 3 toma
[[3,2,1,1], [2,1,4,1,3,1]]
Cada una de ellas se convierte en una matriz booleana que indica el tipo de fila o el Tipo de carácter de fila respectivamente, por ejemplo, los
[[1,0,0,1,0,1,1,1], [1,0,1,1,0,0,0,1,1,0,0,1,1]]
cuadros se construyen haciendo las filas de los caracteres identificados por las combinaciones ROWTYPE y rowCharacterType - es decir, un ROWTYPE identifica cualquiera de
"+-"
o"| "
y un rowCharacterType identifica uno de esos dos caracteres.fuente