easy_elo 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 91419e0928c497bcce465157dff9782b623808d7
4
- data.tar.gz: 078c3b0e9fcd3baa4740f977bd31653c863d0333
3
+ metadata.gz: 54c9d0a49c644f3239853de7b8930ae08371fc36
4
+ data.tar.gz: fbe890c7390d58ce179358e325f22c7eb02579d4
5
5
  SHA512:
6
- metadata.gz: 95b95a408182619c75d5ed7aa9215df2097d72a3c53fac96bace9091f878a1adeac4c7340005a9f87d398a150478806b84e3d50541eaea5b94aae9913929dfbf
7
- data.tar.gz: 61aec11996456208bad0c110b63204066d2151e79a85e6b7cff8b243d9fef5a7f19fa2a010ee1a6939dc1b3f1deb97b74a42d759cba172a3a99f205a059c3e44
6
+ metadata.gz: 2f1a1b12305958a7ae71480b8a7044be172669b009803d66b96ed150f78f5fc3f8a002a1e43ae3b70f25ebe2ef0855967c43bb04149f71b451bd313a938e9114
7
+ data.tar.gz: 7754bec7d27e520c23887270c12dda94baf19c70652a43a484aa646118dc29e864dec299159a62026637529f8401696fd02724ac1187d5f972cda498a27a243d
data/Rakefile CHANGED
@@ -1,6 +1,11 @@
1
- require "bundler/gem_tasks"
2
- require "rspec/core/rake_task"
1
+ require 'bundler'
2
+ require 'rake/testtask'
3
3
 
4
- RSpec::Core::RakeTask.new(:spec)
4
+ Bundler::GemHelper.install_tasks
5
5
 
6
- task :default => :spec
6
+ Rake::TestTask.new do |task|
7
+ task.libs << %w(test lib)
8
+ task.pattern = 'test/test_*.rb'
9
+ end
10
+
11
+ task :default => :test
data/easy_elo.gemspec CHANGED
@@ -21,5 +21,7 @@ Gem::Specification.new do |spec|
21
21
 
22
22
  spec.add_development_dependency "bundler", "~> 1.11"
23
23
  spec.add_development_dependency "rake", "~> 10.0"
24
- spec.add_development_dependency "rspec", "~> 3.0"
24
+ spec.add_development_dependency "minitest", "~> 5.9"
25
+ spec.add_development_dependency "minitest-reporters", "~> 1.1"
26
+ spec.add_development_dependency "shoulda-context", "~> 1.2"
25
27
  end
data/lib/easy_elo.rb CHANGED
@@ -1,14 +1,16 @@
1
- require "easy_elo/version"
1
+ require 'easy_elo/version'
2
+ require 'easy_elo/helper'
3
+ require 'easy_elo/configure'
4
+ require 'easy_elo/player'
5
+ require 'easy_elo/rating'
6
+ require 'easy_elo/game'
2
7
 
3
8
  module EasyElo
4
- class League
5
- def initialize
6
- @n = 7
7
- end
8
-
9
- def test
10
- return @n
11
- end
9
+ def self.config
10
+ @config ||= Configuration.new
12
11
  end
13
12
 
13
+ def self.configure(&block)
14
+ yield(config)
15
+ end
14
16
  end
@@ -0,0 +1,12 @@
1
+ module EasyElo
2
+ class Configuration
3
+ include Helper
4
+ attr_accessor :mean, :sd, :k_factor
5
+
6
+ def initialize
7
+ @mean = 1000
8
+ @sd = 200
9
+ @k_factor = 32
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,17 @@
1
+ module EasyElo
2
+ class Game
3
+ include Helper
4
+
5
+ def initialize(p1, p2)
6
+ @p1 = p1
7
+ @p2 = p2
8
+ @result = nil
9
+ end
10
+
11
+ def won_by(winner)
12
+ result = (winner = @p1 ? 1 : 0)
13
+ @p1.plays(@p2, result)
14
+ @p2.plays(@p1, result - 1)
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,9 @@
1
+ module EasyElo
2
+ module Helper
3
+ def initialize(attributes = {})
4
+ attributes.each do |key, value|
5
+ instance_variable_set("@#{key}", value)
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,14 @@
1
+ module EasyElo
2
+ class Player
3
+ include Helper
4
+ attr_accessor :rating
5
+
6
+ def rating
7
+ @rating ||= EasyElo.config.mean
8
+ end
9
+
10
+ def plays(player, score)
11
+ @rating = Rating.new(self.rating, player.rating, score).result
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,23 @@
1
+ module EasyElo
2
+ class Rating
3
+ include Helper
4
+
5
+ def initialize(r1, r2, actual)
6
+ @r1 = r1
7
+ @r2 = r2
8
+ @actual = actual
9
+ @estimation = self.estimation
10
+ @k_factor = EasyElo.config.k_factor
11
+ @result = self.result
12
+ end
13
+
14
+ def estimation
15
+ sd = EasyElo.config.sd
16
+ (1/2) + Math.erf((@r1.to_f - @r2.to_f)/(2*sd))/2
17
+ end
18
+
19
+ def result
20
+ @r1 - @r1 + @k_factor * (@actual - @estimation)
21
+ end
22
+ end
23
+ end
@@ -1,3 +1,3 @@
1
1
  module EasyElo
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: easy_elo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Scott Mackie
@@ -39,19 +39,47 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '10.0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: rspec
42
+ name: minitest
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '3.0'
47
+ version: '5.9'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '3.0'
54
+ version: '5.9'
55
+ - !ruby/object:Gem::Dependency
56
+ name: minitest-reporters
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.1'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.1'
69
+ - !ruby/object:Gem::Dependency
70
+ name: shoulda-context
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '1.2'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '1.2'
55
83
  description: Gem for easily implementing the Elo Algorith.
56
84
  email:
57
85
  - scott@mackie.io
@@ -71,6 +99,11 @@ files:
71
99
  - bin/setup
72
100
  - easy_elo.gemspec
73
101
  - lib/easy_elo.rb
102
+ - lib/easy_elo/configure.rb
103
+ - lib/easy_elo/game.rb
104
+ - lib/easy_elo/helper.rb
105
+ - lib/easy_elo/player.rb
106
+ - lib/easy_elo/rating.rb
74
107
  - lib/easy_elo/version.rb
75
108
  homepage: https://github.com/MacroMackie/easy_elo
76
109
  licenses: