+ class SwissPairing < Pairing
+ def match(players)
+ super
+ return if players.size < 2
+
+ win_players = players.find_all {|a| a.last_game_win?}
+ remains = players - win_players
+ if win_players.size >= 2
+ if win_players.size % 2 == 1
+ remains << delete_least_rate_player(win_players)
+ end
+ pairing_and_start_game(win_players)
+ else
+ remains.concat(win_players)
+ end
+ return if remains.size < 2
+ if remains.size % 2 == 1
+ delete_most_playing_player(remains)
+ end
+ pairing_and_start_game(remains)
+ end
+ end # SwissPairing
+