elo_brain 1.0.0 → 1.1.0

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
  SHA256:
3
- metadata.gz: 0e3657744394997f59bff6c65d5695715b8ab1424f788d9bfffd071ff71f60df
4
- data.tar.gz: 4e2e3f6e6e445febcdf6bbe3039bf103c289a3e7e484630065072010dc6170ec
3
+ metadata.gz: a32b22a6cbdf961ca4c101bbd3962939883667ebcc2c43a08683d73a3d2f0d66
4
+ data.tar.gz: 9d8bc552630782cda26267ce1f000f815fed06261766ed37a70d82b1ade256b1
5
5
  SHA512:
6
- metadata.gz: b309e48aff347e9c6ddf1b032842db19f550497ce41a2ffeaae858cc7db8736aa95a1c2009fa44e87b82237c7583b55a8877a0afc454af7b8c61a1c1e5df990d
7
- data.tar.gz: eccc65a71e75f5e448b5d0c567a9b6fd8fc3d245ee56dc9ab404307ee34a49f6f7024306928cd8ea4c6517129942698c83832f66f9c9d16659e8150ef287b97a
6
+ metadata.gz: d852aff35686edde6146734b9c549215e8a7f00c2de96cab273c8b7f48c7b26d1ce751639fce39485edfcfc60afb385d2fa2ec29c604c76b8a8dbe6ff1481e06
7
+ data.tar.gz: f8bcddffd2df41f796e72b72685bc0330bb94f0a78c5e6de78e357e5136a58deb69f2de3a2c510836dc447e91762b196c79e22a55f51637128384a58cf0130af
data/.overcommit.yml CHANGED
@@ -16,9 +16,9 @@
16
16
  # Uncomment the following lines to make the configuration take effect.
17
17
 
18
18
  PreCommit:
19
- # RuboCop:
20
- # enabled: true
21
- # command: ['bundle', 'exec', 'rubocop', '-P']
19
+ RuboCop:
20
+ enabled: true
21
+ command: ['bundle', 'exec', 'rubocop', '-P']
22
22
  BundleOutdated:
23
23
  enabled: true
24
24
  BundleAudit:
@@ -29,6 +29,6 @@ PrePush:
29
29
  enabled: true
30
30
  command: ['bundle', 'exec', 'rspec', '-f', 'p']
31
31
  quiet: false
32
- # Rubocop:
33
- # enabled: true
32
+ Rubocop:
33
+ enabled: true
34
34
 
@@ -0,0 +1,153 @@
1
+ # Relaxed.Ruby.Style
2
+ ## Version 2.5
3
+
4
+ Style/Alias:
5
+ Enabled: false
6
+ StyleGuide: https://relaxed.ruby.style/#stylealias
7
+
8
+ Style/AsciiComments:
9
+ Enabled: false
10
+ StyleGuide: https://relaxed.ruby.style/#styleasciicomments
11
+
12
+ Style/BeginBlock:
13
+ Enabled: false
14
+ StyleGuide: https://relaxed.ruby.style/#stylebeginblock
15
+
16
+ Style/BlockDelimiters:
17
+ Enabled: false
18
+ StyleGuide: https://relaxed.ruby.style/#styleblockdelimiters
19
+
20
+ Style/CommentAnnotation:
21
+ Enabled: false
22
+ StyleGuide: https://relaxed.ruby.style/#stylecommentannotation
23
+
24
+ Style/Documentation:
25
+ Enabled: false
26
+ StyleGuide: https://relaxed.ruby.style/#styledocumentation
27
+
28
+ Layout/DotPosition:
29
+ Enabled: false
30
+ StyleGuide: https://relaxed.ruby.style/#layoutdotposition
31
+
32
+ Style/DoubleNegation:
33
+ Enabled: false
34
+ StyleGuide: https://relaxed.ruby.style/#styledoublenegation
35
+
36
+ Style/EndBlock:
37
+ Enabled: false
38
+ StyleGuide: https://relaxed.ruby.style/#styleendblock
39
+
40
+ Style/FormatString:
41
+ Enabled: false
42
+ StyleGuide: https://relaxed.ruby.style/#styleformatstring
43
+
44
+ Style/IfUnlessModifier:
45
+ Enabled: false
46
+ StyleGuide: https://relaxed.ruby.style/#styleifunlessmodifier
47
+
48
+ Style/Lambda:
49
+ Enabled: false
50
+ StyleGuide: https://relaxed.ruby.style/#stylelambda
51
+
52
+ Style/ModuleFunction:
53
+ Enabled: false
54
+ StyleGuide: https://relaxed.ruby.style/#stylemodulefunction
55
+
56
+ Style/MultilineBlockChain:
57
+ Enabled: false
58
+ StyleGuide: https://relaxed.ruby.style/#stylemultilineblockchain
59
+
60
+ Style/NegatedIf:
61
+ Enabled: false
62
+ StyleGuide: https://relaxed.ruby.style/#stylenegatedif
63
+
64
+ Style/NegatedWhile:
65
+ Enabled: false
66
+ StyleGuide: https://relaxed.ruby.style/#stylenegatedwhile
67
+
68
+ Style/NumericPredicate:
69
+ Enabled: false
70
+ StyleGuide: https://relaxed.ruby.style/#stylenumericpredicate
71
+
72
+ Style/ParallelAssignment:
73
+ Enabled: false
74
+ StyleGuide: https://relaxed.ruby.style/#styleparallelassignment
75
+
76
+ Style/PercentLiteralDelimiters:
77
+ Enabled: false
78
+ StyleGuide: https://relaxed.ruby.style/#stylepercentliteraldelimiters
79
+
80
+ Style/PerlBackrefs:
81
+ Enabled: false
82
+ StyleGuide: https://relaxed.ruby.style/#styleperlbackrefs
83
+
84
+ Style/Semicolon:
85
+ Enabled: false
86
+ StyleGuide: https://relaxed.ruby.style/#stylesemicolon
87
+
88
+ Style/SignalException:
89
+ Enabled: false
90
+ StyleGuide: https://relaxed.ruby.style/#stylesignalexception
91
+
92
+ Style/SingleLineBlockParams:
93
+ Enabled: false
94
+ StyleGuide: https://relaxed.ruby.style/#stylesinglelineblockparams
95
+
96
+ Style/SingleLineMethods:
97
+ Enabled: false
98
+ StyleGuide: https://relaxed.ruby.style/#stylesinglelinemethods
99
+
100
+ Layout/SpaceBeforeBlockBraces:
101
+ Enabled: false
102
+ StyleGuide: https://relaxed.ruby.style/#layoutspacebeforeblockbraces
103
+
104
+ Layout/SpaceInsideParens:
105
+ Enabled: false
106
+ StyleGuide: https://relaxed.ruby.style/#layoutspaceinsideparens
107
+
108
+ Style/SpecialGlobalVars:
109
+ Enabled: false
110
+ StyleGuide: https://relaxed.ruby.style/#stylespecialglobalvars
111
+
112
+ Style/StringLiterals:
113
+ Enabled: false
114
+ StyleGuide: https://relaxed.ruby.style/#stylestringliterals
115
+
116
+ Style/TrailingCommaInArguments:
117
+ Enabled: false
118
+ StyleGuide: https://relaxed.ruby.style/#styletrailingcommainarguments
119
+
120
+ Style/TrailingCommaInArrayLiteral:
121
+ Enabled: false
122
+ StyleGuide: https://relaxed.ruby.style/#styletrailingcommainarrayliteral
123
+
124
+ Style/TrailingCommaInHashLiteral:
125
+ Enabled: false
126
+ StyleGuide: https://relaxed.ruby.style/#styletrailingcommainhashliteral
127
+
128
+ Style/SymbolArray:
129
+ Enabled: false
130
+ StyleGuide: http://relaxed.ruby.style/#stylesymbolarray
131
+
132
+ Style/WhileUntilModifier:
133
+ Enabled: false
134
+ StyleGuide: https://relaxed.ruby.style/#stylewhileuntilmodifier
135
+
136
+ Style/WordArray:
137
+ Enabled: false
138
+ StyleGuide: https://relaxed.ruby.style/#stylewordarray
139
+
140
+ Lint/AmbiguousRegexpLiteral:
141
+ Enabled: false
142
+ StyleGuide: https://relaxed.ruby.style/#lintambiguousregexpliteral
143
+
144
+ Lint/AssignmentInCondition:
145
+ Enabled: false
146
+ StyleGuide: https://relaxed.ruby.style/#lintassignmentincondition
147
+
148
+ Layout/LineLength:
149
+ Enabled: false
150
+
151
+ Metrics:
152
+ Enabled: false
153
+
data/.rubocop.yml ADDED
@@ -0,0 +1,65 @@
1
+ inherit_from:
2
+ - http://relaxed.ruby.style/rubocop.yml
3
+
4
+ require:
5
+ - rubocop-performance
6
+
7
+ AllCops:
8
+ NewCops: enable
9
+ DisplayStyleGuide: true
10
+ DisplayCopNames: true
11
+ Exclude:
12
+ - "bin/*"
13
+ - "vendor/**/*"
14
+ SuggestExtensions: false
15
+
16
+ Metrics/BlockLength:
17
+ Exclude:
18
+ - "spec/**/*.rb"
19
+ - "Guardfile"
20
+ - "vendor/bundle"
21
+ - "*.gemspec"
22
+
23
+ Layout/DotPosition:
24
+ Enabled: true
25
+ EnforcedStyle: trailing
26
+
27
+ Style/Documentation:
28
+ Enabled: false
29
+
30
+ Style/TrailingCommaInArrayLiteral:
31
+ Enabled: true
32
+ EnforcedStyleForMultiline: comma
33
+
34
+ Style/TrailingCommaInHashLiteral:
35
+ Enabled: true
36
+ EnforcedStyleForMultiline: comma
37
+
38
+ Layout/MultilineArrayLineBreaks:
39
+ Enabled: true
40
+
41
+ Layout/MultilineHashKeyLineBreaks:
42
+ Enabled: true
43
+
44
+ Layout/MultilineMethodArgumentLineBreaks:
45
+ Enabled: true
46
+
47
+ Layout/FirstArrayElementLineBreak:
48
+ Enabled: true
49
+
50
+ Layout/FirstHashElementLineBreak:
51
+ Enabled: true
52
+
53
+ Layout/FirstMethodArgumentLineBreak:
54
+ Enabled: true
55
+
56
+ Layout/MultilineAssignmentLayout:
57
+ Enabled: true
58
+
59
+ Layout/LineLength:
60
+ Enabled: true
61
+ Max: 120
62
+ AutoCorrect: true
63
+ Exclude:
64
+ - Gemfile
65
+ - Guardfile
data/.travis.yml CHANGED
@@ -2,5 +2,5 @@
2
2
  language: ruby
