Victor worked on his own project in Kotlin and Keanu, and we brought them together for the final demo to show off both. Below I (Kieran) only describe my implementation though.
I've always struggled with the game of cheat myself, preferring to always tell the truth, which tends to end in me losing. I took on the challenge of producing an AI, with the hopes that it might be able to teach me a thing or two.
What it does
The AI is primarily based on tree traversal, attempting to estimate some of the probabilities involved to predict the likely score from taking certain paths along the tree. It also implements logic too, for example if at the start of a round the computer had 3 aces in our hand, it's impossible the human could play 2 aces themselves without picking up the pile, so they must be lying.
How I built it
It's built using Python. I also made use of Jupyter notebook to keep track of past games against human players.
Challenges I ran into
The big problem with the challenge was that computing all possibilities is very computationally expensive. I had to produce a way for the computer to give a response in a few seconds. I also had to think about how to approximate the probabilities a player would call cheat, and that a player would play a certain card, which were fairly complicated problems.
Accomplishments that I'm proud of
It somewhat works, and actually managed to win a game against a human, which I'm impressed with considering I started writing this code 12 hours ago.
What I learned
I learned more about how to apply some of the things we had learned in university about computing the outcome of probabilistic games. I also learnt more about how to model the real world in my programming.
What's next for Optimizing Cheat Using Tree Traversal and Probability
A lot of work needs doing on predicting whether someone is cheating or not, and working out the probability of the opponent's next play.