Evil Randomizer Forum Game - Surviving under 7-bag + no hold

Started by Okey_Dokey, May 19, 2016, 10:56:30 PM

Previous topic - Next topic

Okey_Dokey

I once tried to prove via programming a bot that it is possible to play forever with bag randomizer but without hold feature. Basic proof idea was to have a list of playfields and to show that for any bag and for any playfield contained in the list you can place the pieces in a way that you end up in a playfield of the list again.  I used a queue to work through the list of already visited playfields and a height-balanced search tree (AVL tree) to see if a playfield was already in the list/queue. The bot would handle the piece placement decisions. Anyway, I wasn't able to get anywhere. My bot wasn't good enough to survive with 1 preview and it wasn't fast enough to handle 2 previews (note that you have to cycle through about a million of playfields and all 5040 different bags which takes a LOT of time).

So to get a better feeling if playing forever is possible or not I thought about doing a forum game. Pretty sure 0 previews is not survivable but 2 or 3 previews is. So let's head for 1 previews instead. The game works as follows: There are 2 players. One player makes the piece placement decisions and the other player determines the piece order (trying to top out the first player). More precisely, I want to play 2 games simultaneously. In one game I will play the evil randomizer and in the other game I will make the piece placements. It's your job to play the respective other role. Let's see if you can beat me or if the game will go on forever (provided I can motivate you to play a game of 100+ pieces).

Tetris rules:Game rules:

We make posts in alternating turns (first I, then you, then me again, then you again and so on). At any time you post, you have to make a piece placement for game 1 and specify a piece (the next piece; the current piece is usually already known) for game 2. There's an exception: At the end/start of a bag, you have to make 2 piece placements (for the last 2 pieces of the bag) and specify the 2 pieces (the first 2 pieces of the next bag). You are supposed to use Fumen to display the current playfield (the field of game 1).

Game 1 / your field:
(first 2 pieces already specified)
I T O L J S Z
[fumen]http://harddrop.com/fumen/?v115@hhB8LeAgWPAFLDmClcJSAVDEHBkSdBA[/fumen]

Game 2 / my field:
[fumen]http://harddrop.com/fumen/?m115@dhB8PeAgH[/fumen]

caffeine

That's a really interesting idea to see if bag can be played forever without hold! I am having a little trouble understanding the rules for this, though.

Is this correct?

Game 1:
  • Make the best placement I can for the current piece.
  • If it's the last 2 pieces of the bag, make two placements. (Will the first piece of the next bag be known at this point?)
Game 2:
  • Give a piece that is most evil given the particular playfield.
  • If it's the beginning of the bag, give two evil pieces in sequence.
Are we at the beginning or end of a bag right now on either of these games?

Okey_Dokey

Scrap that start / end of a bag rule. It overcomplicates thing. I just thought about including it because that's how I would handle things with a bot (because you have to combine the resulting playfield with the information of the next piece which leads to about 7 as many "configurations at the start (but maybe less configurations at the end) and makes programming the simulation harder).

So the only time you have have to specify 2 pieces is at the start of the game, and you never have to place 2 pieces in a row.

We can also go for 0 previews, if you want. Maybe 1 preview takes too long.

caffeine

Game 1:
[fumen]v115@hhB8LeAgWPAFLDmClcJSAVDEHBkSdBAvhAqpB[/fumen]

Game 2: ST

Did I do this right?

Okey_Dokey


caffeine


Okey_Dokey

Yes, first I piece, then J. I didn't mention the I piece explicitely because it was already contained in the fumen.



XaeL

inb4 integration wrote an AI to enumerate over remaining pieces in a bag and deal the one with the worst placement.

Also it might be worth putting everything into a single fumen and putting it in the first post. I can help with that if you guys want (yay moderator powers)



QuoteLike many setups here, it is useful if your opponent doesn't move and you get 4 Ts in a row.

Okey_Dokey

Quote from: XaeLinb4 integration wrote an AI to ...
I am way too lazy to do such things.

Quote from: XaeLAlso it might be worth putting everything into a single fumen and putting it in the first post.
I planned to combine my moves in a single fumen after each bag and embed it in the first post.

-----

The idea of the evil randomizer game sounded good in my head, but it looks like it failed. At least with the current ruleset. Placements turned out easier than I thought. The first rulechange I suggest is making the fields only 10 rows high (or otherwise you can place S and Z pieces vertical above each other on the walls for a very long time).

If that's not enough we may have to switch to 0 previews or double bag randomizer. But that's just ideas for the distant future (if I can motivate someone continuing the games).


Alexsweden

Great idea! The problem for me is the forum platform for the work. Its quite slow and requires some manual work.

If there were a website with a fumen that simplifies the work by things like enforcing the 7-bag for you. So you always get to choose which piece comes next but it makes sure you dont give an order that a 7-bag would not give you. An interface with the pieces so you only have to press on the next one you would like to give and so on.


What would be the easiest way to implement this? We have fumen so one could build upon that, are there other good options?

For me the features would be:
1: The person pretending to be the randomizer will see the list of available pieces to choose from next within the current bag
2: the full fumen is available in one place so one can easily see the progression
3: some form of puch notification so you see when your opponent has done a move. (email maybe?)
4: some easy system for login or similar. Or maybe just simply an open solution with hashes in the address so anyone can play on both sides, and if someone wants to branch in a different direction that would be possible.
5: if 4 is done, then a tree graph of the branches made would be nice.

I might do this if I have time this week. Have a lot to do though so dont get your hopes up.