El patrón que se observa Triangular, números, sumas, etc.) se puede encontrar en el triángulo de Pascal:
Un poco de razonamiento, junto con el conocimiento de que el $k$th elemento en la $n$th fila del triángulo de Pascal es $\binom{n}{k}$ te debería conducir a una solución por el patrón de búsqueda. La lógica detrás de la solución es la siguiente:
Para encontrar mi solución, pensé en el problema como una lista de $k$ niveles, donde puede comenzar en cualquier número de $1$ $n$y reducir el número de cada momento. Es útil pensar en añadir un nivel extra en cualquiera de los lados, de modo que los dos lados son fijos. Agregar un $n$ al principio, dado que no puede comenzar más que eso, y agregar un $1$ al final, ya que no puede terminar más que eso. A continuación, puede representar una instrucción print como una cadena de $i_1-i_2-i_3\ldots i_{k-1}-i_k$. En cada nuevo nivel de bucle, que puede o no puede disminuir su número. Entonces usted puede hacer (para n=3,k=3) $(3)-3-3-3-(1)$ o $(3)-3-2-1-(1)$. A continuación, puede utilizar las estrellas y las barras (1) (2), con $n$ 'estrellas' (movimientos hacia abajo) y $k$ 'barras' (divisores; los números o guiones entre los saltos). Por lo tanto, usted consigue $\binom{k+n-1}{k}$ instrucciones de impresión.
Por ejemplo, el siguiente código python se ejecuta para el caso de $n=5,k=3$:
>>> x=0
>>> n=5
>>> for i_1 in range(1,n+1):
... for i_2 in range(1,i_1+1):
... for i_3 in range(1,i_2+1):
... x+=1
... print n,"-",i_1,"-",i_2,"-",i_3,"-",1
...
5 - 1 - 1 - 1 - 1
5 - 2 - 1 - 1 - 1
5 - 2 - 2 - 1 - 1
5 - 2 - 2 - 2 - 1
5 - 3 - 1 - 1 - 1
5 - 3 - 2 - 1 - 1
5 - 3 - 2 - 2 - 1
5 - 3 - 3 - 1 - 1
5 - 3 - 3 - 2 - 1
5 - 3 - 3 - 3 - 1
5 - 4 - 1 - 1 - 1
5 - 4 - 2 - 1 - 1
5 - 4 - 2 - 2 - 1
5 - 4 - 3 - 1 - 1
5 - 4 - 3 - 2 - 1
5 - 4 - 3 - 3 - 1
5 - 4 - 4 - 1 - 1
5 - 4 - 4 - 2 - 1
5 - 4 - 4 - 3 - 1
5 - 4 - 4 - 4 - 1
5 - 5 - 1 - 1 - 1
5 - 5 - 2 - 1 - 1
5 - 5 - 2 - 2 - 1
5 - 5 - 3 - 1 - 1
5 - 5 - 3 - 2 - 1
5 - 5 - 3 - 3 - 1
5 - 5 - 4 - 1 - 1
5 - 5 - 4 - 2 - 1
5 - 5 - 4 - 3 - 1
5 - 5 - 4 - 4 - 1
5 - 5 - 5 - 1 - 1
5 - 5 - 5 - 2 - 1
5 - 5 - 5 - 3 - 1
5 - 5 - 5 - 4 - 1
5 - 5 - 5 - 5 - 1
>>> x
35
$35=\binom{5+3-1}{3}=\binom{7}{3}$