group_mixer 0.3.3 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b352c4423d0ccd5afa79ce79098d709cd01f22de
4
- data.tar.gz: 261194246eefc4ac8fc903d81885313f217a2b63
3
+ metadata.gz: ec8323e04699c74b3b11148f75005eec5c3d4c03
4
+ data.tar.gz: ed62cb970cc742a568c4d317aacb27eb4c7334fb
5
5
  SHA512:
6
- metadata.gz: 6b385b6bc3f80ca3783744a225b699131b60055208210ea8ea65206b056f7c5a673f57c3d1495283188a64350f0bdeb2eb395a821e8f0d4d8116f5b11fd56e04
7
- data.tar.gz: 7b24c32e6dcd2243ebae53cc008b5e2073a4ee42a34b60d99daf0a6c050f55679b3ca862d7b25fa25512dd0319bbf3beafca1a8f953c56638e7f2de8f3806f22
6
+ metadata.gz: 9f9542fc909c46043da29140173702816488deebe85786edc227f1d5b03ca3d4b51a370568a66282cd2ff0ac52567d6098d91980a153cd1c8e2f7d566a831135
7
+ data.tar.gz: d8b89f1d2308564ab6d915e943f80478c80f22a2ba70a71db18576a07a8b3e750ba15b05d7bfceb9bc42efe3b9b3a0361358def55a6ccae7ca0532ca07ca50e4
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- group_mixer (0.3.3)
4
+ group_mixer (0.4.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -5,15 +5,19 @@ module GroupMixer
5
5
  class Mixer
6
6
  MAX_AMOUNT = 2 ** ([42].pack('i').size * 16 - 2) - 1
7
7
 
8
- def initialize(people, past_set, group_size)
8
+ def initialize(people, past_set, group_size, is_separate_reminders)
9
9
  @people = people
10
10
  @past_groups = past_set.to_a.map { |s| s.is_a?(WeightedGroup) ? s : WeightedGroup.new(s) }
11
11
  group_size = group_size.to_i
12
12
  if group_size.zero?
13
13
  raise ZeroGroupSize, 'group_size must be a number greater than 1'
14
14
  end
15
- min_member_size, max_group_size = people.size.divmod group_size
16
- @groups = make_groups(group_size, max_group_size, min_member_size)
15
+ if is_separate_reminders
16
+ @groups = make_separate_groups(group_size, @people.size)
17
+ else
18
+ min_member_size, max_group_size = people.size.divmod group_size
19
+ @groups = make_groups(group_size, max_group_size, min_member_size)
20
+ end
17
21
  end
18
22
 
19
23
  def execute
@@ -34,6 +38,12 @@ module GroupMixer
34
38
  (group_size - max_group_size).times.map { |n| Group.new(min_member_size) }
35
39
  end
36
40
 
41
+ def make_separate_groups(group_size, people_size)
42
+ member_size = people_size / (group_size - 1)
43
+ (group_size - 1).times.map { Group.new(member_size) } +
44
+ [Group.new(people_size % (group_size - 1))]
45
+ end
46
+
37
47
  def make_heuristic_from_past(people, past_set)
38
48
  past_pheromone = Hash.new(0)
39
49
  past_set.each do |past|
@@ -1,3 +1,3 @@
1
1
  module GroupMixer
2
- VERSION = "0.3.3"
2
+ VERSION = "0.4.0"
3
3
  end
data/lib/group_mixer.rb CHANGED
@@ -8,15 +8,15 @@ module GroupMixer
8
8
  class ZeroMaxMemberSize < StandardError
9
9
  end
10
10
 
11
- def self.by_group_size(people, past_set, group_size)
12
- Mixer.new(people, past_set, group_size).execute
11
+ def self.by_group_size(people, past_set, group_size, is_separate_reminders = false)
12
+ Mixer.new(people, past_set, group_size, is_separate_reminders).execute
13
13
  end
14
14
 
15
- def self.by_member_size(people, past_set, max_member_size)
15
+ def self.by_member_size(people, past_set, max_member_size, is_separate_reminders = false)
16
16
  if max_member_size.to_f < 1
17
17
  raise ZeroMaxMemberSize, 'max_member_size must be a number greater than 1'
18
18
  end
19
19
  group_size = (people.size / max_member_size.to_f).ceil
20
- Mixer.new(people, past_set, group_size).execute
20
+ Mixer.new(people, past_set, group_size, is_separate_reminders).execute
21
21
  end
22
22
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: group_mixer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.3
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - iwtn
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-01-03 00:00:00.000000000 Z
11
+ date: 2018-02-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler