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. Los campos obligatorios están marcados con *

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