Ejercicio: 1Eva_IIT2010_T3 Juego del amigo secreto
Propuesta de solución en Python: py_pdf, tambien en matlab: m_pdf
Inicie el sorteo con banderas de amigo/amiga en cero,
AmigA = np.zeros(n+1,dtype=int)
AmigO = np.zeros(2*n+1,dtype=int)
para poner luego el valor sorteado a cada uno, si aún no se ha repetido.
dama = int(rnd.random()*n)+(n+1)
El valor repetido se verifica revisando el estado del arreglo en la posición correspondiente, esperando que sea vacio AmigO[dama]==0
, solo allí se asigna el amigo y se pasa al siguiente sorteo.
# sortea dama para cada AmigO
i = 1
while (i<=n):
dama = int(rnd.random()*n)+(n+1)
if (AmigO[dama]==0):
AmigO[dama] = i
i = i+1
ser repite el mismo proceso para el otro género.
Instrucciones en Python
# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 1Eva_IIT2010_T3 Juego del amigo secreto
# Propuesta de solucion. edelros@espol.edu.ec
import numpy as np
import random as rnd
# INGRESO
n = int(input('¿número de parejas?: '))
# PROCEDIMIENTO
AmigA = np.zeros(n+1,dtype=int)
AmigO = np.zeros(2*n+1,dtype=int)
# sortea dama para cada AmigO
i = 1
while (i<=n):
dama = int(rnd.random()*n)+(n+1)
if (AmigO[dama]==0):
AmigO[dama] = i
i = i+1
# sortea caballero para cada AmigA
j = n+1
while (j<=(2*n)):
caballero = int(rnd.random()*n)+1
if (AmigA[caballero]==0):
AmigA[caballero] = j
j = j+1
# SALIDA
print('pareja de caballeros')
i = 1
while (i<=n):
print(i,' , ',AmigA[i])
i = i+1
print('pareja de damas')
j = n+1
while (j<=(2*n)):
print(j,' , ',AmigO[j])
j = j+1
Resultado del algoritmo
¿número de parejas?: 4
pareja de caballeros
1 , 5
2 , 8
3 , 7
4 , 6
pareja de damas
5 , 3
6 , 4
7 , 1
8 , 2
>>>
Diagrama de Flujo
![](http://blog.espol.edu.ec/ccpg1001/files/2014/03/diagramaAmigoSecreto01.png)
![](http://blog.espol.edu.ec/ccpg1001/files/2014/03/diagramaAmigoSecreto02.png)
ejercicios resueltos Python 1eva_iit2010_t3 pdf
ejercicios resueltos Matlab 1eva_iit2010_t3 pdf