-
Notifications
You must be signed in to change notification settings - Fork 0
/
calculadora_arreglos_permutaciones_combinaciones_itertools.py
118 lines (93 loc) · 3.62 KB
/
calculadora_arreglos_permutaciones_combinaciones_itertools.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
# -*- coding: UTF-8 -*-
#CALCULADORA DE ARREGLOS, PERMUTACIONES Y COMBINACIONES
#Obligatorio - Probabilidad y Estadística - Prof.: Álvaro Núñez - Ce.R.P. - 2016
#Integrantes: Alicia Ronzoni - Gianna Giupponi - Jorge (Poroto) Ferreira
#Desarrollado en Python 3.4.3
import os, sys
from itertools import *
opcion = -1
autores = "\nAutores: Alicia Ronzoni, Gianna Giupponi y Jorge Ferreira\n\n"
os.system("title Calculadora de Arreglos, Permutaciones y Combinaciones") #Título de la ventana
def limpiar():
sistema = os.name
#Limpia pantalla tanto en Linux como Windows
if sistema == "nt":
return os.system("cls")
else:
return os.system("clear")
def volver():
return input("\nPresione Enter para volver al Menú Principal")
def factorial(x, n): #Cálculo de factorial recursivo
if(n>0):
x = factorial(x, n-1)
x = x * n
else:
x = 1
return x
def cargar_elementos(items):
for i in range(len(items)):
items[i] = input("Ingrese elemento " + str(i+1) + ": ")
def arreglos():
i = 1
m = int(input("Indique cantidad de datos a ingresar: M="))
print("") #Salto de línea luego de ingresada cantidad
elementos = [0 for i in range(m)]
cargar_elementos(elementos)
print("")
n = int(input("Indique cantidad de elementos a seleccionar (N < M): N="))
while(n >= m): #No permite seguir el programa hasta que no se ingrese un N menor a M
n = int(input("¡N DEBE SER MENOR A M! \nReingrese cantidad de elementos a seleccionar (N < M): N="))
print("") #Forzar salto de línea luego de ingresada cantidad
print("Cantidad de Arreglos (Am/n):", int(factorial(1, m) / factorial(1, m - n)), "\n") #Am/n = m! / (m - n)! - Arreglo de M elementos, tomados de a N - importa el orden
for elementos in permutations(elementos, n):
print(str(i) + ")", elementos)
i += 1
def combinaciones():
i = 1
m = int(input("Indique cantidad de datos a ingresar: M="))
print("") #Salto de línea luego de ingresada cantidad
elementos = [0 for i in range(m)]
cargar_elementos(elementos)
print("")
n = int(input("Indique cantidad de elementos a seleccionar (N < M): N="))
while(n >= m): #No permite seguir el programa hasta que no se ingrese un N menor a M
n = int(input("¡N DEBE SER MENOR A M! \nReingrese cantidad de elementos a seleccionar (N < M): N="))
print("") #Forzar salto de línea luego de ingresada cantidad
print("Cantidad de Combinaciones (Cm/n):", int(factorial(1, m) / (factorial(1, n) * factorial(1, m - n))), "\n") #Cm/n = m! / (n!*(m - n)!) - Combbinación de M elementos, tomados de a N - no importa el orden
for elementos in combinations(elementos, n):
print(str(i) + ")", elementos)
i += 1
def permutaciones():
i = 1
p = int(input("Indique cantidad de datos a ingresar: n="))
print("") #Salto de línea luego de ingresada cantidad
elementos = [0 for i in range(p)]
cargar_elementos(elementos)
print("\nCantidad de Permutaciones (Pn):", factorial(1, p), "\n") #P! - Prmutación: Arreglo de todos los elementos, tomados de a todos - importa el orden
for elementos in permutations(elementos, p):
print(str(i) + ")", elementos)
i += 1
while opcion != 0:
limpiar()
print("Bienvenido a Programa Combinatorio!", autores)
print("Digite su opción y presione Enter: \n\n 1. Arreglos \n 2. Combinaciones \n 3. Permutaciones \n 0. Salir")
try:
opcion = int(input())
if opcion == 1:
limpiar()
print("Cálculo de Arreglos", autores)
arreglos()
volver()
elif opcion == 2:
limpiar()
print("Cálculo de Combinaciones", autores)
combinaciones()
volver()
elif opcion == 3:
limpiar()
print("Cálculo de Permutaciones", autores)
permutaciones()
volver()
except:
print("Ingreso de dato inválido")
volver()