Playing against people from other countries is the rare part of a championship like this, so our seating is built for it. You never play a compatriot, whatever the size of your country, and small countries are not merged into groups. You meet as many different countries as possible, around 20 for every player, and never the same opponent twice. Everyone also gets a similar mix of opponents, balanced seat winds and a different table every hanchan.

The plan for all 14 hanchans is computed in advance by a program. It knows only each player’s country, never names, ratings or results, and applies the same rules to everyone. Which schedule each player gets is then drawn by lot on a live stream before the tournament (see When you get your seating).

When you get your seating

  1. The seating chart. Once we know how many players each country sends, we will publish the full seating chart for all 14 hanchans, ahead of the tournament. It shows numbered places for each country instead of names, for example POL 07, so you can check for yourself that it follows the rules on this page.
  2. The live draw. One to two weeks before the tournament, we will draw on a live stream which player takes which of their country’s places. After the draw, every player knows their table and starting wind for every hanchan.

What the seating aims for

The program pursues its goals in a fixed order and never trades a goal for one lower on the list. It first decides who plays together, then the winds, then the table numbers. The 14 hanchans are played over three days of 5, 5 and 4.

Who you play against

  1. Never the same opponent twice.
  2. No compatriots at your table. Every country counts on its own, whatever its size (see the next section).
  3. At least one opponent in common with every player you never meet. Everyone’s results are then linked through shared opponents, which keeps the standings comparable.
  4. As many different countries as possible. Players who would meet the fewest countries are helped first.
  5. A fair mix of opponents on every day. Delegations are sorted into small, medium and large, each with about a third of the players, and everyone faces about the same mix of the three each day.
  6. Over the whole tournament, the small differences between days even out instead of adding up, so everyone ends close to the same overall mix.
  7. Not the same country in two consecutive hanchans.

Your starting wind

  1. Each wind 3 or 4 times: three of each, plus one extra East or South and one extra West or North. Starting West or North often costs the second dealer turn when a game hits the time limit, so nobody gets both extra seats there.
  2. Every day balanced: in a 5-hanchan day each wind once and one of them twice, in a 4-hanchan day each wind once.
  3. Not the same wind in two consecutive hanchans, and each wind spread over the tournament rather than bunched together.

Where you sit

  1. A different table in every hanchan.
  2. Each area of the room in proportion to its size, over the tournament and, as far as possible, on each day.
  3. A different area from one hanchan to the next where possible.

Compatriots: every country counts on its own

The program keeps compatriots apart without merging small countries into larger groups. Some events merge small countries into combined groups and keep each group apart as if it were one country. Here every country is its own group, whether it sends 1 player or 20.

Players from different small countries can therefore meet each other. A player from Slovakia can sit with a player from Hungary, because they are never treated as compatriots. This also helps the goal of meeting many countries: you can meet players from every other country, so you meet more different countries.

Unequal delegation sizes are handled by weighting instead. Each compatriot meeting counts as (largest delegation ÷ your delegation)², so the smaller your delegation, the more strongly it is protected. For example, with a largest delegation of 20 players:

Your delegationWeight of one compatriot meeting
2 players100
10 players4
20 players1

As long as no delegation has more players than there are tables (50 tables for 200 players), nobody ever plays a compatriot. Only a bigger delegation would make some meetings unavoidable. The program would then keep them to the minimum and place them in the largest delegations.

How it works

The program builds the whole schedule in seven steps, each based on a published method (see Sources). It uses only countries, never ratings or results.

  1. Countries first. Each delegation is treated as if its players had already played one hanchan together. Meeting a compatriot then counts like meeting someone twice, which the program is built to avoid.
  2. A first draft. Tables are filled one at a time, each with the two pairs of players who still have the most possible opponents left.
  3. Improving by swaps. The program swaps two players between tables of the same hanchan, always choosing the swap that helps most. Players just swapped are left alone for a while, and a few random swaps get it out of dead ends. This runs until nobody meets an opponent twice and no avoidable compatriot meeting is left.
  4. The finer goals. The same swapping continues for shared opponents, countries met, the mix of opponents per day and overall, and back-to-back countries. Schedules are compared goal by goal, so a lower goal never costs anything on a higher one.
  5. Winds. Everyone starts East or South exactly 7 times and West or North exactly 7 times, with 3 or 4 of each wind and every day balanced. To get this, the program first decides which two players at each table sit East or South, then who takes which wind. A last round of swaps avoids the same wind twice in a row and spreads the winds out.
  6. Table numbers. With the groups of four and their winds fixed, each hanchan’s groups get their table numbers from the Hungarian method, a classic way to solve such matching problems exactly. Hanchans are then renumbered one at a time while that improves tables and areas.
  7. Checking. The finished schedule is recounted from scratch, and a report shows how well each goal was met.

The schedule is made for numbered places in each country, such as POL 07, and the live draw then decides which player takes which of their country’s places. Your schedule therefore depends only on your country and the draw.

Sources

  • Social golfer problem: the classic puzzle of seating players in groups so that no two meet twice, which this program extends with countries.
  • M. Triska & N. Musliu, Solving the Social Golfer Problem with a GRASP, PATAT 2008, and “An effective greedy heuristic for the Social Golfer Problem”, Annals of Operations Research 194 (2012): steps 2 and 3.
  • I. Dotú & P. Van Hentenryck, “Scheduling social golfers locally”, CPAIOR 2005: the swap search in step 3.
  • D. de Werra, “Equitable colorations of graphs”, RAIRO 5 (1971): the wind splits in step 5.
  • M. M. Lester, Scheduling reach mahjong tournaments using pseudoboolean constraints, SAT 2021: the goal that players who never meet share an opponent (a tournament graph of diameter 2), and the wind rule of one extra East or South and one extra West or North, used for the 2016 ERMC.
  • H. W. Kuhn, “The Hungarian method for the assignment problem”, Naval Research Logistics Quarterly 2 (1955): step 6.