3
3
  cache: bundler
4
4
  rvm:
5
- - 2.6.3
5
+ - 2.6.6
6
6
  before_install: gem install bundler -v 2.1.4
data/CHANGELOG.md ADDED
@@ -0,0 +1,13 @@
1
+ # Changelog
2
+ All notable changes to this project will be documented in this file.
3
+
4
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
5
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
+
7
+ ## [1.1.0] - 2021-02-06
8
+ ### Changed
9
+ - **BREAKING** Change entity naming : Elo => Match
10
+ - Update required ruby version : From 2.3 to 2.6
11
+ - Create changelog
12
+
13
+ [1.1.0]: https://github.com/MatthieuLPro/elo_brain/releases/tag/v1.1.0
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source "https://rubygems.org"
2
4
 
3
5
  # Specify your gem's dependencies in elo_brain.gemspec
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- elo_brain (1.0.0)
4
+ elo_brain (1.1.0)
5
5
  dry-struct
6
6
  dry-validation
7
7
  zeitwerk (~> 2)
@@ -113,4 +113,4 @@ DEPENDENCIES
113
113
  rubocop-performance
114
114
 
115
115
  BUNDLED WITH
116
- 1.17.3
116
+ 2.1.4
data/README.md CHANGED
@@ -1,8 +1,10 @@
1
1
  # EloBrain
