Comenzando con /\
usted, puede crear un patrón similar a un triángulo de Sierpinski agregando una línea debajo de tal manera que ...
- Cualquier rama suelta
/
o\
se divide de nuevo en dos ramas:/\
. - Cualquier colisión de ramas
\/
muere con nada (excepto espacios) debajo.
Repetir estas reglas produce
/\
/\/\
/\ /\
/\/\/\/\
/\ /\
/\/\ /\/\
etc...
Escriba un programa o función que tome un entero positivo N e imprima las primeras N líneas de este patrón en stdout, sin más espacios iniciales o finales de los necesarios.
Por ejemplo, si la entrada es 1
la salida debe ser
/\
Si la entrada es 2
la salida debe ser
/\
/\/\
Si la entrada es 8
la salida debe ser
/\
/\/\
/\ /\
/\/\/\/\
/\ /\
/\/\ /\/\
/\ /\ /\ /\
/\/\/\/\/\/\/\/\
Y así.
El código con la menor cantidad de bytes gana.
code-golf
fractal
code-golf
math
polynomials
abstract-algebra
code-golf
geometry
3d
popularity-contest
string
code-golf
math
3d
code-golf
javascript
browser
code-golf
random
array-manipulation
code-golf
restricted-source
javascript
set-theory
code-golf
graph-theory
path-finding
decision-problem
code-golf
code-golf
primes
c
code-golf
graphical-output
fractal
fastest-code
simulation
code-golf
sequence
code-golf
graphical-output
code-golf
code-golf
math
binary
rational-numbers
code-golf
number
fibonacci
popularity-contest
code-golf
number
code-golf
game
Pasatiempos de Calvin
fuente
fuente
Respuestas:
GolfScript (42 bytes)
Demostración en línea
Esto explota una relación bien conocida entre el triángulo de Pascal y el triángulo de Sierpinski.
fuente
CJam,
4846 bytesEnfoque recursivo simple basado en las observaciones 1 y 2 de la pregunta.
Pruébalo en línea.
Cómo funciona
CJam, 51 bytes
Me gusta más este enfoque, pero no puede competir con el recursivo. Incluso después de eliminar
2mL
(lo que resulta en al menos O (2 n ) tiempo de ejecución), todavía estoy en 48 bytes ...Este enfoque codifica
/\
los s como 1 y los espacios dobles entre ellos como 0. Considerando los números binarios de las matrices resultantes, vemos que la configuración de la enésima fila corresponde al enésimo número entero mayor que 1 que puede expresarse como producto de diferentes números de Fermat (enteros de la forma 2 2 k +1 ).Cómo funciona
fuente
Python 2 -
140 139 127 122 121 118116Basado en reemplazos de cadenas temporales ( /programming//a/8687380/3419103 ):
/
>V
\
>V
\/
>__
(2 espacios)V
>/\
fuente
b*(N-1)+m+n
podría serb*~-N+m+n
Javascript - 117 bytes
Minified:
Expandido:
Salida de muestra (para
n = 20
):Ahora bien, si sólo el
repeat
yreplace
nombres de funciones no eran tan largas. :PAGfuente
Pyth, 45 bytes
Ejecución de ejemplo
Cómo funciona
fuente
Rubí, 90
Explicación
Integer
.String#center
para crear unString
"/\"
conn - 2
espacios en cada lado y ponerlo en unArray
(a
).a
último elemento dea
con cada aparición de"\/"
reemplazado con" "
y cada aparición de" /"
o" \"
reemplazado con"/\"
.puts
para imprimir cada elemento ena
su propia línea.fuente
Haskell,
128112fuente
import Data.List
(desdeunlines
que lounlines
está en el preludio.JavaScript (E6) 107
106Editar: recuento de bytes fijo, hecho recursivo.
No muy diferente de la otra respuesta JS ... al menos esta 'imprime' el patrón según lo solicitado. El núcleo está reemplazando '/' '\' con '/ \' y todo el resto con '' en cada nueva línea.
Prueba en la consola FireFox / FireBug
Salida
fuente
Perl 5 - 56 bytes
Los \ 0 se pueden reemplazar por caracteres de bytes nulos reales
Está utilizando el hecho de que si ignora los espacios iniciales y representa '/ \' como 1 y '' como 0, el patrón en una fila dada f (n) = f (n-1) ^ (f (n-1) < <1). Sin embargo, los cálculos en el código anterior se ejecutan en cadenas que están cerca de la salida esperada (sin espacios iniciales, otros espacios reemplazados por bytes nulos) gracias a la manipulación de cadenas bit a bit de perl.
fuente
Python 2, 84 bytes
fuente
Javascript con lambdas,
141128141
128
Se puede probar en Firefox (n = 16):
fuente
Python 2, 97 bytes
fuente
Mathematica, 86 bytes
fuente