Desafío
Este es un desafío simple. Dados dos enteros positivos w y hcrear una cerca ASCII con un ancho wy una altura de h. La cerca debe construirse usando las siguientes reglas:
- El
+personaje representará una publicación. - El
-personaje se usará para representar el ancho de la cerca. - El
|será usado para representar la altura de la cerca. - Después de que se
-hayan generado exactamente tres caracteres, se debe generar un+carácter después. Excluyendo las cuatro esquinas, cualquier otra vez que envíe un resultado no será válido. Puede seguir esta regla desde la izquierda o la derecha (ver ejemplos), pero debe ser coherente.+ - Después de que
|se hayan emitido exactamente dos caracteres, se debe generar un+carácter después. Excluyendo las cuatro esquinas, cualquier otra vez que envíe un resultado no será válido. Puede seguir esta regla desde la parte superior o inferior (ver ejemplos), pero debe ser coherente.+ - Cada cerca tendrá exactamente cuatro esquinas, y cada esquina estará representada con un
+.
En otras palabras: en cada tres -caracteres, debe generar un +. Y en cada dos |caracteres, debe generar un +.
Puede suponer que la cerca siempre será un rectángulo, y que ambos wy hnunca serán mayores 100o menores que1 . Se permite el espacio en blanco al final y / o al final.
Ejemplos / Casos de prueba
w = 1
h = 1
+-+
| |
+-+
w = 3
h = 2
+---+
| |
| |
+---+
w = 5
h = 7
+---+--+ or +--+---+
| | | |
| | + +
+ + | |
| | | |
| | + +
+ + | |
| | | |
| | + +
+ + | |
| | | |
+---+--+ +--+---+
w = 10
h = 5
+---+---+---+-+ or +-+---+---+---+
| | | |
| | + +
+ + | |
| | | |
| | + +
+ + | |
| | | |
+---+---+---+-+ +-+---+---+---+
w = 4
h = 4
+---+-+ or +-+---+
| | | |
| | | |
+ + + +
| | | |
| | | |
+---+-+ +-+---+
Reglas
- Se aplican lagunas estándar .
- Este es el código de golf , por lo que gana la respuesta más corta en bytes.

+toques?+-+-+-+-+-+no es válido. Perdón por la confusion.Respuestas:
C, 131 bytes
Pruébalo en línea!
Explicación:
fuente
Python 3 ,
140137128119106105 bytesPruébalo en línea!
fuente
iny[w+1+(w-1)//3]]en la última parte.'\n') for. Además, puede cambiar(w-1)a lo~-wque le permite eliminar los paréntesis, ya que los operadores unarios tienen mayor prioridad que los binarios. Lo mismo para(h-1)->~-hy(a-1)->~-a. Pruébelo en línea - 128 bytesdef f(w,h)tiene la misma longitud quelambda w,h, pero le permite usar varias líneas si eso le ayuda a seguira=~-w//3-~w;guardar 1 byteMathematica, 165 bytes
fuente
Pipa , 38 bytes
37 bytes de código, +1 para
-nbandera.Toma ancho y alto como argumentos de línea de comandos. Pruébalo en línea!
Explicación
fuente
Carbón,
474540 bytesExplicación: funciona dibujando los
-s /|s de cada lado por turno, insertando+s cuando sea necesario y luego terminando con a+. Después de dibujar los lados superior y derecho, salta de nuevo al inicio para dibujarlos en orden inverso, dibujando efectivamente los lados izquierdo y inferior. No sé si se permite la simetría rotacional, pero si es así, entonces para2725 bytes:Lleve la idea anterior al extremo dibujando el lado superior, girando hacia la izquierda, dibujando el lado derecho, girando nuevamente y luego repitiendo para dibujar los lados inferior e izquierdo al revés.
fuente
JavaScript (ES6),
133132 bytesToma de entrada en la sintaxis currificación:
f(width)(height).Fragmento de prueba
fuente
Pyth , 40 bytes
Banco de pruebas .
fuente
Java (OpenJDK 8) ,
178177 bytesPruébalo en línea!
-1 byte gracias a @KevinCruijssen
fuente
w->h->Pruébelo aquí.Carbón ,
47 4537 bytesPruébalo en línea!
Un enfoque diferente al de @ Neil : primero creo las cadenas
αyβcontengo los caracteres en los bordes horizontal y vertical, utilizando elRangeoperador que crea una repetición de una cadena hasta que se alcanza una longitud determinada. Luego los imprimo en el orden correcto:Enlace a una versión detallada .
fuente
Range, ¡eso ahorra 3 bytes en mi segundo enfoque!A…+---÷⁺²×⁴N³αA…+||÷⁺¹×³N²βPα↓βα+↖↑⮌β.05AB1E , 58 bytes
Pruébalo en línea!
Más duro en 05AB1E de lo que pensaba.
fuente