Thue-Morse (Fair Sharing) Sequence: A possible alternative to komi?

Yes, me please! I’ll send a challenge

3 Likes

If you check out my game with Kosh the sequence of moves including when to pass is in the comments :slight_smile:

Please also share your experience and reflections here for us all :slight_smile:

2 Likes

Here’s our game:

4 Likes

By the way, this happens to be a really fun game type, so if there’s more people willing to play 19x19 correspondence, I’m totally up for more than one game at a time.

One difficulty, is that (for me at least) it’s hard to switch from “Thue-Morse Go” to normal Go. You get paranoid… But switching between two Thue-Morse games should be no problem.

4 Likes

Here’s an intro you can use to give someone a crash course in Thue-Morse Go: https://pastebin.com/vJtUmXyt

And my preferred (as of now) format for keeping track of the double moves: https://pastebin.com/Kg5Cq8mf

1 Like

Can triple-KO arise in Thue-Morse Go?

1 Like

Nothing stopping it from existing but ko tends to resolve a lot faster since there are so many double moves for each player, winning a ko is trivial if it’s important enough.

2 Likes

I started a group for it, though I’m surprised noone had done so yet. Hopefully this will make it easier to find players willing to play instead of trying to hard sell it every time.

Suggestions as to how to improve the description on the group page are more than welcome, though I’ll do some more work on it either way today.

4 Likes

The typical triple ko pattern requires basic alternation for it to cycle indefinitely.

However, I think it could still be possible to have an endless “cycle” (albeit a somewhat chaotic one), via a multi-stage ko. Since, no player ever gets ahead by more than one move, the game could get stuck shifting around inside of a multi-stage ko (if there are no big enough ko threats).

1 Like

I’m a bit late to this thread, but here’s a 9x9 game me and battleporridge played about a year ago, after a discussion about Thue-Morse on reddit if I remember correctly :blush:

I like the idea of giving double moves now and again, but for me Thue-Morse was too complicated to keep track of in my head, so reading ahead became quite tedious, since I constantly had to check with our pregenerated list of moves. Another way to give double-moves somewhat farily, that is much simpler to keep track of, is to let every third move be a double-move, i. e. repeat the sequence
BWBBWBWW
over and over again. I tried this once, on a 19x19 board, against a player a couple of stones stronger than me. I captured a big group early on after he made a reading mistake, and halfway through the game I was pretty confident I would win. But he adjusted to the new variant amazingly quickly, and managed to catch up and win in the end :upside_down_face:

Unfortunately I don’t have a record of the game, since it was over the board and a long time ago, but I’d love to play this variant again if someone is interested :smiley:

4 Likes

as far as I can tell, Thue Morse seems to be built on the idea of “discounting”, (a dollar tomorrow is worth less than a dollar today). where the rate of discounting (I’m gonna label it d) is equal to 1-s where s=the limit of 1/x as x approaches infinity.

If you make all the values equal to 1, but spaced apart 1 time unit (we’ll call them “days”) such that the value of day n+1 = (day n) * d, such that the value of day n = d ^ n. Give A the first value, then proceed to give the next value to whoever has accumulated the least.

From my playing around with it (shortly after the video of the original post came out), this seems to create the Thue-Morse sequence just the same.

However if the distribution of values differs, (for example, d is a lower value), then a different sequence provides better results.

1 Like

Unfortunately I timed out before yose started, but on the other hand, I had lost quite some hope after (probably) losing my lower left corner. Nevertheless, here is our result:


Also, probably something I should have done before playing a game; I wrote some javascript that you could use to automatically put the next move sequences just above the chat window, including a message that you have to pass. Using a browser extension you can inject it to load with the page.

Please don’t judge my javascript, but feel free to offer suggestions on improvement :see_no_evil:

var THUE_MORSE_GAME_LIST = ["1234567","7654321"]; // put the game numbers in this list (see the url for the number)

var i, j, k=[], m, n=[1,0], c=1;
for (i=0; i<9; i++) {
	m = [];
	for (j=0; j<n.length; j++) { m[j] = 1-n[j]; }
	n = n.concat(m);
}
for (i=0; i<n.length; i++) {
	if (n[i]%2 == c%2) { k[c++] = (n[i] == 1 ? "B" : "W" ); }
	else {
		k[c++] = "PASS";
		k[c++] = (n[i] == 1 ? "B" : "W" );
	}
}

setInterval(function() {
	var thueMorse;
	if (THUE_MORSE_GAME_LIST.includes(location.href.match(/\d+/)[0])) {
		thueMorse = document.getElementById("thueMorse");
		if (thueMorse == null) {
			var chatContainer = document.querySelector('.chat-container');
			thueMorse = document.createElement("div");
			thueMorse.id = "thueMorse";
			thueMorse.style.height = "48px";
			chatContainer.parentNode.insertBefore(thueMorse, chatContainer);
		}
		var moveNumber = parseInt(document.querySelector('.move-number').innerHTML.match(/\d+/)[0]);
		thueMorse.innerHTML = "Last: " + (moveNumber == 0 ? "-" : k[moveNumber]) + ", now: " + k[moveNumber+1] + ", next: ";
		for (i=2; i<31; i++) { thueMorse.innerHTML = thueMorse.innerHTML + ( k[moveNumber + i] != "PASS" ? k[moveNumber + i] + " " : "" ); }
	} else {
		 thueMorse = document.getElementById("thueMorse");
		 if (thueMorse != null) { thueMorse.parentNode.removeChild(thueMorse); }
	}
},200);
3 Likes

THIS IS SO COOL! I just got it working in tampermonkey and it is so awesome!

1 Like

I’m trying to edit the formatting to be more to my liking, and is that like an anonymous function in the loop setting thueMorse.innerHTML?

thueMorse.innerHTML = thueMorse.innerHTML + ( k[moveNumber + i] != "PASS" ? k[moveNumber + i] + " " : "" );

Like, some shorthand way to express an if-then which can be doe within another statement?

EDIT: So the entire code (after the initialization) is being passed to a function which repeats a function every so often (5 times a second in this case). That is so cool. I’ve never been able to grok why one would want to pass a function to something or what it would even mean to do so.

Yes, it’s an inline if-then-else, useful for in an assignment, as in this case.

In this case it’s more or less a hacky way to keep track of the current move and of whether you went to a different page (which does not reload the script). It’s not very pretty but hey, it works :stuck_out_tongue:

One of the most natural things to use setInterval for is of course animation. You can imagine how useful passing functions becomes then

1 Like

@Vsotvep I’m still tweaking it to my liking, but when I’m done, do you mind if I post my changes (mostly just formatting) to your script here?

Also, would you be willing to put it in in a github (or gitlab) repo, and include a readme with instructions on installing Tampermonkey so that we can easily direct new Thue-Morse players to it? If you would be willing to do that I’d love to start handing out a link to that to new players.

2 Likes

Yeah sure, I have no github yet, though, but if you do, feel free to put it somewhere, I’ll “license” my code under the “do whatever you want with it”-license :slight_smile:

2 Likes

Would this be what you’re thinking of? I can credit you in the readme. I already have it in a github repo; I was just going to keep it private: so I’ll just change it to public if the above is amenable to you.

I certainly see no problem with that

2 Likes

Okay, it is up here. I’ll be finishing up the readme some, but the basics are there.

1 Like