Sha256: dc75b0f4bd2722bc753be4cc8ccb30f3e02d3cc36c599578df57e9b0f2093c63

Contents?: true

Size: 1.06 KB

Versions: 26

Compression:

Stored size: 1.06 KB

Contents

#!/usr/bin/env ruby

require 'rubygems'
require 'json'

participants = []
matches = []

exchange = {}

STDIN.each_line do |line|
  participants.push(line.chomp)
  matches.push(line.chomp)
end

def find_partner_for(participant, available_participants)
  result = nil
  available_participants.shuffle.each do |possible_participant|
    if possible_participant != participant
      result = possible_participant
      break
    end
  end
  unless result
      raise 'something is wrong!'
  end
  available_participants = available_participants - [result]
  # puts available_participants.inspect
  result
end

participants.each do |participant|
  exchange[participant] = find_partner_for(participant, (matches - exchange.values))
end

givers_validation = (exchange.keys.sort == participants.sort)
receivers_validation = (exchange.values.sort == participants.sort)

unless givers_validation
  raise "Givers don't make sense"
end

unless givers_validation
  raise "Receivers don't make sense"
end


exchange.each do |key, value|
  puts ({ :gives => key, :receives => value }.to_json)
end


Version data entries

26 entries across 26 versions & 1 rubygems

Version Path
ix-cli-0.0.27 bin/ix-gift-exchange
ix-cli-0.0.26 bin/ix-gift-exchange
ix-cli-0.0.25 bin/ix-gift-exchange
ix-cli-0.0.24 bin/ix-gift-exchange
ix-cli-0.0.23 bin/ix-gift-exchange
ix-cli-0.0.22 bin/ix-gift-exchange
ix-cli-0.0.21 bin/ix-gift-exchange
ix-cli-0.0.20 bin/ix-gift-exchange
ix-cli-0.0.19 bin/ix-gift-exchange
ix-cli-0.0.18 bin/ix-gift-exchange
ix-cli-0.0.17 bin/ix-gift-exchange
ix-cli-0.0.16 bin/ix-gift-exchange
ix-cli-0.0.15 bin/ix-gift-exchange
ix-cli-0.0.14 bin/ix-gift-exchange
ix-cli-0.0.13 bin/ix-gift-exchange
ix-cli-0.0.12 bin/ix-gift-exchange
ix-cli-0.0.11 bin/ix-gift-exchange
ix-cli-0.0.10 bin/ix-gift-exchange
ix-cli-0.0.9 bin/ix-gift-exchange
ix-cli-0.0.7 bin/ix-gift-exchange