Cuando era niño, me gustaba mucho jugar con estos juguetes:
Probablemente pretendían que estos fueran utilizados para el arte, ¡pero yo siempre los usé para las matemáticas! Fractales, patrones, etc. Una vez, me dieron este desafío:
Construye un triángulo sin usar ninguno de los mosaicos de triángulos verdes.
Este desafío me dejó perplejo por mucho tiempo, hasta que me topé con una forma realmente hermosa y simple de hacerlo con solo 3 trapecios:
/\
/_/\
/__\_\
Ahora, toma este triángulo y gíralo:
______
\ \__/
\/ /
\/
Usando estos dos triángulos, podemos construir triángulos más grandes a partir de ellos. Aquí hay un triángulo de altura 2:
/\
/_/\
/__\_\
/\ \__/\
/_/\/ /_/\
/__\_\/__\_\
Y aquí hay triángulos de altura 3-7:
#3
/\
/_/\
/__\_\
/\ \__/\
/_/\/ /_/\
/__\_\/__\_\
/\ \__/\ \__/\
/_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\
#4
/\
/_/\
/__\_\
/\ \__/\
/_/\/ /_/\
/__\_\/__\_\
/\ \__/\ \__/\
/_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\
/\ \__/\ \__/\ \__/\
/_/\/ /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\/__\_\
#5
/\
/_/\
/__\_\
/\ \__/\
/_/\/ /_/\
/__\_\/__\_\
/\ \__/\ \__/\
/_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\
/\ \__/\ \__/\ \__/\
/_/\/ /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\/__\_\
/\ \__/\ \__/\ \__/\ \__/\
/_/\/ /_/\/ /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\/__\_\/__\_\
#6
/\
/_/\
/__\_\
/\ \__/\
/_/\/ /_/\
/__\_\/__\_\
/\ \__/\ \__/\
/_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\
/\ \__/\ \__/\ \__/\
/_/\/ /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\/__\_\
/\ \__/\ \__/\ \__/\ \__/\
/_/\/ /_/\/ /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\/__\_\/__\_\
/\ \__/\ \__/\ \__/\ \__/\ \__/\
/_/\/ /_/\/ /_/\/ /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\/__\_\/__\_\/__\_\
#7
/\
/_/\
/__\_\
/\ \__/\
/_/\/ /_/\
/__\_\/__\_\
/\ \__/\ \__/\
/_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\
/\ \__/\ \__/\ \__/\
/_/\/ /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\/__\_\
/\ \__/\ \__/\ \__/\ \__/\
/_/\/ /_/\/ /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\/__\_\/__\_\
/\ \__/\ \__/\ \__/\ \__/\ \__/\
/_/\/ /_/\/ /_/\/ /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\/__\_\/__\_\/__\_\
/\ \__/\ \__/\ \__/\ \__/\ \__/\ \__/\
/_/\/ /_/\/ /_/\/ /_/\/ /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\/__\_\/__\_\/__\_\/__\_\
El reto
Escriba un programa o función que tome un número n e imprima un triángulo sin triángulo de altura n . Los espacios finales en cada línea son aceptables, y hasta una nueva línea final o inicial también es aceptable. IO puede estar en cualquier formato razonable. Se garantiza que la entrada sea un número entero positivo, por lo que no tiene que preocuparse por números negativos, decimales, no números, etc.
¡La respuesta más corta en bytes gana!
fuente
Respuestas:
CJam, 47
Explicación:
Pruébalo en línea
fuente
Rubí, 79
A. (-4 bytes,
-1
+1
) cambió de 0-indexado (.times
) a 1-indexado (1.upto
)B. (-5 bytes) cambió de una matriz de tres cadenas de 6 caracteres a la selección de una subcadena de 6 caracteres de una cadena de 18 caracteres.
C. (-1 byte)
m=n*3
->n*=3
D. (-5 bytes) redujo las cinco barras invertidas dobles a barras diagonales simples (en parte posible gracias al reordenamiento de la cadena requerida para el punto A)
Rubí, 94
explicación
La unidad básica es un diamante 3x6 de la siguiente manera (último carácter en cada fila duplicado para mayor claridad :)
Todo lo que necesitamos hacer es mostrar una ventana adecuada de este patrón. Ruby's le
ljust
permite rellenar con cualquier cadena, no solo espacios. Normalmenteljust
se usaría para rellenar una cadena de caracteres imprimibles agregando espacios al final, pero aquí lo usamos al revés: para rellenar una cadena de espacios agregando caracteres imprimibles al final.sin golf en el programa de prueba
fuente
Retina ,
150122118 bytes¡El resultado de este desafío se ve increíble, por cierto!
La entrada está en unario. La salida contiene un salto de línea final. El código usa la codificación ISO 8859-1. Tenga en cuenta el espacio final en la penúltima línea.
Pruébalo en línea
Explicación
Si desea una explicación más detallada, comente o envíeme un mensaje en el chat.
Gracias a Martin por jugar al golf con 32 bytes de descuento.
fuente
Lenguaje de impresión ascii de Tarmo, 46 bytes. (no competidor)
Solo mirando lenguajes de programación tan extraños como CJam, me marea un poco lo complejo, antinatural y críptico que puede ser el lenguaje, que quería "ir audazmente a donde ningún hombre había ido antes" e inventar mi propio lenguaje. Como resultado, he creado mi propio lenguaje para la impresión de patrones ascii.
La idea básica es que puede definir primero el patrón y luego la impresión, utilizando el mismo tipo de carácter '1' o '2' o cualquier número, puede definir su propio patrón de impresión.
Una vez que se define el patrón (comienza desde el número hasta el final del número): los siguientes números ejecutarán la impresión del patrón.
Por ejemplo
Salidas como esta:
Definirá el patrón 1 y luego lo imprimirá de inmediato. El patrón se define todo separado con '|' personaje. 0 al final: actúa como la terminación del patrón.
Los caracteres especiales como '$' están reservados como avance de línea, y '~' está reservado para el espaciado, la mitad, de un patrón específico.
Will generará un texto como este:
Lo siguiente es for-loops. Ese debe ser fácilmente visible, por lo que he conservado {} corchetes para bucles for, pero los nombres de las variables se nombran automáticamente, por lo que el primer corchete usará 'a' variable, el segundo 'b' y así sucesivamente. La iteración siempre irá de 0 a un número específico, y ese número se define antes de {} paréntesis.
'n' es una variable reservada para la entrada de toda la función.
Entonces código:
Salidas de Will (con n == 4):
Y '#' es un modificador especial para recortar espacios en blanco de plomo.
Y finalmente toda la solución:
DrawPatterns.cs:
Con argumentos de línea de comando como este: -d "1 / \ | / _ / \ | / ___ \ 2 __ | / 0n {na-1 {½} 1a {2 # 1} $}" 3
Will genera esto:
fuente
JavaScript (ES6), 119 bytes
Donde
\n
representa el carácter literal de nueva línea. Si una línean*3
inicial con espacios y una nueva línea es aceptable,.slice(1)
se puede eliminar para ahorrar 9 bytes.fuente
Python 2, 118 bytes
Enfoque similar a la respuesta del nivel del río San Rubí .
Pruébalo en línea
fuente
Python 2, 142 bytes
El principio es muy similar al de otras respuestas: toma tres cadenas repetidas y luego colócalas de tal manera que solo necesites recortar algunas de ellas para obtener el triángulo, luego colócalas a la izquierda.
fuente
C ++, 395 bytes
Código de golf por primera vez con un tamaño glorioso de 395 bytes en C ++. En mi caso, se siente un poco como un concurso de ofuscación: D
fuente
Pyth, 66 bytes
Pruébalo en línea!
fuente