It would be nice to have leaderboards for "Highest 7-tile score" or "Highest 8-tile score". The board mclifford82 posted yields an 8-tile board with a score of 6684, which is quite impressive. Also, it's too bad that the game doesn't preserve all of your special achievements in the scrolling list of your best games. I'm glad I screen-captured my Sixlock when it happened!
@Nicola, Kamikaze, czechcongo : thks for the answers Yeah, "dumb" was not the good word to use, sry no native speaker What I meant is that Nicola's algorithm demonstrates that by playing Threes like chess, way better results can be achieved : ie taking time to look at the board, thinking 2/3 plays ahead, not just rushing for quick match... And even if I understand that's the way I should play to do very well, I usually lack the required patience at some point. This being a mobile game doesn't help Not that there's anything wrong with having a quick fun game of course, it's great to know the depth is here if you wanna grab it. Anyway, I guess this could be said of many card games. But the impressive feature of Threes is to have both simplicity AND depth combined, making the game understandable by everyone, and still offering a lot for more strategic players. The developers should consider a physical board/card game for Threes! I know I would buy it! Would you?
That is astoundingly good. Does it take into account the '+' hint for bonus cards? Also, out of curiosity, could you try running the simulation with 2-card foreknowledge (i.e. as if the game told you what the next 2 cards will be), and see if that's enough to achieve 6144 some of the time? I'm surprised that the card-counting helped as little as it did; the 3072 percentage decreasing is clearly a statistical fluke. Even without counting in 12-card batches, you could have a heuristic that adjusts the probability of the next colored card being red/blue based on the current board balance. For instance, if there are 4 red cards on the board and one blue card, the next colored card is ~90% likely to be blue. (You could refine these probabilities by gathering them across many runs.) Btw, has your AI yet achieved a 3072 + 1536? What's its current max score, and where does that rank on the leaderboards?
Does any one know the order the numbers fall? Is there a pattern or is it random? Any help would be appreciated. Thanks!!!
I'd like to pick the ball back up that was dropped on the topic of "What's the minimum number of cards on the board you can reach?". I don't have a new approach but I'd like to enumerate the tools we have and some techniques that might come in handy in answering the question once and for all. 1. Zeroes! - a pointless puzzler that doesn't grow at all I introduced this simplified version of Threes! earlier and I still maintain that it is a useful simplification. Any situation in Zeroes! can be achieved in Threes! by just having the right cards in the right place. To remind everyone how this simplification works: There is only one type of card with value 0. Merging two 0s gives another 0. This effectively eliminates blocking since all cards always merge. Everything else stays the same. 2. Invariants An invariant is a property that remains true no matter what you do within the bounds of legal actions. If we could find an invariant for Zeroes! we would have a nice piece of the puzzle, i. e. "if property X is true at some point in the game it will always be true. Therefore, the minimum number of cards you can reach after that point is at least Y (because you need Y cards to satisfy X)". This is actually what some of our earlier proofs tried to do without calling it an invariant. 3. Board properties based on number of cards Coming from the other side of the invariants, it might be useful to determine when properties have to be fulfilled based on the number of cards on the board. Some easy examples are: • With 13 cards, there cannot be an empty row or column. • With 9 cards, there cannot be a card without a direct neighbor (see below). • With 5 cards, there must be at least one card with neighbors.These properties can be proven just like everything else. But one has to be very careful with the implication. The reverse of the above examples is not always true: • There are no empty rows or columns, so there are at least 13 cards on the board. [WRONG! Counterexample: a diagonal with 4 cards] • There is no card with a direct neighbor, so there are 9 cards on the board. [WRONG! Counterexample: 2 cards next to each other] • There is a card with neighbors, so there are 5 cards on the board. [WRONG! Counterexample: 2 cards next to each other] 4. Little steps Not exactly a technique but rather a common pattern. We don't need to prove what we want in 1 or 2 steps. It can be 5 little, and more understandable, steps instead that can be checked for flaws much easier than those 1 or 2 large steps. To this point: if you think you can prove something, don't hesitate to post it because you don't have the whole proof yet. Do post it, let others take a look at it to find eventual flaws and maybe it will give someone else the idea or the foundation to continue the overall proof. 5. Nomenclature When working on something like this it is nice to have a common vocabulary to reduce confusion. I'm glad that we now mostly agree on the term "cards" but in the last 2 days, we've seen some more that I'd like to list now. • Neighborhood: The neighborhood of a card is the set of other cards that are in the same row or column. • Neighbor: A member of a card's neighborhood. • Direct neighbor: Cards on adjacent spaces are direct neighbors to each other. In other words: a potential merging partner.• Singleton / Lonely card: A card with an empty neighborhood. To be perfectly clear: I don't know what part of this will be useful, I just thought it might be helpful to consolidate it into one post.
Yes, it's optimized for the forthcoming '+' behaviour. I tried running an "oracle", which had perfect knowledge of the forthcoming cards AND on which lines they will be inserted. With 5-step lookahead, it got to 6144 in 9% of the games. With deeper lookahead, it reached ridiculous scores. Of course, that kind of perfect knowledge is an unrealistic advantage. I suspect that the remaining randomness caused by the random line insertion and by the bonus cards (which aren't accounted for at all) introduces far more noise than what card counting can remove. Of course, my algorithm might just not be smart enough. Right, but since card counting gives such a small improvement, I see no point in using an even less effective strategy I'm not sure, I have thrown away the log of that simulation and didn't copy the max score. I suspect it didn't make it to 3072 + 1536. I'll let it run for a day and let you know how far it got.
My kind of attitude. If you've reached the limit of hardware and coding-cleverness, throw time/patience at it and see how it does. I'm very much looking forward to the results of this extended (and supposedly more statistically stable) experiment.
Rivers of numbers First - I'm so incredibly impressed at the analysis that this thread has produced. Congratulations and thank you so much to you all. I have noticed that I get my new cards in the same row or column far more often than chance or randomness should suggest. For a hastily recorded example, check this out: https://www.youtube.com/watch?v=ElCMGK20SWU Downwards starts at about 10 seconds, and rightwards starts at about 25 seconds. The video catches four or five in row in the same column/row as the previous one - generally continuing until the column/row is full and cannot be shrunk any more.
First of all, welcome to the thread! Second of all, I'm glad you're enjoying it. Feel free to jump in and share ideas at any time. This behavior is not surprising if you think about the golden rule of card placement: A new card can only appear in a row or column where old cards moved. When only cards in one row or column move, the new card has no choice but to appear there as well.
Thank you for the response. I should've been more clear with my question...do the cards fall into the first spot in row you move or is it random?
Okay, I'll elaborate. Here are the rules for the placement of new cards as far as I know them (there are other theories): 1. A new card is placed after every move. (Basic rule) 2. New cards only appear on spaces adjacent to the wall of the board. (This follows from the movement-rules) 3. A new card can only appear in a row or column where cards moved. (By necessity) 4. If there is more than one row or column where a new card can appear, one is selected at random. (My current theory)This means that you can indeed control the placement of new cards to a certain degree. When you plan a move, drag slowly to see where cards move and where a row or column is blocked from moving. Look at the next card indicator and think about how the next card would fit in any of the possible positions. If there are two possible positions that would be bad for you and only one that you'd prefer, the odds are against you. I think a very common misconception is that people think new cards can spawn on any free space adjacent to the border regardless of whether cards in the corresponding row or column moved. The necessity for rule #3 becomes clear when you consider a full board where only one row or column moves due to a merge. In this scenario only one free space will appear and the new card has to be placed there. When the board isn't full, the same logic applies regardless of other free spaces along the wall.
Guilty as charged. I have laboured under the misconception that a card should be able to appear in any empty slot along the wall where your swipe started. Was there a note in the tutorial I didn't read?
Let me check that … So the short answer is: no, the tutorial does not explain the specifics of new card placement. It even violates them (I got a new card after trying to do a blocked move). Other observations from this careful play-through of the tutorial: Flagrant disregard for typography. In the case of partial emphasis of a sentence, one shall not color punctuation! [Link] Spoiler When leaving the guided part of the tutorial and entering the open-ended game, it seems that the stack is off by a 1. I have a screenshot of a board with 5 1s on it and no 2s. This should not be possible.
Actually, after picking that game back up, that theory on placement doesn't hold true at all I'm sorry. Look at the first join on that video - the three rightmost columns all join a card, and the new card appears in the leftmost column.
The 1 that appeared in the upper left corner from the previous move was shifted one space down, therefore the 3 that appears in the left column is perfectly justified by the rules. It's not important why the cards in a row or column moved (because of a merge or because of a gap), it just matters that they move.
So, will we try to figure out how truly random the new card placement is, given all that we know up to know? Aka, this part: 4. If there is more than one row or column where a new card can appear, one is selected at random. (My current theory)
Oh regarding coding cleverness there's surely many things that I could do. Anyway, the program actually runs too fast. I set it to make 1000 simulations, and it finished in 7 hours. This means I should be able to push the lookahead one step further and still make it play a full game in less than an hour. I'll see what happens in the simulation in preparation for the release of the "+" update. In the meantime, these were the results over 1000 simulations... 768: 97.6% 1536: 65.8% 3072: 10.9% 6144: 0.1% median score = 81,591 max score = 562,647
My internal Okkam's Razor is strongly opposing the notion of there being anything more than random slection. Why would you (as a developer) do the extra effort to build some fuzzy logic to decrease the chance of the player when the game gets more difficult over time just by its rules? It just smells like conspiracy-theory to me. But if you insist that we look more closely into it, then we have to do the following: 1. Every participant has to understand the logic from rules #1 - #3. There can be no misconceptions! 2. Figure out an experiment / notation that allows easy collection and processing of data and would reveal any bias if there is one. 3. Profit! We have a confirmed 6144 tile form the bot! I repeat: we have a confirmed 6144 from the bot!