Alchemists Code Update
I haven't done a full analysis of the new algorithm, but it appears to resolve all of the previously identified issues.
Vít Vodička at Czech Games Edition was kind enough to email me just before the update was released with some details about the new algorithm:
The new code generator has these features:
- it still generates 4-letter codes (yes - a 5-letter algorithm would be better but ... we can't change the printed rulebooks that talk about 4-letters)
- old random code generator created codes so last letter was always A-E - if you put this old code into the new generator you will get the same result as before (so it wont break most of old games)
- If you didn't use the random generator but instead a random 4 letters the new algorithm will unfortunately return a different result thus break your game
- DEMO give still the same result
- Codes generated by new algorithm end on F-Z and these codes will give different results when opened with new and old algorithm.
He also let me know that Matúš Kotry, the designer of the game and the algorithm, posted about the update at BoardGameGeek:
The new update is now available for all platforms (iOS, Android, Windows Phone and web browser version). The new algorithm is much more sophisticated, so I hope it is not possible to cheat anymore (thanks again to the OP for pointing out this serious issue).
. . .
Some of you may wonder, how the app can tell, if the code was generated by the old version or the new one so here is the explanation:
The last letter in all codes generated by the old version of the app after hitting "Start new game" was A, B, C, D or E. The new version of the app always generates codes ending with F-Z. So any codes ending with A-E (and code "DEMO") are still processed by the old algorithm, if entered manually.
However, in previous versions it was possible to enter any code from AAAA-ZZZZ after tapping "Enter Game Code". So if you made up your own code instead of hitting "Start new game" and letting the app generate one for you, you may get different results in the new version.
I don't have any interesting insights into the new algorithm, other than to note that it doesn't follow an obvious pattern like the old one did (or at least not one that I've noticed). But if I find out anything more about it then I'll write another post.