Games::Tournament::Contestant::Swiss::Preference A competitor's right to a role.


    pray if $preference->role eq 'Black' and $preference->strength eq 'Strong';


The preference, or expectation/right/duty one has with reference to a role, eg White, in the next round depends on the difference between the number of games previously played in it and in the alternative roles, and is either Mild, Strong, or Absolute. The more games played in other roles than in this role, the greater the right/duty to play the next game in this role. The FIDE Swiss Rules (C04.1) represent the difference as the number of Games as White minus the number as Black, so a greater number of games as Black is a negative number and of White a positive number. For equal number of games, +0 indicates the last game was as White, and -0 indicates the last game was as Black. So +0 represents a Mild preference for Black and -0 for White. This implementation uses a 'sign' field to perform the same function as the +/- sign. As an API, the strength method returns 'Mild', 'Strong', or 'Absolute' and the role method returns 'Black', 'White', or whatever the preferred role is, respecting the 2 consecutive games in the same role rule. A7



    $pref = Games::Tournament::Contestant::Swiss::Preference->new(
        difference => 0, sign => 'Black', round => 0 );

The default difference is 0. The default sign is ''.


        $pref->update( \@oldRoles  )

        Updates the difference (ie, the internal representation of preference) on the basis of the last role (and second-last role) in \@oldRoles. A minimal sanity check is performed. \@oldRoles is a history of roles in previous rounds, and it is expected only the last role of this history has not yet been used to update the preference. That is, this method must be used round-by-round to keep a players preference up to date. However, the second-last role (in addition to the last role) is also needed to determine the preference in cases when the same role was taken in the last 2 games. So for updates after the second round, make sure the history is at least 2 elements long. Byes and unplayed games have no effect on the preference, so make sure that roles in unplayed games don't make it into oldRoles A5, F2 .



        The difference as a string, ^[+-][012]$. '0' represents a mild preference, '1' a strong one and '2' an absolute one. '-' represents a preference for White, or the first element of @Games::Tournament::Swiss::Config::roles, and '+' represents a preference for Black or the second element. A player may have an absolute preference even if the difference is 0, because it played the previous 2 rounds in the other color.



        Sets/gets the value of the difference in games played in one role over those played in other alternative roles. Equals either 0,1,2.



Sets/gets the role which the player has taken more often, or more recently, than other alternative roles. The preference is thus for the other role.



Gets the strength of the preference, 'Mild,' 'Strong,' or 'Absolute.'



Gets the role which the preference entitles/requires the player to take in the next round. Not defined if sign is ''.



Sets/gets the round in this game up to which play is used to calculate the preference . The default is 0.



Sets/gets a list of the roles in the last 2 games. If the 2 roles are the same, there is an absolute preference for the other role.


Dr Bean, <drbean, followed by the at mark (@), cpan, then a dot, and finally, org>


Please report any bugs or feature requests to bug-games-tournament-contestant at, or through the web interface at I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.


You can find documentation for this module with the perldoc command.

    perldoc Games::Tournament::Contestant::Swiss::Preference

You can also look for information at:



Copyright 2006 Dr Bean, all rights reserved.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.