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 >>>