#!/usr/bin/perl

use strict;
use warnings;

use lib './lib/perl';
use Ratings;
use Ratings::Elo;

sub Main ();

Main;

sub Main () {
  my $wins = shift @::ARGV;
  my (@oppr) = @::ARGV;
  my $elo = Ratings::Elo->new(
    'rating_system' => 'nsa2008'
    );
  my $nrounds = scalar(@oppr);
  my $p = { 
    'ewins' => $wins,
    'id' => 1,
    'oldr' => 0,
    'pairings' => [1..$nrounds],
    'scores' => [(200) x $nrounds],
    'rgames' => $nrounds,
    };
  my (@loser_scores) = ((100) x $nrounds);
  my (@winner_scores) = ((300) x $nrounds);
  my (@opp) = (
    map { 
      my (@pairings) = ((0) x $nrounds);
      $pairings[$_] = 1;
      {  
	'id' => $_ + 1,
	'ewins' => $_ < $wins ? 0 : 1,
        'oldr' => $oppr[$_],
        'pairings' => \@pairings,
	'rgames' => 1,
	'scores' => $_ < $wins ? \@loser_scores : \@winner_scores,
      }
      } (0..$#oppr)
    );
  my (@ps) = ($p, @opp);
  $elo->RateNewcomersCorrectly(\@ps, 0, $nrounds-1, [$p], {
    'ewins' => 'ewins',
    'id' => 'id',
    'newr' => 'newr',
    'oldr' => 'oldr',
    'pairings' => 'pairings',
    'perfr' => 'perfr',
    'rgames' => 'rgames',
    'scores' => 'scores',
    }
    );
  printf "%d\n", $p->{'xrat_curr'};
  }

