On one hand: this is a lovely puzzle, with extra attention to details, such as debug visuals, so I am happy to see it hitting the puzzle pool.
On the other hand: One month after approval, community success rate is still 0%. I find it highly unlikely, that all 3 approvers forgot to cash in the extra 50 XP. Seems more like you are all caught red-handed here, acting against approval guidelines. Shame on you. If the quest map is so important for you, why not working a bit for it?
We were all waiting to approve until the option to disable autoplay was added (JBM agreed to do it at some point), but these guys materialized out of nowhere and approved.
IMO the best solution would be to add a first turn where the user tells if he wants autoplay or not.
Then the game plays as usual with/without autoplay.
The puzzle has no (actually reported) issue. The only problem is the moderation, and CG has repeatedly hammered “there is no issue in trusting the community”, so that’s not an issue either.
That it was approved before it reached the final set of features is saddisappoininga fact of life who cares, really, but neither permanent nor an actual issue. I moved it from WIP to Ready when it was ready, and it still is.
It’s got 0 solvers because THIS IS HARD PUZZLE. And this one happens to be a solo game with viewer, where people can’t copy-paste a solution from the contribution page. But, remember, no one would ever do that because we trust the community.
Autoplay is a red herring. You may like it or dislike it, but it doesn’t change jack shit about the problem’s ease of solvability.
I can understand that the people who actually worked at solving it and waited for the autoplay mode selection are angry. But their problem is not autoplay. Their problem is that others beat them to the punch.
For Test Case 5 (Hard Game), why doesn’t this solution work? It sticks at the 7th move (37) where the Ace of Spades doesn’t get autoplayed as expected.
There are some things time can solve. For everything else, there is Apache Maven.
So more precisely, the bug was that a maximum of one round of autoplay was allowed after each move, where a round is the set of autoplay moves that are available from a given position independently of each other. Hindsight-obviously, when the moves are interdependent some are going to miss.
Thank you @Westicles for taking the time to hand-verify the solution database entries. This is now fixed.
For the first test case and solution 72 26 72 75 27 7a 57 57 67 1b 3c b1 41 4h 4h 6h 41 3b 6d 56, I get this:
The game has crashed. Please contact the author and enclose the following error:
java.lang.RuntimeException: Internal error: accepting incompatible card on foundation
at re.desast.freecell.Foundation.acceptCard(Foundation.java:24)
at re.desast.freecell.Foundation.acceptCards(Foundation.java:36)
at re.desast.freecell.Move.performPlacement(Move.java:42)
at com.codingame.game.Referee.performAndViewMove(Referee.java:128)
at com.codingame.game.Referee.autoPlay(Referee.java:117)
at com.codingame.game.Referee.gameTurn(Referee.java:37)
at com.codingame.gameengine.core.GameManager.start(GameManager.java:122)
at com.codingame.gameengine.core.RefereeMain.start(RefereeMain.java:67)
at com.codingame.gameengine.core.RefereeMain.main(RefereeMain.java:50)
How do you know without having a solution? There’s a “very hard” category too.
I gave it a try (not totally motivated as autoplay would add another task on top of solving the actual puzzle but still a somewhat serious attempt). My A* solver is far beyond the 1s (*) limit even on the easiest testcase.
Can you guarantee that the puzzle is solvable without tweaking for specific testcases?
(*) Try to win before reaching the turn or time limit. isn’t very specific, I just assume 1s for the first turn here.
I don’t know much about an algorithmic solution, didn’t try at all, but I remember playing this game a lot 20 years ago and if you want to find a good heuristic, keep in mind that gaining a new empty column is really something worthy, so it must count a lot in your evaluation function.