Happy New Game – Round 3

Summary of round 2 can be found here

Initial Position:


Checksum: (11 + 2 + 14 + 7 + 5 + 10 + 10 + 14 + 5 + 6) + 2*10 + 0*13 = 104

Monkey Recommends: ic,ac,je,jh

Actual play (date = 19/Jan, score = 459): ed,ef,df,jf,jb → Qh

Spider GM comments: Monkey reasons that even if we refuse the empty column there is still a turnover in column 4 – and hence the same minimum guaranteed turnovers (it’s either one or the other since there is only one Seven and two Sixes).

Monkey Recommends: ic,ac,ce,ji

Actual play (date = 21/Jan, score = 452): ic,ji → 4d

Spider GM comments: A few more good cards and the Dow Jones Happy Star Index could reach stratospheric heights before we know it. Game on!

Monkey Recommends: ae, hd, gh, cg, bj, gc, jf

Actual play (date = 23/Jan, score = 450): ???

Spider GM comments: Not sure if this decision counts as trivial – there are a lot of options to consider. We also need to think about our overall game plan, and let’s not forget to Mind That Stupid Gap in column 8 😊

A Far-Sighted Play (Alternative Version)

Jane Citizen had just finished packing her bags and was about to embark on the trip of a life time – if you pardon the terrible cliché. There was only one challenge left, and Antarctica was to be the toughest of all. Nail Antarctica and she would finally become a household name, revered for generations to come. Fail at the final hurdle and everything else would be for nought.

“See you honey,” said Jane.

“Best of luck,” mumbled John Citizen, his eyes fixed firmly on the computer screen.

Jane glared at her ne’er-do-well partner. All he did was spend countless hours on that damned computer. Even washing the dishes once in a blue moon was beneath John’s dignity. But she grudgingly admitted John had a very high IQ and could play a mean game of Spider Solitaire at the four-suit level without undoing any moves.

“It’s not all about luck,” retorted Jane. “Preparing for the Seven Seven takes many months and years of preparation and dedication, instead of sitting at the compu-”

“Why is it called the Seven Seven?” asked John, hoping for a change of subject. “I know it’s the highest peaks and volcanic mountains on each of the seven continents. But something like Seven Tallest seems a more logical name.”

“That’s beside the point,” replied Jane. “Men are always useless. All they do is eat, drink, sleep and play Spider Sol-”

“Oh, give it a rest,” snapped John as he reflexively clicked the ‘minimise window’ icon of his beloved game. “We both know there are worse vices than playing Spider Solitaire at home. Besides, this feat was completed by only seven others, all men.”

“Your general knowledge is commendable, but history has proved again and again that in the last few decades women have made great strides towards gender equa-blah blah blah blah blah blah blah blah blah blah. Blah blah blah, blah blah blah blah blah blah blah. Blah blah blah …”

Joe Bloggs had tuned out as usual. At long last, his partner has left and Joe could finally concentrate on the cards in front of him.

The latest episode of I’m a Married Man, Get Me Out Of Here! was off to a lousy start for several reasons: John had accrued zero turnovers in round 1 and far too many Kings for his liking. But at least he had obtained an empty column after taking several good cards in column 5. The obvious option was “ef,be” to take out the last unseen card in column 2. But John’s gut instinct sensed this was wrong. It would be difficult to turnover more cards with the help of a solitary empty column.

John noticed that there is only one Queen visible. However, even the Ninja Monkey would know what to do if the next turnover was a Queen of any suit. The real problem was Sevens. There are several Eights visible but buried beneath Kings – but only one Seven of Hearts visible in column 3 (yes, mind the gap in column 8!). In other words, there were seven Sevens unseen, either face-down in the tableau or in the stock. If the last card in column 2 was a Seven, John would be considerably embarrassed with no Eight available just when he needed it most. And if several Sevens suddenly appeared in the next round, John would be in more trouble than the poor dude who fell into a crevasse in May 2021.

John knew from experience that winning is not all about luck. Preparing for the seven Sevens would require many moves and plans of preparation and dedication – cards don’t magically become useful or useless just because the random number generator spat out the power of a prime number.

Aha! John realised he could turnover a card in column 10. True, this places a King in an empty column but there were legit hopes of getting the last face-down card in column 2 or 4. But “ef,je,jf,ja” or “eg,je,jg,ja” would free up two Eights which might augur well for the future.  If the next card in column 10 was any Queen or Seven then John would suddenly be back in the game. Several other cards would allow a single turnover – and another shot at a Queen or Seven. So it was decided then: John would dump the King of Diamonds into the empty column and pray for luck …

A Far-Sighted Play

In round 1, Team Good reached the following position. As so often happens, our options increase significantly when we procure an empty column – and so do our opportunities for mistakes.

Although we received a large slice of luck with several good cards in column 5 the game state remains deplorable. Bart chose the obvious “ef,be” to reveal the last face-down card in column 2. The problem is what do we do for an encore?

As I have alluded to several times earlier, we should be wary of the dangers of one-hole-no-card. With a glaring deficiency of Vitamin Q and Lucky Sevens it is not hard to imagine a scenario where we would be unable to turn over any cards even if we did obtain an empty column. In other words, empty columns are worth less than their usual face value in this particular situation. Let us construct a histogram of the cards that are visible so far:

We immediately see the biggest problem: only a solitary Seven is visible (mind the gap in column 8!) and we have no less than seven Eights. But the histogram doesn’t tell the full story. Close analysis of the tableau shows that most the Eights are buried under Kings. Ergo, if several Sevens appear on the next round, then we would be in an awkward spot when the Eights suddenly become essential. We should note that the shortage of Queens isn’t nearly as serious as the shortage of Eights. The difference is 5:1 instead of 7:1 and we still have one king exposed (or two if we allow the possibility of “eg,cg”). Also, if the last card in column 2 was a Seven of any suit, we would be considerably embarrassed after making the obvious play.

Going back to the diagram let us look for other possibilities. We soon notice that it is possible to turnover a card in column 10. This frees two precious Eights, so now we have a home if the next card is a Seven. In fact, we would obtain a double turnover if the next card is any Queen or Seven. Several other cards would yield a single turnover – less ideal, but at least we still get another shot at a double turnover before dealing a new row. Of course, the down-side is we dump a King into an empty column, but as noted above, empty columns are not all they’re cracked up to be.

This illustrates another general principle: when a game is going badly, we should think outside the box (terrible cliché notwithstanding) and look for opportunities to change the flow of the game, rather than letting the winning chances drift from Buckleys to Nada. And yes, the same principle applies to many strategy games, not just Spider Solitaire.

I believe Bart (and Ninja Monkey!) made an error in not turning over column 10. It may not be a serious mistake, but given that our situation is dire, the margin of error isn’t exactly great.

Fortunately, the last card in column 2 turned out to be the Three of Spades. We get our empty column back, but any Seven is no longer worth a double-turnover.

NOTE: My main concern with critiquing the play before the end of the hand is that players can receive “undeserved hints” for subsequent rounds, but I believe we have made enough progress for this concern to be rendered moot.

Happy New Game – Round 2 Summary

Moves can be found here

An interesting round. We managed to clear all face-down cards in columns 2 and 5. But our distribution is terrible with a severe deficiency in Vitamin Q and Lucky Sevens. Still, a lot can change with the next ten cards and games are rarely mathematically lost before the last deal.

Bart has done an excellent job in maintaining the histogram of all ranks and performing some wacky and wonderful calculations. Note that one bad game does not an accusation of biased RNG make – especially considering we won the previous game involving Red Blue and Green. In any case, expert-level play is more than number crunching, Excel Spreadsheeting and inventing terms like Dow Jones Whine Index. Hopefully the next round will give Bart the opportunity to showcase his improving skills.

Unfortunately, IM Bug has had a serious accident and won’t be contributing much to the remainder of this game. I will not elaborate on the details – that task is up to IM Bug if he so chooses.

Digressions aside, Bart is playing reasonably well, although it’s admittedly hard to rot13(shpx) things up when our options were limited throughout all of rounds 1 and 2.

Round 3 coming soon – watch this space 😊

Final Position of Round 2

It’s Official – Many Spider Solitaire Programs Are Biased

It’s official. I believe many Spider Solitaire programs are biased – both for mobile phone and PC. Biased means if a player wins too many games, then the software will stack the cards against him in subsequent deals. Apologies if this comes across as a broken record, but “spider-software-bashing” is what inspired me to create this blog in the first place.

Let me state at the outset this is only my belief, and it comes with a number of caveats. I won’t expect regular readers to agree with my POV, but at least they can hopefully see where I am coming from. Following the rot13(erirefr fuvg fnaqjvpu) principle, I will start with a large number of caveats, then bring in the good stuff, and finally summarise these caveats. I assume we are always playing at the four-suit level (although it is possible to perform similar experiments with less than four suits).

The Caveats

  • Firstly, I don’t expect regular players to be able to reproduce my results. You will need a very good aptitude at the game. In particular you must be able to win practically every game at the four-suit level with enough perseverance and skill. Fortunately undo/restart is permissable (but not reject). Once you reach that ability you also need a “burn-in period” i.e., play enough hands to let the software deduce you have a good very aptitude for the game.
  • Secondly, I don’t have very many data points. The point of this article is to merely explain why I believe many programs are biased, and I am not claiming conclusive proof. Ideally, if time permits, I would prefer to play 100 games instead of 10. Oh, did I mention I am returning to work on Monday? In any case, if you are intelligent enough to play decently at the four-suit level then you are intelligent enough to draw your own conclusions.
  • I have no convincing explanation of what a software developer would gain by rigging the RNG.
  • A conclusive proof will entail some detailed knowledge of statistics (e.g. what is the meaning of statistically-significant, Komolgorov-Smirnov test, etc). I am nowhere near being in a position to submit a paper to Journal of the American Statistical Association.
  • I tested this on an earlier version of Ninja Monkey’s code, not the one I’m currently using now for the current game.
  • If you are stuck at 10-20% win rate then the bias is either non-existent, or doesn’t concern you. If you are winning above 20% then this is probably relevant. If you are serious about improving your game then all bets are off: your win rate is irrelevant and this is most definitely worth paying attention to.
  • I write this with a heavy heart – one of my readers plays a certain online server, which I now suspect to be biased.

Now Onto My Actual Claims

The certain online server in question is this one. Initially I thought this was kosher after some “experimentation”. However, one of my recent losses cut a little too close to the bone. I then made a serious effort to win 10 consecutive games for the first time – using RESTART if necessary. Note that the software forbids undoing 2 or more moves in a row (and single undo is illegal after dealing a row or removing a suit). I immediately sensed something was off.

I did manage to win all 10 games, but most of them were practically unwinnable without undo/restart. And not for lack of trying. Needless to say, if a Spider Solitaire program penalises a player who wins a few too many with undo/restart, then you can guess how it will treat a player who wins a few too many without these privileges.

Bad Beat

Listen To The Beat

As you might have guessed, I recorded the identity of every card in each of the 10 hands and ran Ninja Monkey’s algorithm. NM played each hand 50 times, for a total of 500 hands. Only for 2 hands did NM manage to win at least once. Whereas for random hands, NM should practically always win at least one in 50. I had similar results for a number of different programs.

Admittedly I may have tilted after a few games and failed to play to the best of my ability. But if anyone accuses NM of doing the same to corroborate my claims I don’t wanna hear about it.

I should point out one or two hands were grannies. Not exactly walkovers, but I would expect even my grandma will have a legit chance of winning sans undo. The term GRANNIE was apparently coined by a Scrabble expert – if you get all the power tiles then even your grandma can’t rot13(shpx) it up. In any case, one of my victories can safely be described as an EARNING.

My gut feeling says the software company wants to “equalise the players” so that (ideally) every single hand is either won by every player or lost by every player. Hopefully I don’t need to explain why this is a very bad idea.

Since it is beyond the scope to discuss the detailed mathematic specificity (with apologies to Kevin Rudd), I will simply present the initial game state for each of the 10 hands. I recommend the reader play the hands out for himself – first attempt to win without undo/restart, and if that fails then see how easy/difficult it is to win with undo/restart. The reader can also perform a control experiment by dealing 10 random hands. For extra credit: try to guess which two hands gave Ninja Monkey at least one victory in 50 tries.

List Can Be Any Colour As Long As It’s Black

As a result of this experiment, I have personally black-listed a number of Spider Solitaire programs, both for PC and mobile. From now on I only accept recognised programs like Microsoft Windows, or programs with source code (e.g. a GitHub project).

Games that “look and feel slick” are a red flag. Most of the bad programs I have encountered go beyond the basic “six-week-internship-prove-you-know-Javascript” thingy. While it is true that correlation is not causation, I would rather put my money on something that looks tacky instead of slick. Yes, the tableau cards do not flip automatically which is admittedly stupid, but at least you know what you’re getting. And the developer seems like a cool guy – anyone who’s willing to publish their name like that is almost certainly kosher. I found two look-and-feel-slick mobile phone apps, both dodgy and both had a similar “auto-complete” function when every column was either empty or reduced to a single straight-flush of any length. They’re probably from the same company.

Conversely if something looks like a basic implementation of Spider from someone who is learning the ropes of version-control in GitHub, then it is reasonable to assume there is no effort to punish a player who wins too often.

Yes, I hear you say, what possible motive do software developers have for punishing players who perform too well? True, not all Spider apps offer players a chance to enter competitions for “free” provided they sign up for PayPal, give away credit card details, their home and work addresses and the number of times they use the toilet every day. I was asking the exact same question and don’t have an answer. What I do know is that my numbers don’t lie – if Ninja Monkey says something is off, then Ninja Monkey says something is off.

IMHO, the onus should therefore be on software developers to prove they are kosher. Guilty until proven innocent if you pardon the inversion of a terrible cliché. If you can write a decent half-page essay on poker player Veronica Brill without help from Google, then you will certainly know where I am coming from.


I have decided many Spider Solitaire programs are not worth playing for both mobile phone and PC and I have blacklisted a number of those. But I wish to reiterate the fact this is my opinion only and my claims may well be difficult to substantiate for average players. Do not expect to see my name in lights if you subscribe to Journal of the American Statistical Association. But at least the reader has something to go on if he wishes to investigate for himself.

Finally, I wish to apologise if this comes across as a long-winded rant. But I believe this topic was worthy of more than the usual number of paragraphs.

And if you believe that some program is biased then you can also sit back and listen to the beat.

Happy New Game – Round 2

Summary of round 1 can be found here

Initial Position:


Checksum: (10 + 4 + 7 + 7 + 5 + 6 + 9 + 13 + 5 + 8) + 3*10 + 0*13 = 104

Monkey Recommends: “ha,dh,bc,ef,bh”

Actual play (date = 10/Jan, score = 479): ha,dh,bc,bh

Spider GM comments: Even the monkey isn’t tempted by the in-suit build of “id” 😊 Let’s accept our two turnovers and be grateful that every rank now appears at least once 😉

Monkey Recommends: “gb,bf,eg,ab,ec”

Actual play (date = 12/Jan, score = 475): ef,ec → Jd (trivial)

Spider GM comments: This illustrates an interesting phenomenon: there are many “idle moves” involving Jacks and Tens but only one constructive course of action. With no penalty for irrelevant moves it is no surprise that Monkey’s RNG dawdles around for a bit before eventually finding the turnover.

Monkey Recommends: gb,ed

Actual play (date = 12/Jan, score = 473): ed → 5d (trivial)

Spider GM comments: looks like we guessed right with dh,bh instead of bd. Go Team! 😊

Monkey Recommends: ec

Actual play (date = 12/Jan, score = 472): ec → 4s (trivial)

Spider GM comments: Finally Monkey has mastered the art of Not Wasting Time!

Monkey Recommends: eg,be

Actual play (date = 12/Jan, score = 471): ef,be → 3s

Spider GM comments (in his best Adelaide Metro voice): Please Mind The Gap: note that it is illegal to spend the empty column to turnover column 8, since the Seven of Spades is missing.

Monkey Recommends: bd,hc,dh,ib,hd,cd,ch,ge,eg,bh,jb,hc,ge,ch,fe,eg,jg,hc,jf

Actual play (date = 14/Jan, score = 469): bd,jb,jf,ja → 3d

Spider GM comments: I must admit that monkey’s suggestion is extremely useful if you’re an experienced programmer trying to sanity check for illegal moves. Go Monkey! 😊

Monkey Recommends: “ge,hj,id,dh,eg,ae,ga,ag,hc,ea  + ch,ge,eg,ae,hc,dh,hd,ga,ag,ea + ge,ch,eg,ge,hc,dh,eg,ae,ga,ag + deal”

Actual play (date = 16/Jan, score = 465): hj,ih,hc,dh,ae, deal

Spider GM comments: Okay I stand corrected. The Three of Spades was not a good card after all ☹ How much tidying up are you willing to perform before the next deal?

Final Position

Here is the final position. IM Bartacus has a list-minute opportunity to sanity-check I haven’t goofed anything up and it’s okay to deal a new row of cards.

Final Position of Round 2

Happy New Game – Round 1 Summary

Moves can be found here

Not much to write about unfortunately. We got a terrible distribution with five Sixes, five Eights and zero Sevens. Not to mention zero turnovers. At least we got a few in-suit builds.

Bart mentioned that only 5% of distributions would be worse than what we actually have. I would be interested in how he actually measured that. Did he choose to focus on Sixes, Sevens and Eights before the hand or during the hand? Is he measuring the worst differential between any two consecutive ranks or three consecutive ranks? Is he applying the cryptographic Keccak-256 hash function to our game state and looking for any series of 81 digits that form a valid Sudoku? I brought up similar issues in an earlier post.

The other problem worth mentioning is four Kings are already in play. Change them to all Queens and our prospects will be much better (even though we still don’t get a turnover). The only bright spot is it is illegal for the computer to send over a very inconvenient Backgammon doubling cube centred on ‘2’.

Final position of Round 1

Happy New Game – Round 1

Summary of round 0 can be found here

Initial position:


Oops, I forgot to add the spoiler blocker before posting!

Monkey Recommends: “ib,ea,ed,dh,hd, bd,db,bd,bh,dh, hd,dh,hd,dh,hd, dh,hd,dh,hd,dh, hd,dh,hd,dh,hd, dh,hd,dh,hd,dh, deal”

Actual play (date = 8/Jan, score = 484): bh,ea,ed,ih, deal

Spider GM comments: Let’s see how resilient you are when dealing with bad breaks in life 😊

Final position of round 1

Final Position

Happy New Game – Round 0 Summary

Moves can be found here.

This was a decent round. We got 12 turnovers, most of which are in-suit. In Monkey-speak our evaluation is 128 points, assuming turnovers are worth 10, in-suit builds are worth 1, and Spider GM hasn’t forgotten how to count. On the minus side, every column has at least one face-down card and we’ve all had our fair share of demoralising losses where no empty column was obtained for the entire game. Still, I think it’s too early to worry about that yet.

There were no complicated decisions to make and I would expect any half-decent player (such as my famous brother Terence Tao who introduced me to the game many years ago) to reach the same game state – ignoring some minor variation such as flipping a coin on the last turnover.

I expect future rounds will pose some more interesting decisions – as well as further insights into the strengths and weaknesses of Ninja Monkey’s algorithm 😊 Obviously I was never expecting miracles from NM, but having gained some experience with GitHub and Python’s tkinter package, I’m not in a position to complain. At least I have some idea for further improving the algorithm. Whether I actually get enough time to implement this is another story. But we digress.

With IM Bug is returning to the fold in about one week’s time, this promises to be more exciting than the current rot13(fuvgfgbez) involving Novak Djokovic and Australia. 😉 Game on!

Final position of Round 0

Happy New Game – Round 0

Firstly, apologies for delaying this game by a few days, but I really really really wanted to start things off with a terrible Spider-GM joke. I’m sure you would agree it was worth the wait 😊

Here is the initial position. A promising start, but experienced players know that things can quickly turn sour at some point in the hand. Good luck!

Previous Moves

Initial position:


Stock = 50

Checksum: 6 + 6 + 6  + 6 + 5 + 5 + 5 + 5 + 5 + 5 + 50 = 104

Monkey Recommends: “cf”

Actual play (date = 31/Dec, score = 500): hc → Kh

Spider GM comments: I will use the score to “index” different game states over time. For instance, score=500, 499, 498 instead of decision = 1,2,3 etc. Note that score is not necessarily decreasing by 1 each time.

Monkey recommends: “cf”

Actual play (date = 1/Jan, score = 499): eh → 6 of Hearts

Spider GM comments: At this early stage my primary concern is the formatting issues. In particular I want the reader(s) to focus on the following question: “do you foresee any potential problems if I follow the same format as the previous Among-Us game?”

Monkey recommends: cf

Actual play (date = 3/Jan, score = 498): cf → 8h

Spider GM comments: If this were chess, the game would immediately be drawn due to the triple repetition of monkey recommending the same move. Bad jokes aside, I have added the dates as requested by IM Bartacus (the date indicates when I asked the question of how to continue)

Monkey recommends: bg

Actual play (date = 4/Jan, score = 497): dj → Jh (trivial)

Spider GM comments: This is the problem I mentioned earlier. Monkey only cares about the worst case scenario when all turnovers are useless – therefore bg and dj were considered equivalent.

Monkey recommends: dh

Actual play (date = 4/Jan, score = 496): dh → 5s (trivial)

Spider GM comments: Okay, at least the monkey is not totally hopeless.

Monkey recommends: da

Actual play (date = 4/Jan, score = 495): da → Ac (trivial)

Spider GM comments: Pass

Monkey recommends: ib(!)

Actual play (date = 4/Jan, score = 494): db → 3h (trivial)

Spider GM comments: Rot13(sbe shpx’f fnxr)! I might need to take a closer look at my Python code ☹

Monkey recommends: bg

Actual play (date = 4/Jan, score = 493): bg→ 2h (trivial)

Spider GM comments: At least I managed to fix the bug … I think …

Monkey recommends: fh

Actual play (date = 4/Jan, score = 492): ib → Ks

Spider GM comments: A choice of two in-suit builds – and Monkey reminds us we still have the turn-over in column 6 😊

Monkey recommends: ae, ea, gd, bg

Actual play (date = 6/Jan, score = 491): bd → 5c

Spider GM comments: No comment

Monkey recommends: fh

Actual play (date = 6/Jan, score = 490): fh → 6d

Spider GM comments:  pass

Monkey recommends: af, fe, bf

Actual play (date = 6/Jan, score = 489): be → 2d

Spider GM: I thought there were only two legal options but Monkey proves me wrong. But they were equivalent anyway 😊

Monkey recommends: deal

Actual play (date = 6/Jan, score = 488): (a1=e1), deal

Spider GM: I assume we’re dealing a new row unless someone can find a miniscule advantage in shuffling the black Fives around columns 1/5/6 – EDIT: Bart did find a “miniscule advantage”, so the Fives have been swapped

Final Position