s1Eva_IIT2010_T3 Juego del amigo secreto

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

ejercicios resueltos Python 1eva_iit2010_t3 pdf

ejercicios resueltos Matlab 1eva_iit2010_t3 pdf