bet 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.
- checksums.yaml +4 -4
- data/lib/bet/bet_calculations/combinatorial.rb +24 -12
- data/lib/bet/bet_calculations/core.rb +8 -4
- data/lib/bet/calc.rb +25 -23
- data/lib/bet/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 98a33134f1f23b9347eb046690cc6f2692c6452b
|
4
|
+
data.tar.gz: e8a3390c0910bca81f24b078ac295c99c12a0521
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e32a4970b3ad3570f0cc0121a5d7c316052640feb649fa8b45c49dbcc907e9d606ce4edd319544e17cd1ab417030d2803ab7eb30a06fbd18aa9c719af3d34269
|
7
|
+
data.tar.gz: 87c053a6cb75605c10422fb29145c00df682d39ac263398e31de4a38c6e31cb5824531737a9ae7be482381076bb91b6bfd8aac238a221f59918b9415df3d2859
|
@@ -11,8 +11,8 @@ module Bet
|
|
11
11
|
block: 9
|
12
12
|
}.each do |ord, n|
|
13
13
|
define_method(ord) do |opts|
|
14
|
-
|
15
|
-
raise ArgumentError, "Wrong number of
|
14
|
+
results = extract_prices(opts)
|
15
|
+
raise ArgumentError, "Wrong number of results (#{results.size} for #{n})" if results.size != n
|
16
16
|
opts[:min_size] = 2
|
17
17
|
full_cover(opts)
|
18
18
|
end
|
@@ -28,8 +28,8 @@ module Bet
|
|
28
28
|
block_with_singles: 9
|
29
29
|
}.each do |ord, n|
|
30
30
|
define_method(ord) do |opts|
|
31
|
-
|
32
|
-
raise ArgumentError, "Wrong number of
|
31
|
+
results = extract_prices(opts)
|
32
|
+
raise ArgumentError, "Wrong number of results (#{results.size} for #{n})" if results.size != n
|
33
33
|
full_cover(opts)
|
34
34
|
end
|
35
35
|
end
|
@@ -39,18 +39,30 @@ module Bet
|
|
39
39
|
opts = parse_opts(opts)
|
40
40
|
opts = { min_size: 1 }.merge(opts)
|
41
41
|
|
42
|
-
num_bets =
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
42
|
+
num_bets = (opts[:min_size]..prices.length).to_a.map do |n|
|
43
|
+
(1..prices.length).to_a.combination(n).to_a.length
|
44
|
+
end.reduce(:+)
|
45
|
+
|
46
|
+
winning_prices = if prices.is_a?(Hash)
|
47
|
+
prices.select{ |_,v| win_place_lose?(v) == :win }.keys
|
48
|
+
else
|
49
|
+
prices
|
50
|
+
end
|
51
|
+
|
52
|
+
returns = (opts[:min_size]..winning_prices.length).to_a.map do |n|
|
53
|
+
winning_prices.combination(n).map do |multis|
|
54
|
+
acca(stake: opts[:stake], prices: multis)[:returns]
|
47
55
|
end.reduce(:+)
|
48
56
|
end.reduce(:+)
|
49
57
|
|
50
|
-
|
51
|
-
profit = returns -
|
58
|
+
outlay = num_bets * opts[:stake]
|
59
|
+
profit = returns - outlay
|
52
60
|
|
53
|
-
|
61
|
+
{
|
62
|
+
returns: returns,
|
63
|
+
profit: profit,
|
64
|
+
outlay: outlay
|
65
|
+
}
|
54
66
|
end
|
55
67
|
end
|
56
68
|
end
|
@@ -15,13 +15,17 @@ module Bet
|
|
15
15
|
|
16
16
|
return send("ew_#{__method__}") if opts[:ew]
|
17
17
|
|
18
|
-
returns = c(opts[:stake],
|
18
|
+
returns = c(opts[:stake], prices.reduce(:*))
|
19
19
|
profit = returns - opts[:stake]
|
20
20
|
|
21
|
-
|
21
|
+
{
|
22
|
+
returns: returns,
|
23
|
+
profit: profit,
|
24
|
+
outlay: opts[:stake]
|
25
|
+
}
|
22
26
|
end
|
23
|
-
|
24
|
-
|
27
|
+
alias_method :acca, :accumulator
|
28
|
+
alias_method :parlay, :accumulator
|
25
29
|
end
|
26
30
|
end
|
27
31
|
end
|
data/lib/bet/calc.rb
CHANGED
@@ -12,34 +12,36 @@ module Bet
|
|
12
12
|
DEFAULT_OPTS = { stake: 1, ew: false }
|
13
13
|
WIN_PLACE_LOSS_INTEGER = { -1 => :loss, 0 => :place, 1 => :win }
|
14
14
|
|
15
|
-
attr_accessor :returns, :profit
|
15
|
+
attr_accessor :returns, :profit, :outlay
|
16
16
|
|
17
17
|
def initialize(bet_type, opts)
|
18
|
-
@returns, @profit, @
|
18
|
+
@returns, @profit, @outlay = send(bet_type, opts).values
|
19
19
|
end
|
20
20
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
def c(stake, price)
|
27
|
-
stake * price
|
28
|
-
end
|
29
|
-
|
30
|
-
def extract_prices(opts_or_prices)
|
31
|
-
case opts_or_prices
|
32
|
-
when Hash
|
33
|
-
opts_or_prices[:prices]
|
34
|
-
when Numeric
|
35
|
-
[opts_or_prices]
|
36
|
-
else
|
37
|
-
opts_or_prices
|
21
|
+
class << self
|
22
|
+
private
|
23
|
+
def win_place_lose?(v)
|
24
|
+
v.is_a?(Fixnum) ? WIN_PLACE_LOSS_INTEGER[v] : v
|
38
25
|
end
|
39
|
-
end
|
40
26
|
|
41
|
-
|
42
|
-
|
43
|
-
|
27
|
+
def c(stake, price)
|
28
|
+
stake * price
|
29
|
+
end
|
30
|
+
|
31
|
+
def extract_prices(opts_or_prices)
|
32
|
+
case opts_or_prices
|
33
|
+
when Hash
|
34
|
+
opts_or_prices[:prices] ? extract_prices(opts_or_prices[:prices]) : opts_or_prices
|
35
|
+
when Numeric
|
36
|
+
[opts_or_prices]
|
37
|
+
else
|
38
|
+
opts_or_prices
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def parse_opts(opts_or_prices)
|
43
|
+
opts_or_prices.is_a?(Hash) ? DEFAULT_OPTS.merge(opts_or_prices) : DEFAULT_OPTS
|
44
|
+
end
|
45
|
+
end
|
44
46
|
end
|
45
47
|
end
|
data/lib/bet/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bet
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mike Campbell
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-05-
|
11
|
+
date: 2015-05-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|