Created
November 11, 2017 15:49
-
-
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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