diff --git a/Ejercicio02.ipynb b/Ejercicio02.ipynb index 1a67d7d0fd250a3d72400dee7392e44f694596bd..c442c8fb85406bbcd8ee842c5a45eb181849651a 100644 --- a/Ejercicio02.ipynb +++ b/Ejercicio02.ipynb @@ -1,40 +1,106 @@ { "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 2 Ejercicio No. 2 - Triángulo de Pascal" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Escriba una rutina en python que reciba como entrada un número entero, n, e imprima los números en la n-ésima fila del triángulo de Pascal. El programa debe verificar si el número n es entero, o arrojar un mensaje informando que ha habido un error del usuario en caso contrario. • Modifique la rutina anterior para que reciba un número variable de argumentos: n1, n2, n3,… y retorne una lista cuyo primer elemento es una lista conteniendo los números en la fila n1 del triángulo de Pascal, el segundo elemento una lista con los números en la fila n2, y asà sucesivamente." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "#se define una funcion para calcular cada término.\n", + "def pascalCelda(fil,col):\n", + " #la primera columna siempre es 1\n", + " if (col==1): return 1\n", + " #Los términos donde fila=columna son siempre 1\n", + " if (fil==col): return 1\n", + " #termino inmediatamente anterior de la celda izquierda\n", + " upIzq = pascalCelda(fil-1,col-1)\n", + " #termino inmediatamente anterior de la celda derecha\n", + " upDer = pascalCelda(fil-1,col)\n", + " #el valor del término es la suma de los términos anteriores.\n", + " return upIzq+upDer\n" + ] + }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "ingrese un numero:8\n", + "ingrese un numero:10\n", "1 \n", "1 1 \n", "1 2 1 \n", "1 3 3 1 \n", "1 4 6 4 1 \n", "1 5 10 10 5 1 \n", - "1 6 15 20 15 6 1 \n" + "1 6 15 20 15 6 1 \n", + "1 7 21 35 35 21 7 1 \n", + "1 8 28 56 70 56 28 8 1 \n" ] } ], "source": [ - "def pascalCelda(fil,col):\n", - " if (col==1): return 1\n", - " if (fil==col): return 1\n", - " upIzq = pascalCelda(fil-1,col-1)\n", - " upDer = pascalCelda(fil-1,col)\n", - " return upIzq+upDer\n", - "\n", "n=input(\"ingrese un numero:\")\n", "for f in range(1,int(n)):\n", + " #para cada columna\n", " for c in range(1,f+1):\n", " print(pascalCelda(f,c),end=\" \",sep=\" \")\n", - " print(\"\")" + " #para separar cada fila\n", + " print(\"\") " + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ingrese varios numeros separados por ,:5,4,7\n", + "[[1, 1, 1, 1, 2, 1, 1, 3, 3, 1], [1, 1, 1, 1, 2, 1], [1, 1, 1, 1, 2, 1, 1, 3, 3, 1, 1, 4, 6, 4, 1, 1, 5, 10, 10, 5, 1]]\n" + ] + } + ], + "source": [ + "nn=input(\"ingrese varios numeros separados por ,:\")\n", + "#obtengo la lista de elementos\n", + "lista=nn.split(sep=\",\")\n", + "salida=[]\n", + "for p in range(len(lista)):\n", + " lpascal=[]\n", + " for f in range(1,int(lista[p])):\n", + " for c in range(1,f+1):\n", + " lpascal.append(pascalCelda(f,c))\n", + " salida.append(lpascal)\n", + "print(salida)" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, { "cell_type": "code", "execution_count": null,