Reto
Dado un tamaño s, imprima una red de cubos de ese tamaño hecha de símbolos hash ( #
) y espacios ( ).
Ejemplos:
1:
#
# # #
#
#
2:
# #
# #
# # # # # #
# # # # # #
# #
# #
# #
# #
3:
# # #
# # #
# # #
# # # # # # # # #
# # # # # # # # #
# # # # # # # # #
# # #
# # #
# # #
# # #
# # #
# # #
La red en realidad puede ser cualquier red de cubos válida que se pueda plegar en un cubo, por ejemplo, estas:
# #
# #
# # # # # # # #
# # # # # # # #
# #
# #
# # # #
# # # #
# #
# #
# #
# #
# # # #
# # # #
Reglas
- La red resultante debe ser geométricamente válida (plegable en un cubo)
- Lagunas estándar prohibidas
- Lee las reglas cuidadosamente
- Este es el código de golf , la respuesta más corta gana, pero no se seleccionará
Respuestas:
Python 2, 47 bytes
Pruébalo en línea!
Imprime esta red, elegida por ser justificada a la izquierda:
Las líneas tienen
n
o4*n
copias de'# '
. Para cada una de ellas1,4,1
, imprimimosn
veces esa cantidad de copias,n
veces den
líneas. Tener unexec
bucle dentro de unfor
bucle parece un desperdicio, pero no vi mejor.Alternativas que probé:
(
def
Todas las funciones pueden ser una más corta como programa).fuente
Octava,
58444232 bytesen parte inspirado por la respuesta python de @xnor.
crea un patrón de escuadra de '#' para los resultados de la entrada 2;
cuatro
z
s se concatenan horizontalmente:z
yy
yz
se concatenan verticalmente¡Pruébelo en línea!
Respuesta anterior:
¡Pruébelo en línea!
Genera una en forma de T
fuente
Mathematica,
776052 bytes¡Gracias a Martin Ender por jugar al golf a 8 bytes de distancia!
Función sin nombre que toma un argumento entero positivo
#
y devuelve una cadena con nuevas líneas (incluida una nueva línea final); cada línea tiene un espacio final también. Primero definimos±
como una función que repite sus#
tiempos de entrada ; luegoa
se define como±"# "
(¡este#
es un carácter, no la entrada!), y a partir de esob
se define como el conjunto de#
líneas cortas, mientras que±{a,a,a,a}<>n
es el conjunto de#
líneas largas. (En ambos casos, hay un salto de línea literal entre comillas coincidentes). El final<>b
concatena la lista resultante de cadenas con una segunda copia del conjunto de líneas cortas. Ejemplo de salida cuando#=2
( la respuesta de xnor me enseñó que esta orientación es más golfista):Versión anterior de esta implementación:
Presentación original:
Construye un cabo serie de
4*(3#+1)
piezas, cada una de las cuales es ya sea"# "
," "
o"\n"
; simplemente calcula qué piezas usar según el índicen
. Ejemplo de salida cuando#=2
:fuente
JavaScript (ES6), 59 bytes
La salida incluye un espacio final al final de cada línea y una nueva línea final.
fuente
Ruby, 36 bytes
Uso:
Rubí, 38 bytes.
Esta forma es más larga en Ruby, pero espero que haya algunos idiomas donde sea más corta.
Uso:
Ambas respuestas pueden ser más cortas si se permite devolver (preferiblemente) una serie de cadenas o (menos preferiblemente) una sola cadena en lugar de imprimir.
fuente
Scala, 56 bytes
fuente
JavaScript (ES6), 71
Prueba
fuente
Java 8, 99 bytes
fuente
V ,
2423201820 bytesCon todos los personajes ocultos mostrados
^[
es0x1b
(carácter de escape literal) y^V
es0x16
(C-v
)Pruébalo en línea!
Tuve que aumentar bytecount porque el
Ä
comando tenía errores en este nuevo V pullSalidas en este formato:
con una nueva línea líder
Hexdump:
Explicación
Ahora que se ha completado una cara de la red, tenemos que crear la red
Solución alternativa si no sacamos los espacios:
2120181618 bytes(por la misma razón que la solución principal, este enlace TIO se modifica)
Pruébalo en línea!
fuente
V , 14 bytes (no competitivos)
Pruébalo en línea!
Por alguna razón, este desafío descubrió numerosos errores. Ahora que todos están arreglados, esta versión desafortunadamente no es competitiva, pero es bueno ver cómo debería ser una respuesta V a este desafío cuando no tiene que agregar toneladas de bytes para mantenerse al día con mi codificación descuidada.
Explicación:
fuente
J
problema no era la codificación descuidada AFAIK, ¿creo que era solo nvim default?Jalea ,
2019 bytesPruébalo en línea!
-1 gracias a 44874 (steenbergh).
¡NO PUEDO SUPERAR LA AYUDA DE MUDDYFISH!
¿Es esto golfable?
2019 bytes simplemente parece demasiado , al ver el enlace 1.Explicación:
fuente
@
, pero intercambiando los operandos ax
sí mismo:”#xẋ³Wẋ³K€Y
.Carbón de leña , 20 bytes
El código termina con un espacio. Pruébalo en línea!
Explicación
El carbón es un lenguaje especializado en arte ASCII. También está incompleto, tiene errores y está poco documentado. Baste decir que esto llevó una buena cantidad de prueba y error antes de hacer lo que se suponía que debía hacer.
Nλ
ingresa un número enλ
.G
es el comando polígono, que usaremos aquí para dibujar un rectángulo.↑λ←×⁶λ↓λ
especifica el borde del polígono:λ
pasos hacia arriba , hacia la izquierda 6 vecesλ
y hacia abajoλ
. (Eso es tresλ
porλ
bloques uno al lado del otro). Se infiere el borde inferior del rectángulo. El polígono se llena con la cadena#
.D
vuelca el lienzo actual en stdout, lo que resulta en algo como esto:G
comando, el cursor está en la esquina inferior izquierda del lienzo.M×⁴λ←
lo mueve hacia la izquierda 4λ
pasos (equivalente a dosλ
porλ
bloques).Póngalos juntos y tendrá una red de cubos.
fuente
Utilidades Bash / Unix,
72696866 bytesPruébalo en línea!
Esto funciona utilizando el hecho de que [4 ^ k / 3], cuando se escribe en la base 2, es 10101010 ... 01, con k 1's. (Los corchetes aquí denotan la función de piso).
fuente
Pyke, 16 bytes
Pruébalo aquí!
Equivalente a
Debido a no imprimibles
Esto usa un par de trucos para reducir el conteo de bytes:
[1, 4, 1]
XF
vuelca automáticamente la salida a la pila"#
al final se intercambia con la última*
, lo que significa que"
no se requiere el cierre . Esto sucede implícitamente cuando el último token es una cadena.fuente
Pitón 2 ,
687165 bytes-6 con agradecimiento a @sagiksp
Pruébalo en línea!
En ausencia de encontrar una manera de vencer a @xnor, publicaré mi función recursiva simplemente como un enfoque alternativo. Para impresiones f (5)
Este patrón fue elegido simplemente porque se puede dividir en dos partes, a diferencia de todas las demás.
fuente
PHP,
6462 bytesGuardado 2 bytes gracias a Christoph .
Imprime una red como esta:
(con una nueva línea principal)
fuente
while($a="282"[$i++/$s=$argv[1]]*$s)echo str_pad("\n",$a,"# ");
ahorra 2 bytes.Lote, 111 bytes
fuente
Agresivo ,
322928 bytesImprime el cubo neto justificado a la izquierda. Esto fue difícil de golf ...
Pruébalo en línea!
fuente
Retina ,
3937 bytesEsta es la primera vez que uso Retina, todavía estoy tratando de entender cómo hacer las cosas.
(con dos espacios finales después de la 4ta y 5ta línea)
¡Gracias a Martin Ender por jugar al golf 2 bytes!
Pruébalo en línea!
fuente
$_
en la parte inferior al cambiar algunas cosas después de eliminar la línea vacía. tio.run/nexus/… es el mismo número de bytes pero un poco más feo.QBIC ,
526740 bytesReescritura completa:
Esto ahora usa este patrón:
Donde
-
se llenan los espacios.fuente
Pip ,
281716 bytes15 bytes de código, +1 para
-n
bandera.Toma el tamaño como un argumento de línea de comandos. Pruébalo en línea!
Explicación
Lo siguiente no es exactamente cómo se modifican los datos, pero da la idea básica (para
a=2
):fuente
05AB1E , 13 bytes
Pruébalo en línea!
Explicación
Entrada de ejemplo
n=2
fuente
C #, 152 bytes
fuente
SmileBASIC,
5750 bytesExplicado:
Después de la primera IMPRESIÓN (tamaño = 2, @ es la posición del cursor):
Después del DESPLAZAMIENTO:
Después de la segunda IMPRESIÓN:
fuente
Lisp común,
838179 bytesUso:
(funcall #'(lambda(x)(format t"~v@{~v@{# ~}~:*~%~}~v@{~vt~0@*~v{# ~}~%~}"x(* x 3)(* x 2)))2)
Salida:
¿Como funciona?
Ideas de mejora son bienvenidas.
fuente