from datetime import datetime from src.game import Game from src.ladder import Ladder from src.player import Player from src.strategy import SimpleEloChangeStrategy ladder = Ladder( strategy=SimpleEloChangeStrategy(), ) games: list[Game] = [ Game( datetime.fromisoformat("2022-11-11 16:30"), { Player.Theo: 53, Player.Leila: 32, Player.Clementine: 53, Player.Emma: 48, Player.Kim: 50, Player.Martin: 51, }, ), Game( datetime.fromisoformat("2022-11-11 17:00"), { Player.Emma: 53, Player.Kim: 57, Player.Pierre: 48, Player.Theo: 44, Player.Leila: 32, Player.Martin: 57, }, ), Game( datetime.fromisoformat("2022-11-11 18:45"), { Player.Thomas: 58, Player.Baptiste: 45, Player.Pierre: 54, Player.Theo: 65, Player.Emma: 42, Player.Martin: 53, }, ), Game( datetime.fromisoformat("2022-11-11 21:00"), { Player.Kim: 50, Player.Theo: 50, Player.Emma: 53, Player.Clementine: 55, Player.Pierre: 46, Player.Baptiste: 54, }, ), Game( datetime.fromisoformat("2022-11-11 21:30"), { Player.Kim: 41, Player.Leila: 32, Player.Theo: 48, Player.Emma: 49, Player.Clementine: 52, Player.Pierre: 54, Player.Baptiste: 59, }, ), Game( datetime.fromisoformat("2022-11-11 22:00"), {Player.Clementine: 47, Player.Pierre: 46, Player.Theo: 57, Player.Emma: 42}, ), Game( datetime.fromisoformat("2022-11-11 22:32"), {Player.Clementine: 43, Player.Pierre: 51, Player.Theo: 40, Player.Emma: 39}, ), Game( datetime.fromisoformat("2022-11-12 12:48"), { Player.Pierre: 58, Player.Theo: 52, Player.Emma: 59, Player.Thomas: 50, Player.Baptiste: 52, }, ), Game( datetime.fromisoformat("2022-11-12 13:18"), {Player.Emma: 41, Player.Theo: 53, Player.Pierre: 44}, ), Game( datetime.fromisoformat("2022-11-12 13:47"), {Player.Emma: 65, Player.Thomas: 59, Player.Pierre: 54}, ), Game( datetime.fromisoformat("2022-11-12 14:15"), {Player.Pierre: 57, Player.Emma: 52, Player.Martin: 45, Player.Clementine: 47}, ), Game( datetime.fromisoformat("2022-11-12 14:47"), {Player.Pierre: 51, Player.Emma: 47, Player.Clementine: 56}, ), Game( datetime.fromisoformat("2022-11-12 19:06"), { Player.Clementine: 43, Player.Kim: 47, Player.Theo: 13, Player.Pierre: 47, Player.Emma: 62, }, ), Game( datetime.fromisoformat("2022-11-13 12:31"), { Player.Theo: 43, Player.Thomas: 37, Player.Tanguy: 44, Player.Pierre: 47, Player.Emma: 61, }, ), Game( datetime.fromisoformat("2022-11-13 12:54"), { Player.Tanguy: 54, Player.Clementine: 47, Player.Theo: 65, Player.Thomas: 44, Player.Pierre: 60, Player.Kim: 58, Player.Emma: 46, }, ), Game( datetime.fromisoformat("2022-11-13 13:25"), {Player.Pierre: 52, Player.Emma: 68, Player.Clementine: 57}, ), Game( datetime.fromisoformat("2023-01-02 10:00"), { Player.Felix: 34, Player.Frost: 64, Player.Thomas: 51, Player.Baptiste: 53, Player.Emma: 68, }, ), Game( datetime.fromisoformat("2023-01-02 10:30"), {Player.Felix: 64, Player.Frost: 55, Player.Thomas: 62, Player.Emma: 67}, ), Game( datetime.fromisoformat("2023-02-19 12:00"), { Player.Thomas: 56, Player.Axel: 53, Player.Emma: 61, Player.Theo: 57, Player.Pierre: 55, Player.Martin: 36, }, ), Game( datetime.fromisoformat("2023-02-19 12:35"), { Player.Thomas: 50, Player.Emma: 62, Player.Theo: 62, }, ), Game( datetime.fromisoformat("2023-07-15 15:00"), { Player.Thomas: 52, Player.Emma: 44, Player.Martin: 60, Player.Baptiste: 52, }, ), Game( datetime.fromisoformat("2023-07-15 15:30"), { Player.Thomas: 56, Player.Emma: 55, Player.Martin: 34, Player.Baptiste: 43, }, ), Game( datetime.fromisoformat("2024-05-08 12:00"), # ? { Player.Thomas: 54, Player.Emma: 45, Player.Pierre: 67, }, ), Game( datetime.fromisoformat("2024-05-08 13:24"), { Player.Thomas: 47, Player.Emma: 46, Player.Pierre: 56, }, ), Game( datetime.fromisoformat("2024-05-08 14:24"), # ? { Player.Thomas: 58, Player.Emma: 68, Player.Pierre: 69, }, ), Game( datetime.fromisoformat("2024-05-10 14:21"), { Player.Emma: 60, Player.Baptiste: 45, Player.Thomas: 59, Player.Kim: 51, Player.Theo: 47, Player.Felix: 41, }, ), Game( datetime.fromisoformat("2024-05-10 15:00"), { Player.Emma: 51, Player.Baptiste: 49, Player.Thomas: 38, Player.Felix: 61, }, ), Game( datetime.fromisoformat("2024-05-11 14:00"), { Player.Felix: 57, Player.Kim: 38, Player.Thomas: 62, Player.Frost: 58, Player.Pierre: 51, Player.Martin: 58, Player.Emma: 46, }, ), # Game( # datetime.fromisoformat("2024-05-24 12:00"), # ? # { # Player.Martin: 53, # Player.Emma: 40, # Player.Marius: 39, # Player.Heloise: 44, # }, # ), Game( datetime.fromisoformat("2025-01-01 13:27"), { Player.Clementine: 55, Player.Thomas: 73, Player.Baptiste: 55, Player.Felix: 50, Player.Emma: 58, }, ), Game( datetime.fromisoformat("2025-01-01 13:58"), { Player.Clementine: 60, Player.Thomas: 56, Player.Theo: 60, Player.Felix: 62, Player.Emma: 47, }, ), Game( datetime.fromisoformat("2025-01-03 11:00"), { Player.Tanguy: 90, Player.Clementine: 70, Player.Martin: 72, Player.Emma: 39, }, ), Game( datetime.fromisoformat("2025-01-03 11:45"), { Player.Tanguy: 62, Player.Clementine: 86, Player.Theo: 54, Player.Martin: 94, Player.Emma: 60, }, ), ] for game in games: print(game) print("=" * 30) players_elo_updates = ladder.process_game(game) for player, elo_update in players_elo_updates.items(): print( f"\t{player.value:<20}{int(elo_update):+}\t({ladder.players[player].elo:>4d})", ) ladder.print_current()