## exchaoordo 3 years ago Is anyone interested in posting their code for Exercise 2.6, the NIMS game? I have mine working but I thought it would be nice to see others.

1. exchaoordo

Of course another quirk in OS is I can't attach a file to a question, but I can to a comment, hence:

2. andrew.m.higgs

Yours looks more elegant than mine. :-) I also went on step further and wrap parts in functions and made it that more than two players could play. But that was just for fun.

3. exchaoordo

Yours is much more robust than mine. And you've used booleans and min, so kudos to you.Thanks for posting.-dan

4. andrew.m.higgs

Pleasure. I believe we learn the most by comparing. That is what makes open source so wonderful. I am going to study your cod because i like the way you worked through the problem.

5. exchaoordo

Study my cod just for the halibut ;-)

6. andrew.m.higgs

:-) See, peer review works...

7. Screech

Since there is nearly identical code handling each player, I combined them and set a variable to denote the current player.

8. andrew.m.higgs

What I did as an added bit of work was to create a function called make_move and made it that more then 2 players could play at once.

9. FabienToune

I tried it with recursion and tried to avoir any exception during game... seems to work fine

10. andrew.m.higgs

Hi Fabien, I like your code. Very neat indeed. Only problem is that stack can go negative which means you will never end the game, in certain circumstances. :-)

11. FabienToune

Made a mistake in my while test... forgot to convert choice to integer and flipped the comparator... Like, I think the problem shouldn't happen again...

12. dsabalete

I like the recursive solution from FabienTourne. Anyway, here is mine:

13. mmailliw

I'll post the function I used to make the English grammatically correct (with regards to singular vs plural): def plural(counter, word): if word == "stones": if counter == 1: return "stone" else: return "stones" elif word == "are": if counter == 1: return "is" else: return "are" elif word == "remain": if counter == 1: return "remains" else: return "remain" else: return None