Desafío
Este es un desafío simple. Dados dos enteros positivos w
y h
crear una cerca ASCII con un ancho w
y 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 w
y h
nunca serán mayores 100
o 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
in
y[w+1+(w-1)//3]]
en la última parte.'\n') for
. Además, puede cambiar(w-1)
a lo~-w
que le permite eliminar los paréntesis, ya que los operadores unarios tienen mayor prioridad que los binarios. Lo mismo para(h-1)
->~-h
y(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
-n
bandera.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 elRange
operador 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