randprize 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NGJiMTI3YjZlNjMyZTU4ZDg0NjFkNWZjYTdjMGE0MDdjYzkxZDg2OQ==
4
+ MGRkNzRjYjNhNDg0YWFjYTI4Y2JmMmYzMjIyOWM1NWJmN2YyM2U3Yw==
5
5
  data.tar.gz: !binary |-
6
- ZTYwZDkzNWQwZjIxZTE1MDQ4MDQ2NWM2OTVkZjkxYmQzYzBhYTUzZA==
6
+ NDlkYTQ5YjY1MTU4Zjk3Nzk0ODNiZWVmZmQ3ZGI2M2E0NDJjZmIyZQ==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- YzYwYzk0ZDZlN2UzNDk3ZDZlMGU0NmQzMWZiYzFiNWY4M2YzOTFjZWQ4NjY1
10
- MThiODQwNGY5Mjg2MTE2N2Y2OWUyMmIwM2Y1NTVkMjA0ZGFhMGQ4MjA2MWFh
11
- ZDQ1NjExZjIzYmNmMTMxNjc5Y2NhNWUwNDEyYWQ2YWZjZmRjYmQ=
9
+ NDJjMTkwNTUwNzI3ODdiZWMxNTg3OGZlNWIzYTFmZWNhZDQ0NzlmZDBiZWNk
10
+ YTM4ZTdkOGE5ZTJkOTllNWY2ZjNhMmM5ZDhkOGIyOGMxZmIzMGY1YjQ0Mzg0
11
+ NWU0NDI1NzdmYzU3NzM5YTA3NmJiZGU0Zjg5ZjI4NjQ2YzJhMDE=
12
12
  data.tar.gz: !binary |-
