Zulip Chat Archive

Stream: combinatorial-games

Topic: Games with win/lose/draw states


Violeta Hernández (Aug 06 2025 at 06:44):

A lot of "real-life" games aren't just played until you can't move; rather, there are certain end positions categorized as wins, loses, or draws. Think chess, or tic-tac-toe.

Violeta Hernández (Aug 06 2025 at 06:45):

I'm wondering what the best way to represent them would be.

Violeta Hernández (Aug 06 2025 at 06:52):

For games without draws, we could make it so that positions where left wins have a single move to 1, and positions where right wins have a single move to -1. This does feel unelegant somehow, since you're adding extra states that didn't exist in the original game.

Violeta Hernández (Aug 06 2025 at 06:53):

I wonder if a better approach is by using loopy games wholesale. A state where left wins is one with a single left move to itself. A state where right wins is one with a single right move to itself. A draw is a state with both a left and right move to itself.

Violeta Hernández (Sep 09 2025 at 12:37):

I've been thinking about tic tac toe again

Violeta Hernández (Sep 09 2025 at 12:56):

I think using an LGame is by far the most natural representation

Violeta Hernández (Sep 09 2025 at 12:57):

If X wins, have that position loop back to itself for X, and lead to nothing for O

Violeta Hernández (Sep 09 2025 at 12:58):

This position is a stopper (a definition we need to add) so ties aren't possible

Violeta Hernández (Sep 09 2025 at 14:09):

Should Stopper be a typeclass, or just a predicate?

Violeta Hernández (Sep 09 2025 at 14:10):

I don't think it's nearly as compositional as our other typeclasses like Impartial, Numeric, etc. since basically the only results it satisfies is Stopper (-x) ↔ Stopper x and Stopper x.toLGame

Violeta Hernández (Sep 09 2025 at 14:10):

(unless I'm missing something)

Django Peeters (Sep 09 2025 at 15:49):

I think it should be a predicate.


Last updated: Dec 20 2025 at 21:32 UTC