"Este programa entrega los números de una fila del\n",
"triángulo de Pascal.\n",
"\"\"\""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Ejercicio No. 2: Triángulo de Pascal\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Descripción de la actividad: \n",
"Escriba una rutina en python que reciba como entrada un número entero, n, e imprima los\n",
"números en la n-ésima fila del triángulo de Pascal. El programa debe verificar si el número\n",
"n es entero, o arrojar un mensaje informando que ha habido un error del usuario en caso\n",
"contrario.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"El triángulo de Pascal es un triángulo de números enteros, infinito y simétrico Se empieza con un 1 en la primera fila, y en las filas siguientes se van colocando números de forma que cada uno de ellos sea la suma de los dos números que tiene encima. Se supone que los lugares fuera del triángulo contienen ceros, de forma que los bordes del triángulo están formados por unos. Aquí sólo se ve una parte; el triángulo continúa por debajo y es infinito."
]
},
{
"cell_type": "code",
"execution_count": 94,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Ingrese un numero entero n:\n",
"2\n"
]
}
],
"source": [
"print(\"Ingrese un numero entero n:\")\n",
"numero = input()"
]
},
{
"cell_type": "code",
"execution_count": 95,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"str"
]
},
"execution_count": 95,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(numero)"
]
},
{
"cell_type": "code",
"execution_count": 96,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"int"
]
},
"execution_count": 96,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"n = int(numero)\n",
"type(n)"
]
},
{
"cell_type": "code",
"execution_count": 97,
"metadata": {},
"outputs": [],
"source": [
"#Creación de una función que calcula el factorial:\n",
"def fact(n):\n",
" res=1\n",
" for c in range(1,n+1):\n",
" res = res*c\n",
" \n",
" return res"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"El número combinatorio Cm n (n sobre m) que representa el número de grupos de m elementos que pueden hacerse de entre un conjunto de n (por ejemplo, (4 sobre 2) nos da el número de parejas distintas que podrían hacerse en un grupo de cuatro personas), se encuentra en el triángulo en la fila n+1, en el lugar m+1. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Con el número, vamos a calcular la combinatoria de la n-ésima fila. Usando la ecuación:\n",
"\n",
"$C_{m}^{n} = \\left(\\begin{array}{c} m \\\\ n \\end{array} \\right) = \\frac{m!}{n!(m-n)!}$"
]
},
{
"cell_type": "code",
"execution_count": 98,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"720"
]
},
"execution_count": 98,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"fact(6)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 99,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[1.0, 2.0, 1.0]\n"
]
}
],
"source": [
"lisPas = []\n",
"proof = n%2\n",
"for i in range(0,n+1):\n",
" coff = fact(n)/(fact(i)*fact(n-i))\n",
" lisPas.append(coff)\n",
"print(lisPas)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Parte b"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Modifique la rutina anterior para que reciba un número variable de argumentos: n1, n2, n3,...\n",
"y retorne una lista cuyo primer elemento es una lista conteniendo los números en la fila n1\n",
"del triángulo de Pascal, el segundo elemento una lista con los números en la fila n2, y así\n",
"sucesivamente.\n"
]
},
{
"cell_type": "code",
"execution_count": 100,
"metadata": {},
"outputs": [],
"source": [
"import re"
]
},
{
"cell_type": "code",
"execution_count": 149,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Ingrese sus numeros enteros n separados por espacios: 1 2 3 4\n"
]
}
],
"source": [
"num = input(\"Ingrese sus numeros enteros n separados por espacios: \")"
]
},
{
"cell_type": "code",
"execution_count": 150,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['1', '2', '3', '4']\n"
]
}
],
"source": [
"#num = re.sub(\"-\", ' ', palabras).rstrip() #con estas funciones sobre el string elimino los guiones\n",
"#y los espacios en blanco\n",
"numt=num.split(' ') #separo las palabras y las agrego a una lista llamada 'p'\n",
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.
%% Cell type:markdown id: tags:
El triángulo de Pascal es un triángulo de números enteros, infinito y simétrico Se empieza con un 1 en la primera fila, y en las filas siguientes se van colocando números de forma que cada uno de ellos sea la suma de los dos números que tiene encima. Se supone que los lugares fuera del triángulo contienen ceros, de forma que los bordes del triángulo están formados por unos. Aquí sólo se ve una parte; el triángulo continúa por debajo y es infinito.
%% Cell type:code id: tags:
``` python
print("Ingrese un numero entero n:")
numero=input()
```
%% Output
Ingrese un numero entero n:
2
%% Cell type:code id: tags:
``` python
type(numero)
```
%% Output
str
%% Cell type:code id: tags:
``` python
n=int(numero)
type(n)
```
%% Output
int
%% Cell type:code id: tags:
``` python
#Creación de una función que calcula el factorial:
deffact(n):
res=1
forcinrange(1,n+1):
res=res*c
returnres
```
%% Cell type:markdown id: tags:
El número combinatorio Cm n (n sobre m) que representa el número de grupos de m elementos que pueden hacerse de entre un conjunto de n (por ejemplo, (4 sobre 2) nos da el número de parejas distintas que podrían hacerse en un grupo de cuatro personas), se encuentra en el triángulo en la fila n+1, en el lugar m+1.
%% Cell type:markdown id: tags:
Con el número, vamos a calcular la combinatoria de la n-ésima fila. Usando la ecuación:
$C_{m}^{n} = \left(\begin{array}{c} m \\ n \end{array} \right) = \frac{m!}{n!(m-n)!}$
%% Cell type:code id: tags:
``` python
fact(6)
```
%% Output
720
%% Cell type:code id: tags:
``` python
```
%%Celltype:codeid:tags:
``` python
lisPas = []
proof = n%2
for i in range(0,n+1):
coff = fact(n)/(fact(i)*fact(n-i))
lisPas.append(coff)
print(lisPas)
```
%% Output
[1.0, 2.0, 1.0]
%% Cell type:markdown id: tags:
## Parte b
%% Cell type:markdown id: tags:
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 id: tags:
``` python
import re
```
%% Cell type:code id: tags:
``` python
num = input("Ingrese sus numeros enteros n separados por espacios: ")
```
%% Output
Ingrese sus numeros enteros n separados por espacios: 1 2 3 4
%% Cell type:code id: tags:
``` python
#num = re.sub("-", ' ', palabras).rstrip() #con estas funciones sobre el string elimino los guiones
#y los espacios en blanco
numt=num.split(' ') #separo las palabras y las agrego a una lista llamada 'p'