13
- ZGUxZGU0NjBmZjc2NzNjYjA1ZTY1ODExZGJjZjY3M2EwODU5ZmEyYWUyZDRm
14
- MmRjM2UzNWU3YjJiOWEwMTAzYTk3YTBhZGQxMmVmNTMyZWRhM2RmZjBhN2Rk
15
- OTkyMzNlZWYxYjM2NjVjNjU4YmQ2ZmVmMjE3MTEzMDM4MThiMTA=
13
+ YTAyNzNjYWJmMzVmYjMzZTQwZjMwN2UwNTIxMDgwZWQ4MzMzMDYwYWUxZTMy
14
+ YjYzZjhlNGQzOWQ4NjJiMWZlZDczMWQ0YTY3OGZjZTNjYWZjMWFjNDkxYzY4
15
+ YWMzZmEwY2NiMmEyMzY5N2I5NGI0Y2IzODIwYzE5MzAyZjE1NWU=
data/Gemfile ADDED
@@ -0,0 +1 @@
1
+ gem "codeclimate-test-reporter"
data/README.md CHANGED
@@ -1,6 +1,25 @@
1
1
  [![Build Status](https://travis-ci.org/semdinsp/randprize.png)](https://travis-ci.org/semdinsp/randprize)
2
2
  [![Code Climate](https://codeclimate.com/repos/524654d9c7f3a31b29038e3a/badges/58ed8386e3e6d266c7ac/gpa.png)](https://codeclimate.com/repos/524654d9c7f3a31b29038e3a/feed)
3
+
3
4
  randprize gem
4
5
  ============
5
6
 
6
7
  Given a hash of prizes and odds randomly return a prize.
8
+
9
+ Prize Hash with odds
10
+ =====================
11
+
12
+ @headstails={ "T"=> {'odds'=> 2,'name'=>'win tails','value'=>0},"H"=> {'odds'=> 2,'name'=>'win heads','value'=>1}}
13
+ @dice={}
14
+ 1.upto(6) {|i| @dice[i.to_s]= {'odds'=> 6,'name'=>"rolled #{i}",'value'=>i} }
15
+ @large={ "GP"=> {'odds'=> 100,'name'=>'grandprize','value'=>50000},"H"=> {'odds'=> 'REMAINING','name'=>'win heads','value'=>1}}
16
+
17
+ The REMAINING flag fills in rest of prize deck with the value
18
+
19
+ Usage
20
+ =======
21
+
22
+ @headstails={ "T"=> {'odds'=> 2,'name'=>'win tails','value'=>0},"H"=> {'odds'=> 2,'name'=>'win heads','value'=>1}}
23
+ @pm=Randprize::ManagePrizes.new
24
+ @pm.prize_list(@headstails)
25
+ aprize=@pm.random_prize
@@ -12,26 +12,37 @@ module Randprize
12
12
  raise 'prizelist must have at least two entries' if self.keylist.size<2
13
13
  self.myranges={}
14
14
  self.worstoddprize=0
15
+ calculate_worst_odds
15
16
  normalize_odds
16
17
 
17
18
  end
18
- # normalize the odds to the largest odd value..
19
- # odds must be in format 1 in x
20
- def normalize_odds
19
+ def calculate_worst_odds
21
20
  self.keylist.each { |key|
22
21
  # puts "key is #{key} odds are: #{self.myprizelist[key]['odds']}"
23
22
  self.worstoddprize=[self.myprizelist[key]['odds'],self.worstoddprize].max if self.myprizelist[key]['odds']!="REMAINING"
24
23
  }
24
+ # puts "worst odds #{self.worstoddprize}"
25
+ end
26
+ #calculate finish odds
27
+ # return two items
28
+ def calculate_finnish_value(akey,start)
29
+ if self.myprizelist[akey]['odds']=="REMAINING"
30
+ finish=self.worstoddprize
31
+ else
32
+ self.myprizelist[akey]['odds']=self.worstoddprize/self.myprizelist[akey]['odds']
33
+ finish=self.myprizelist[akey]['odds']+start
34
+ end
35
+ finish=finish.round.to_i
36
+ finish
37
+ end
38
+ # normalize the odds to the largest odd value..
39
+ # odds must be in format 1 in x
40
+ def normalize_odds
41
+
25
42
  start=0
26
43
  finish=0
27
44
  self.keylist.each { |key|
28
- if self.myprizelist[key]['odds']=="REMAINING"
29
- finish=self.worstoddprize
30
- else
31
- self.myprizelist[key]['odds']=self.worstoddprize/self.myprizelist[key]['odds']
32
- finish=self.myprizelist[key]['odds']+start
33
- end
34
- finish=finish.round.to_i
45
+ finish=calculate_finnish_value(key,start)
35
46
  self.myranges[key]=(start...finish) #excludes finish
36
47
  start=finish
37
48
  }
@@ -42,10 +53,9 @@ module Randprize
42
53
  raise 'prize list does not have full coverage (less prizes than odds) ' if finish<self.worstoddprize
43
54
  raise 'prize list has more prizes than coverage (more prizes than odds) ' if finish>self.worstoddprize
44
55
  end
56
+
45
57
  def view_details
46
- puts "Prizes: [#{self.myprizelist.inspect}]"
47
- puts "Ranges [#{self.myranges.inspect}]"
48
- puts "All Prize Range: [#{self.myrange.inspect}]"
58
+ puts "Prizes: [#{self.myprizelist.inspect}]\nRanges [#{self.myranges.inspect}]\nAll Prize Range: [#{self.myrange.inspect}]"
49
59
  end
50
60
  def set_prize_range(rng)
51
61
  self.myrange=rng
data/test/randprize.rb CHANGED
@@ -63,9 +63,16 @@ class RandprizeTest < Test::Unit::TestCase
63
63
  assert @pm.check_prize(5)['name']=='rolled 6', "shuld return 6"
64
64
  end
65
65
  end
66
+ def test_aaaworstodds
67
+
68
+ @pm.prize_list(@headstails)
69
+ puts "worstodds Here: #{@pm.worstoddprize}"
70
+ assert @pm.worstoddprize=2,"worst odds set correctly #{@pm.worstoddprize}"
71
+ end
66
72
  def test_scott
67
73
  puts "SCOTTT Here"
68
74
  @pm.prize_list(@headstails)
75
+ assert @pm.worstoddprize=2,"worst odds set correctly"
69
76
  aprize=@pm.random_prize
70
77
  puts "aprize is #{aprize}, count "
71
78
  puts " myrange #{@pm.myrange} rand range returns: #{@pm.random_range}"
@@ -77,7 +84,7 @@ class RandprizeTest < Test::Unit::TestCase
77
84
  end
78
85
  end
79
86
  def test_randomprize_forrandom
80
- steps=2000
87
+ steps=4000
81
88
  count=0
82
89
  1.upto(steps) do
83
90
  @pm.prize_list(@headstails)
data/test/test_helper.rb CHANGED
@@ -1,3 +1,6 @@
1
1
  require 'stringio'
2
2
  require 'test/unit'
3
3
  require File.dirname(__FILE__) + '/../lib/randprize'
4
+ require "codeclimate-test-reporter"
5
+ CodeClimate::TestReporter.start
6
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: randprize
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Scott Sproule
@@ -21,6 +21,7 @@ files:
21
21
  - lib/randprize.rb
22
22
  - test/randprize.rb
23
23
  - test/test_helper.rb
24
+ - Gemfile
24
25
  - README.md
25
26
  homepage: http://github.com/semdinsp/randprize
26
27
  licenses: []
@@ -44,5 +45,5 @@ rubyforge_project: randprize
44
45
  rubygems_version: 2.0.6
45
46
  signing_key:
46
47
  specification_version: 4
47
- summary: Base sms application
48
+ summary: Random prize from hash with odds values
48
49
  test_files: []