Skip to content

Instantly share code, notes, and snippets.

@walerian777
Created November 11, 2017 15:49
Show Gist options
  • Save walerian777/6c8e4540b98720c2e75f6f13906a99e8 to your computer and use it in GitHub Desktop.
Save walerian777/6c8e4540b98720c2e75f6f13906a99e8 to your computer and use it in GitHub Desktop.
A simple script for christmas draw. Pass an array of names to find out who is preparing a gift for whom.
require 'digest'
class ChristmasDraw
attr_accessor :names
def initialize(names)
@names = names
end
def call
initialize_containers
names.each { |name| draw(name) }
@results
end
private
def initialize_containers
@used = []
@results = {}
end
def draw(name)
drawed_name = drawable_names(name).sample
update_used(drawed_name)
update_results(name, drawed_name)
end
def drawable_names(name)
@names - @used - [name]
end
def update_used(name)
@used << name
end
def update_results(name, drawed_name)
encoded_drawed_name = encode(drawed_name)
@results[name] = encoded_drawed_name
end
def encode(name)
Digest::MD5.hexdigest(name)
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment