group_mixer 0.3.3 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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