bet 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|