Amigo invisible

Este año vamos algo justos para el reparto de papeletas del amigo invisible, así que una pequeña contribución para la generación automática de parejas (en Ruby):

# Preparamos las posibilidades de elección y las personas que eligen
posibilidades = ['marta', 'maria', 'mikel']
humanos = posibilidades.clone
asignacion = []

for h in humanos
  # Si me ha tocado mi propio nombre, vuelvo a cojer una 
  # papeleta hasta que me salga otro nombre que no sea el mio
  aun_no = true
  while aun_no
    i = rand(0..posibilidades.size-1)
    p = posibilidades[i]
    if h != p || posibilidades.size == 1
      # ¡ya tenemos una pareja!
      posibilidades.delete_at(i)
      asignacion << {h => p}
      aun_no = false
    end
  end
end

# Mostramos las parejas por pantalla
for a in asignacion
  a.each {|key,value| 
    key != value ? puts("A #{key} le ha tocado #{value}") : puts("Oh, a #{key} le ha tocado a si mismo")
  }
end

Acerca de Ibon

Me gusta salir a correr, pasear, andar en bici y patinar :) Si no te saludo es que, o no llevo las gafas puestas o que tengo mal día. Pero no te lo tomes a mal: seguro que mañana estoy de mejor humor ;) Me gusta escuchar algunos podcasts sobre divulgación científica: Coffee Break, CienciaES, y algunos otros que divulgan buen karma. Creo en los principios que fundamentan el Software Libre, y me parece una gran herramienta para conseguir una sociedad mas justa.
Esta entrada fue publicada en Uncategorized y etiquetada , . Guarda el enlace permanente.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.