It’s also my experience that KPatience doesn’t skip unwinnable games. It also occasionally generates one where it can’t determine whether the game is solvable or not, which is probably due to search space limitations. I’ve won a couple of those, but they’re risky to start in the first place!
I can see the logic for not skipping unsolvable games.
KPat uses a seed system (called “Numbered Deals”) to “shuffle” the cards before a game. The seed can be generated (pseudo-)randomly, which is the default, or entered manually. In theory, a manually-entered seed could be unsolvable, and there would then need to be completely different logic flow for random and manual seeds after the shuffle and deal.
It’s way simpler to just generate a new game seed randomly as necessary and then have the rest of the program be clueless as to whether it was typed in or not.
It also occasionally generates one where it can’t determine whether the game is solvable or not, which is probably due to search space limitations. I’ve won a couple of those, but they’re risky to start in the first place!
I kinda like those. I’ve also won couple of them and one of them was quite close to a win and it was always unwinnable at the very last parts (I tried the same seed 3-4 times).
Yeah, I get the logic and with the current system it might cause a long start if it runs into a bad string since it should also skip undeterminable games. Maybe someone should rewrite it in Rust. /j
It’s also my experience that KPatience doesn’t skip unwinnable games. It also occasionally generates one where it can’t determine whether the game is solvable or not, which is probably due to search space limitations. I’ve won a couple of those, but they’re risky to start in the first place!
I can see the logic for not skipping unsolvable games.
KPat uses a seed system (called “Numbered Deals”) to “shuffle” the cards before a game. The seed can be generated (pseudo-)randomly, which is the default, or entered manually. In theory, a manually-entered seed could be unsolvable, and there would then need to be completely different logic flow for random and manual seeds after the shuffle and deal.
It’s way simpler to just generate a new game seed randomly as necessary and then have the rest of the program be clueless as to whether it was typed in or not.
I kinda like those. I’ve also won couple of them and one of them was quite close to a win and it was always unwinnable at the very last parts (I tried the same seed 3-4 times).
Yeah, I get the logic and with the current system it might cause a long start if it runs into a bad string since it should also skip undeterminable games. Maybe someone should rewrite it in Rust. /j