Dado un entero de entrada n > 1
, genera un octágono de arte ASCII con longitudes laterales compuestas de n
caracteres. Ver ejemplos a continuación:
n=2
##
# #
# #
##
n=3
###
# #
# #
# #
# #
# #
###
n=4
####
# #
# #
# #
# #
# #
# #
# #
# #
####
n=5
#####
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
#####
and so on.
Puede imprimirlo en STDOUT o devolverlo como resultado de una función.
Cualquier cantidad de espacios en blanco extraños es aceptable, siempre y cuando los caracteres se alineen apropiadamente.
Reglas y E / S
- La entrada y salida se pueden dar por cualquier método conveniente .
- Puede usar cualquier carácter ASCII imprimible en lugar del
#
(excepto el espacio), pero el carácter "de fondo" debe ser el espacio (ASCII 32). - Un programa completo o una función son aceptables.
- Las lagunas estándar están prohibidas.
- Este es el código de golf, por lo que se aplican todas las reglas habituales de golf, y gana el código más corto (en bytes).
code-golf
ascii-art
code-golf
geometry
code-golf
balanced-string
code-golf
cops-and-robbers
code-challenge
cops-and-robbers
code-golf
code-golf
random
cryptography
code-golf
array-manipulation
number
code-challenge
integer
code-golf
math
integer
code-golf
math
math
parsing
image-processing
test-battery
math
number
combinatorics
fastest-code
code-golf
code-golf
math
number-theory
rational-numbers
polynomials
code-golf
math
geometry
code-golf
code-golf
number-theory
primes
factoring
code-golf
restricted-source
code-golf
string
decision-problem
counting
code-golf
math
sequence
fibonacci
code-golf
array-manipulation
counting
code-golf
array-manipulation
number-theory
code-golf
array-manipulation
code-golf
random
code-golf
string
hexadecimal
code-golf
string
code-challenge
sorting
code-golf
number
floating-point
code-golf
sorting
code-golf
decision-problem
fibonacci
code-golf
number
combinatorics
code-golf
string
code-golf
math
code-golf
electrical-engineering
code-golf
javascript
code-golf
base-conversion
code-golf
array-manipulation
matrix
binary-matrix
code-golf
kolmogorov-complexity
python
perl
ruby
code-golf
number
code-golf
optimization
integer-partitions
code-golf
string
code-golf
ascii-art
AdmBorkBork
fuente
fuente
Respuestas:
05AB1E , 3 bytes
Pruébalo en línea!
Explicación
Vea esta respuesta para comprender el lienzo 05AB1E.
fuente
JavaScript (ES6),
114106105104103 bytesPruébalo en línea!
¿Cómo?
Esto construye la salida carácter por carácter.
Dada la entrada , calculamos:norte
Para cada carácter en , calculamos :( x , y) ( h , v )
Las celdas que pertenecen al octágono satisfacen una de las siguientes condiciones:
Por ejemplo, conn = 4 (y norte′= 3 ):
fuente
Carbón de leña , 5 bytes
Mi primera respuesta con carbón!
Explicación:
Pruébalo en línea!
fuente
PolygonHollow(:*, InputNumber(), "#");
.Lienzo ,
151412 bytesPruébalo aquí!
Explicación:
Alternativa de 12 bytes .
fuente
R ,
122117115 bytesPruébalo en línea!
Transmite la lógica de la respuesta de Arnauld , específicamente esta revisión en caso de que haya más mejoras. ¡Otros 2 bytes guardados gracias a la sugerencia de Arnauld de invertir la lógica!
fuente
h*v&h+v-n
en JS porque&
es un operador bit a bit; pero es lógico en R, por lo que funciona).Python 2 , 96 bytes
Pruébalo en línea!
fuente
Python 2 , 81 bytes
Pruébalo en línea!
Python 2 , 75 bytes
Pruébalo en línea!
Si mezclar caracteres de salida está bien.
fuente
Powershell, 91 bytes
fuente
PowerShell ,
10797 bytesPruébalo en línea!
Si hubiera una forma barata de revertir la primera mitad, esta respuesta se sentiría mucho mejor. Construye la mitad izquierda, luego el núcleo (que es x
#'s
o espacios), luego refleja la lógica de la izquierda para hacer la derecha. Dato curioso, no necesita copiar sobre espacios en blanco finales.Desenrollado y explicado:
fuente
C (clang) ,
-DP=printf(
-DF=for(i
+ 179 = 199180 bytesPruébalo en línea!
Sin golf:
-19 bytes gracias a @ceilingcat
fuente
Python 2 , 130 bytes
Pruébalo en línea!
En dispositivos móviles, por lo que no es increíblemente golf.
fuente
(n+2*i)
.Lote, 260 bytes
Emite dos espacios iniciales en cada línea. Explicación: Batch no tiene operador de repetición de cadenas, capacidad limitada de corte de cadenas y requiere declaraciones separadas para realizar operaciones aritméticas. Por lo tanto, era más divertido hacer una cadena de la longitud de entrada en espacios (Batch al menos puede traducirlos a
#
s para las líneas superior e inferior) y luego cortar desde o hacia una posición específica que varía de 3 a la longitud para generar las diagonales (esto es lo que logra la última línea del guión).fuente
Ruby , 96 bytes
Pruébalo en línea!
No muy golfizado todavía. Podría jugar golf si encuentro el tiempo.
fuente
Rojo , 171 bytes
Pruébalo en línea!
Explicación:
fuente
APL (Dyalog Unicode) , 46 bytes SBCS
Esta solución fue proporcionada por Adám, ¡gracias!
Pruébalo en línea!
Mi (casi) solución original:
APL (Dyalog Unicode) , SBCS de 61 bytes
Pruébalo en línea!
¡Gracias a Adám por su ayuda!
La idea es encontrar el "diamante" que se encuentra en parte en el cuadrado y aplicar un filtro de detección de bordes para "delinear" el octagono.
fuente
(' '@~5 6∊⍨1⊥⊢∘,)⌺3 3⊢<(⍉⌽⌊⊢)⍣2∘(∘.+⍨∘⍳¯2+3×⊢)
⌺
. Más bien cuente 1 byte / char refiriéndose a SBCS según Meta .Perl 5,
201197188187186 bytes:Pruébalo en línea!
Lee el tamaño del octágono desde la primera línea de
STDIN
.fuente
$"
lugar de" "
.Perl 5, 176 bytes
Basado en la respuesta anterior de Nathan Mills (¡que no tengo suficiente representante para comentar!
$e
se puede simplificar para$a-1
ahorrar 6 bytes;$f
se puede asignar en cadena; guardar dos bytes; ¡No estoy seguro de dónde vienen los otros dos!Si bien
$e
puede reemplazarse$a-1
en los dos lugares donde ocurre, los corchetes adicionales necesarios significan que esto solo se iguala.Sin golf:
fuente
Perl 6 ,
7673 bytes-3 bytes gracias a Jo King
Pruébalo en línea!
Devuelve una lista de líneas.
fuente
C (gcc) ,
158153150 bytescincode ocho bytes gracias a ceilingcat .Pruébalo en línea!
fuente
Python 3 , 224 bytes
Pruébalo en línea!
fuente
Perl 5,
170168166 bytesEsto funciona por la magia de la expresión regular. El "si" solo es necesario para tratar el caso patológico de n = 2, que de otro modo genera algo como:
probablemente esto se puede codificar.
Creo que puede haber mucho más que ganar creando una cadena hasta el punto medio y luego invirtiéndola. Por supuesto, entonces necesitamos insertar / eliminar un espacio extra si n es impar (o usar el espacio delgado: p).
Sin golf
Creo que esto probablemente se pueda jugar un poco más, aparte de cambios significativos como empujar
$@
e imprimir eso al final.[Espacios de golf alrededor
..
y movió la impresión antes de asignar en dos casos, ahorrando en punto y coma.]fuente
\s
y no solo un espacio en la última expresión regularJ,
594541 bytesPruébalo en línea!
Agregará explicación esta noche.
fuente
Perl 5, 98 bytes
TIO
fuente