2
+ ![Gem](https://img.shields.io/gem/v/elo_brain?color=Green&label=Gem&logo=rubygems)
3
+ [![Build Status](https://travis-ci.org/MatthieuLPro/elo_brain.svg?branch=master)](https://travis-ci.org/MatthieuLPro/elo_brain)
2
4
 
3
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/elo_brain`. To experiment with that code, run `bin/console` for an interactive prompt.
5
+ This gem is an easy way to calculate new elos after a match between 2 players.
4
6
 
5
- TODO: Delete this and the text above, and describe your gem
7
+ The calculation's logic is based on : [Wikipedia](https://fr.wikipedia.org/wiki/Classement_Elo#Th%C3%A9orie_math%C3%A9matique)
6
8
 
7
9
  ## Installation
8
10
 
@@ -22,11 +24,21 @@ Or install it yourself as:
22
24
 
23
25
  ## Usage
24
26
 
25
- TODO: Write usage instructions here
27
+ First we need to create 2 players :
28
+ ```ruby
29
+ player1 = EloBrain::Players::Player.from(elo: 1_200, nb_matches: 10, situation: 'winner')
30
+ player2 = EloBrain::Players::Player.from(elo: 1_400, nb_matches: 15, situation: 'looser')
31
+ ```
32
+ Then we can calculate the new elo of both players by creating a match :
33
+ ```ruby
34
+ match = EloBrain::Matches::Match.from(player1: player1, player2: player2)
35
+ match.calculate_new_elos # => { player1_new_elo: 1230.3898770659184, player2_new_elo: 1390.3898770659184 }
36
+ ```
37
+ The result of the calculation is a <b>Hash</b>.
26
38
 
27
39
  ## Development
28
40
 
29
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
41
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `bundle exec rspec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
30
42
 
31
43
  To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
32
44
 
data/Rakefile CHANGED
@@ -1,6 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "bundler/gem_tasks"
2
4
  require "rspec/core/rake_task"
3
5
 
4
6
  RSpec::Core::RakeTask.new(:spec)
5
7
 
6
- task :default => :spec
8
+ task default: :spec
data/elo_brain.gemspec CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'lib/elo_brain/version'
2
4
 
3
5
  Gem::Specification.new do |spec|
@@ -8,21 +10,22 @@ Gem::Specification.new do |spec|
8
10
 
9
11
  spec.summary = "Simple elo calculation."
10
12
  # spec.description = %q{TODO: Write a longer description or delete this line.}
11
- spec.homepage = "https://github.com/MatthieuLPro/elo_brain"
13
+ spec.homepage = "https://rubygems.org/gems/elo_brain"
12
14
  spec.license = "MIT"
13
- spec.required_ruby_version = Gem::Requirement.new(">= 2.3.0")
15
+ spec.required_ruby_version = Gem::Requirement.new(">= 2.6.0")
14
16
 
15
17
  # spec.metadata["allowed_push_host"] = "TODO: Set to 'http://mygemserver.com'"
16
18
 
17
19
  spec.metadata["homepage_uri"] = spec.homepage
18
20
  spec.metadata["source_code_uri"] = "https://github.com/MatthieuLPro/elo_brain"
19
- # spec.metadata["changelog_uri"] = "TODO: Put your gem's CHANGELOG.md URL here."
21
+ spec.metadata["changelog_uri"] = "https://github.com/MatthieuLPro/elo_brain/blob/master/CHANGELOG.md"
20
22
 
21
23
  # Specify which files should be added to the gem when it is released.
22
24
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
23
- spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
24
- `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
25
- end
25
+ spec.files =
26
+ Dir.chdir(File.expand_path(__dir__)) do
27
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
28
+ end
26
29
  spec.bindir = "exe"
27
30
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
28
31
  spec.require_paths = ["lib"]
@@ -5,7 +5,7 @@ module EloBrain
5
5
  class Strategies
6
6
  STRATEGIES_COLLECTION = {
7
7
  winner: Winner,
8
- looser: Looser
8
+ looser: Looser,
9
9
  }.freeze
10
10
 
11
11
  def call(strategy:)
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EloBrain
4
- module Elos
4
+ module Matches
5
5
  class Contract < Dry::Validation::Contract
6
6
  params do
7
7
  required(:player1).value(Types::Player)
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ module EloBrain
4
+ module Matches
5
+ class Match < Dry::Struct
6
+ attribute :player1, Types::Player
7
+ attribute :player2, Types::Player
8
+
9
+ def self.from(player1:, player2:)
10
+ new(
11
+ player1: player1,
12
+ player2: player2
13
+ )
14
+ end
15
+
16
+ def self.from_contract(contract:)
17
+ new(
18
+ player1: contract[:player1],
19
+ player2: contract[:player2]
20
+ )
21
+ end
22
+
23
+ def calculate_new_elos
24
+ {
25
+ player1_new_elo: EloBrain::Matches::Services::LaunchNewEloCalculation.new.call(
26
+ strategy: player1.situation,
27
+ nb_matches: player1.nb_matches,
28
+ player_elo: player1.elo,
29
+ opponent_elo: player2.elo
30
+ ),
31
+ player2_new_elo: EloBrain::Matches::Services::LaunchNewEloCalculation.new.call(
32
+ strategy: player2.situation,
33
+ nb_matches: player2.nb_matches,
34
+ player_elo: player2.elo,
35
+ opponent_elo: player1.elo
36
+ ),
37
+ }
38
+ end
39
+ end
40
+ end
41
+ end
@@ -1,14 +1,17 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EloBrain
4
- module Elos
4
+ module Matches
5
5
  module Services
6
6
  class LaunchNewEloCalculation
7
7
  def call(strategy:, nb_matches:, player_elo:, opponent_elo:)
8
8
  coefficient = development_coefficient(nb_matches, player_elo)
9
9
  probability = win_probability(player_elo - opponent_elo)
10
- calculation_strategy(strategy).new_elo(elo: player_elo, development_coefficient: coefficient,
11
- win_probability: probability)
10
+ calculation_strategy(strategy).new_elo(
11
+ elo: player_elo,
12
+ development_coefficient: coefficient,
13
+ win_probability: probability
14
+ )
12
15
  end
13
16
 
14
17
  private
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EloBrain
4
- module Elos
4
+ module Matches
5
5
  module Types
6
6
  include Dry.Types()
7
7
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EloBrain
4
- VERSION = '1.0.0'
4
+ VERSION = '1.1.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: elo_brain
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthieu <Malus> Lu
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-02-05 00:00:00.000000000 Z
11
+ date: 2021-02-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundle-audit
@@ -125,7 +125,10 @@ files:
125
125
  - ".idea/vcs.xml"
126
126
  - ".overcommit.yml"
127
127
  - ".rspec"
128
+ - ".rubocop-http---relaxed-ruby-style-rubocop-yml"
129
+ - ".rubocop.yml"
128
130
  - ".travis.yml"
131
+ - CHANGELOG.md
129
132
  - CODE_OF_CONDUCT.md
130
133
  - Gemfile
131
134
  - Gemfile.lock
@@ -146,21 +149,22 @@ files:
146
149
  - lib/elo_brain/elo_calculations/strategies.rb
147
150
  - lib/elo_brain/elo_calculations/variation.rb
148
151
  - lib/elo_brain/elo_calculations/winner.rb
149
- - lib/elo_brain/elos/contract.rb
150
- - lib/elo_brain/elos/elo.rb
151
- - lib/elo_brain/elos/services/launch_new_elo_calculation.rb
152
- - lib/elo_brain/elos/types.rb
152
+ - lib/elo_brain/matches/contract.rb
153
+ - lib/elo_brain/matches/match.rb
154
+ - lib/elo_brain/matches/services/launch_new_elo_calculation.rb
155
+ - lib/elo_brain/matches/types.rb
153
156
  - lib/elo_brain/players/contract.rb
154
157
  - lib/elo_brain/players/player.rb
155
158
  - lib/elo_brain/players/types.rb
156
159
  - lib/elo_brain/version.rb
157
160
  - lib/elo_brain/win_probability/probability_calculation.rb
158
- homepage: https://github.com/MatthieuLPro/elo_brain
161
+ homepage: https://rubygems.org/gems/elo_brain
159
162
  licenses:
160
163
  - MIT
161
164
  metadata:
162
- homepage_uri: https://github.com/MatthieuLPro/elo_brain
165
+ homepage_uri: https://rubygems.org/gems/elo_brain
163
166
  source_code_uri: https://github.com/MatthieuLPro/elo_brain
167
+ changelog_uri: https://github.com/MatthieuLPro/elo_brain/blob/master/CHANGELOG.md
164
168
  post_install_message:
165
169
  rdoc_options: []
166
170
  require_paths:
@@ -169,14 +173,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
169
173
  requirements:
170
174
  - - ">="
171
175
  - !ruby/object:Gem::Version
172
- version: 2.3.0
176
+ version: 2.6.0
173
177
  required_rubygems_version: !ruby/object:Gem::Requirement
174
178
  requirements:
175
179
  - - ">="
176
180
  - !ruby/object:Gem::Version
177
181
  version: '0'
178
182
  requirements: []
179
- rubygems_version: 3.0.8
183
+ rubygems_version: 3.0.3
180
184
  signing_key:
181
185
  specification_version: 4
182
186
  summary: Simple elo calculation.
@@ -1,33 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module EloBrain
4
- module Elos
5
- class Elo < Dry::Struct
6
- attribute :player1, Types::Player
7
- attribute :player2, Types::Player
8
-
9
- def self.from(player1:, player2:)
10
- new(
11
- player1: player1,
12
- player2: player2
13
- )
14
- end
15
-
16
- def self.from_contract(contract:)
17
- new(
18
- player1: contract[:player1],
19
- player2: contract[:player2]
20
- )
21
- end
22
-
23
- def calculate_new_elos
24
- {
25
- player1_new_elo: EloBrain::Elos::Services::LaunchNewEloCalculation.new.call(strategy: player1.situation,
26
- nb_matches: player1.nb_matches, player_elo: player1.elo, opponent_elo: player2.elo),
27
- player2_new_elo: EloBrain::Elos::Services::LaunchNewEloCalculation.new.call(strategy: player2.situation,
28
- nb_matches: player2.nb_matches, player_elo: player2.elo, opponent_elo: player1.elo)
29
- }
30
- end
31
- end
32
- end
33
- end