six45 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -20,9 +20,11 @@ Or install it yourself as:
20
20
 
21
21
  Run 'six45' in commandline:
22
22
 
23
- # six45 => Returns 10 games
24
- # six45 30 => Returns 30 games
25
- # six45 magic => Returns at least 7 games, which will cover at least 23 numbers of 45.
23
+ # six45 => Returns 10 standard games.
24
+ # six45 30 => Returns 30 standard games.
25
+ # six45 magic => Returns at least 7 games, which will cover at least 23 numbers from 45.
26
+ # six45 system => Returns 1 system game, which contains 8 numbers from 45 (Default: System 8).
27
+ # six45 system 9 => Returns 1 system game, which contains 9 numbers from 45 (System 9).
26
28
 
27
29
  ## Contributing
28
30
 
data/bin/six45 CHANGED
@@ -5,6 +5,9 @@ require 'pp'
5
5
 
6
6
  if ARGV[0] == "magic"
7
7
  Six45.magic_pick.each { |key, game| pp game }
8
+ elsif ARGV[0] == "system"
9
+ number_of_numbers = Six45.is_number?(ARGV[1]) ? ARGV[1].to_i : 8
10
+ Six45.system_pick(number_of_numbers).each { |key, game| pp game }
8
11
  else
9
12
  number_of_games = Six45.is_number?(ARGV[0]) ? ARGV[0].to_i : 10
10
13
  Six45.pick(number_of_games).each { |key, game| pp game }
data/lib/six45/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Six45
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
data/lib/six45.rb CHANGED
@@ -8,8 +8,8 @@ module Six45
8
8
  Seeds.new.generate seed_size
9
9
  end
10
10
 
11
- def lucky_candidates
12
- lucky_seed = seed
11
+ def lucky_candidates(seed_size=6)
12
+ lucky_seed = Seeds.new.generate seed_size
13
13
  candidates = []
14
14
  while lucky_seed.size > 0
15
15
  candidates << lucky_seed.inject { |sum, d| sum+d }
@@ -18,10 +18,10 @@ module Six45
18
18
  candidates.sort
19
19
  end
20
20
 
21
- def lucky_numbers
22
- numbers = lucky_candidates
21
+ def lucky_numbers(game_size=6)
22
+ numbers = lucky_candidates game_size
23
23
  if numbers.any? { |d| d > 45 } || numbers.inject { |sum, d| sum+d } < 60
24
- lucky_numbers
24
+ lucky_numbers game_size
25
25
  else
26
26
  numbers
27
27
  end
@@ -37,7 +37,8 @@ module Six45
37
37
 
38
38
  def magic_seed
39
39
  a_magic_seed = seed 5
40
- if a_magic_seed.inject { |sum, n| sum+n }>37
40
+ sum_of_the_seed = a_magic_seed.inject { |sum, n| sum+n }
41
+ if sum_of_the_seed>36 || is_odd?(sum_of_the_seed)
41
42
  magic_seed
42
43
  else
43
44
  a_magic_seed
@@ -61,8 +62,17 @@ module Six45
61
62
  magic_games
62
63
  end
63
64
 
65
+ def system_pick(size_of_games=8)
66
+ { 1 => (lucky_numbers size_of_games) }
67
+ end
68
+
64
69
  def is_number?(i)
65
70
  true if Float(i) rescue false
66
71
  end
67
72
 
73
+ private
74
+ def is_odd?(number)
75
+ number%2 == 1 ? true : false
76
+ end
77
+
68
78
  end
data/spec/six45_spec.rb CHANGED
@@ -63,18 +63,50 @@ describe Six45 do
63
63
  it "returns a hash" do
64
64
  lucky_numbers.should be_kind_of(Hash)
65
65
  end
66
- it "containing at least 7 game" do
67
- lucky_numbers.size.should be >= 7
66
+ it "containing at least 8 games" do
67
+ lucky_numbers.size.should be >= 8
68
68
  end
69
- it "each game contains 6 uniq numbers" do
69
+ it "each game contains 6 unique numbers" do
70
70
  lucky_numbers.each do |k, g|
71
71
  g.size.should eq g.uniq.size
72
72
  g.size.should eq 6
73
73
  end
74
74
  end
75
75
  it "all games cover at least 23 numbers" do
76
- all_numbers = lucky_numbers.map{|k,v| v}.flatten.uniq
76
+ all_numbers = lucky_numbers.map { |k, v| v }.flatten.uniq
77
77
  all_numbers.size.should be > 23
78
78
  end
79
+ it "always returns even number of games" do
80
+ (lucky_numbers.size%2).should be 0
81
+ end
82
+ end
83
+
84
+ context "#system_pick" do
85
+ let(:lucky_numbers) { Six45.system_pick }
86
+ let(:pick_nine) { lambda { Six45.system_pick 9 } }
87
+ it "returns a hash" do
88
+ lucky_numbers.should be_kind_of(Hash)
89
+ end
90
+ it "containing 1 game" do
91
+ lucky_numbers.size.should be 1
92
+ end
93
+ it "the game contains 8 unique numbers" do
94
+ lucky_numbers.each do |k, g|
95
+ g.size.should eq g.uniq.size
96
+ g.size.should eq 8
97
+ end
98
+ end
99
+ it "also accepts an integer argument 9" do
100
+ pick_nine.call.should_not raise_error ArgumentError
101
+ end
102
+ it "returns a hash" do
103
+ pick_nine.call.should be_kind_of(Hash)
104
+ end
105
+ it "containing 1 game" do
106
+ pick_nine.call.size.should be 1
107
+ end
108
+ it "the game contains 9 unique numbers" do
109
+ pick_nine.call[1].size.should be 9
110
+ end
79
111
  end
80
112
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: six45
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-06-26 00:00:00.000000000 Z
12
+ date: 2012-06-27 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: A Gem helps pick 6 digits out of 45.
15
15
  email: