six45 0.0.1 → 0.0.2
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.
- data/README.md +1 -0
- data/bin/six45 +7 -2
- data/lib/six45/Seeds.rb +2 -2
- data/lib/six45/version.rb +1 -1
- data/lib/six45.rb +33 -7
- data/spec/six45_spec.rb +32 -2
- metadata +2 -2
data/README.md
CHANGED
data/bin/six45
CHANGED
@@ -3,5 +3,10 @@
|
|
3
3
|
require 'six45'
|
4
4
|
require 'pp'
|
5
5
|
|
6
|
-
|
7
|
-
Six45.
|
6
|
+
if ARGV[0] == "magic"
|
7
|
+
Six45.magic_pick.each { |key, game| pp game }
|
8
|
+
else
|
9
|
+
number_of_games = Six45.is_number?(ARGV[0]) ? ARGV[0].to_i : 10
|
10
|
+
Six45.pick(number_of_games).each { |key, game| pp game }
|
11
|
+
end
|
12
|
+
|
data/lib/six45/Seeds.rb
CHANGED
data/lib/six45/version.rb
CHANGED
data/lib/six45.rb
CHANGED
@@ -4,8 +4,8 @@ require "six45/seeds"
|
|
4
4
|
module Six45
|
5
5
|
extend self
|
6
6
|
|
7
|
-
def seed
|
8
|
-
Seeds.new.generate
|
7
|
+
def seed(seed_size=6)
|
8
|
+
Seeds.new.generate seed_size
|
9
9
|
end
|
10
10
|
|
11
11
|
def lucky_candidates
|
@@ -18,23 +18,49 @@ module Six45
|
|
18
18
|
candidates.sort
|
19
19
|
end
|
20
20
|
|
21
|
-
def
|
21
|
+
def lucky_numbers
|
22
22
|
numbers = lucky_candidates
|
23
|
-
if numbers.
|
24
|
-
|
23
|
+
if numbers.any? { |d| d > 45 } || numbers.inject { |sum, d| sum+d } < 60
|
24
|
+
lucky_numbers
|
25
25
|
else
|
26
26
|
numbers
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
30
|
-
def pick
|
30
|
+
def pick(number_of_games=10)
|
31
31
|
games = {}
|
32
32
|
number_of_games.times do |i|
|
33
|
-
games[i] =
|
33
|
+
games[i] = lucky_numbers
|
34
34
|
end
|
35
35
|
games
|
36
36
|
end
|
37
37
|
|
38
|
+
def magic_seed
|
39
|
+
a_magic_seed = seed 5
|
40
|
+
if a_magic_seed.inject { |sum, n| sum+n }>37
|
41
|
+
magic_seed
|
42
|
+
else
|
43
|
+
a_magic_seed
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def magic_pick
|
48
|
+
magic_numbers = []
|
49
|
+
magic_games = {}
|
50
|
+
a_magic_seed = [1]
|
51
|
+
a_magic_seed += magic_seed
|
52
|
+
while a_magic_seed.size > 1 do
|
53
|
+
magic_numbers << a_magic_seed.inject(1) { |sum, n| sum+n }
|
54
|
+
a_magic_seed.pop
|
55
|
+
end
|
56
|
+
magic_numbers << a_magic_seed.last
|
57
|
+
magic_numbers = magic_numbers.sort
|
58
|
+
(0..(45-magic_numbers.last)).each do |x|
|
59
|
+
magic_games[1+x] = magic_numbers.map { |n| n+x }.sort
|
60
|
+
end
|
61
|
+
magic_games
|
62
|
+
end
|
63
|
+
|
38
64
|
def is_number?(i)
|
39
65
|
true if Float(i) rescue false
|
40
66
|
end
|
data/spec/six45_spec.rb
CHANGED
@@ -4,6 +4,7 @@ describe Six45 do
|
|
4
4
|
|
5
5
|
context "#seed" do
|
6
6
|
let(:seed) { Six45.seed }
|
7
|
+
let(:seed_five) { lambda { Six45.seed 5 } }
|
7
8
|
it "returns an array" do
|
8
9
|
seed.should be_kind_of(Array)
|
9
10
|
end
|
@@ -13,13 +14,22 @@ describe Six45 do
|
|
13
14
|
it "each number is less than 13" do
|
14
15
|
seed.each { |n| n.should be <= 13 }
|
15
16
|
end
|
17
|
+
it "also accepts an integer argument 5" do
|
18
|
+
seed_five.call.should_not raise_error ArgumentError
|
19
|
+
end
|
20
|
+
it "returns an array" do
|
21
|
+
seed_five.call.should be_kind_of(Array)
|
22
|
+
end
|
23
|
+
it "containing 5 numbers" do
|
24
|
+
seed_five.call.size.should be 5
|
25
|
+
end
|
16
26
|
end
|
17
27
|
|
18
28
|
context "#pick" do
|
19
29
|
let(:seed) { Six45.seed }
|
20
30
|
let(:lucky_numbers) { Six45.pick }
|
21
31
|
let(:pick_five) { lambda { Six45.pick 5 } }
|
22
|
-
it "returns
|
32
|
+
it "returns a hash" do
|
23
33
|
lucky_numbers.should be_kind_of(Hash)
|
24
34
|
end
|
25
35
|
it "containing 10 games" do
|
@@ -40,11 +50,31 @@ describe Six45 do
|
|
40
50
|
it "also accepts an integer argument 5" do
|
41
51
|
pick_five.call.should_not raise_error ArgumentError
|
42
52
|
end
|
43
|
-
it "returns
|
53
|
+
it "returns a hash" do
|
44
54
|
pick_five.call.should be_kind_of(Hash)
|
45
55
|
end
|
46
56
|
it "containing 5 games" do
|
47
57
|
pick_five.call.size.should be 5
|
48
58
|
end
|
49
59
|
end
|
60
|
+
|
61
|
+
context "#magic_pick" do
|
62
|
+
let(:lucky_numbers) { Six45.magic_pick }
|
63
|
+
it "returns a hash" do
|
64
|
+
lucky_numbers.should be_kind_of(Hash)
|
65
|
+
end
|
66
|
+
it "containing at least 7 game" do
|
67
|
+
lucky_numbers.size.should be >= 7
|
68
|
+
end
|
69
|
+
it "each game contains 6 uniq numbers" do
|
70
|
+
lucky_numbers.each do |k, g|
|
71
|
+
g.size.should eq g.uniq.size
|
72
|
+
g.size.should eq 6
|
73
|
+
end
|
74
|
+
end
|
75
|
+
it "all games cover at least 23 numbers" do
|
76
|
+
all_numbers = lucky_numbers.map{|k,v| v}.flatten.uniq
|
77
|
+
all_numbers.size.should be > 23
|
78
|
+
end
|
79
|
+
end
|
50
80
|
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.
|
4
|
+
version: 0.0.2
|
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-
|
12
|
+
date: 2012-06-26 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: A Gem helps pick 6 digits out of 45.
|
15
15
|
email:
|