Sheesh, I wish I knew enough about coding to really make sense of the many examples in “Easy AI with Python”.
I’m happy about the little I know concerning Bash-scripting and Perl, without this my cut-up-twitter-experiment couldn’t even have been dreamt of. But back to AI + Python. I was surprised to learn that all it takes to recreate a Mastermind-like-game is 30 lines of code:
Take a look at the slides to learn about simple neural nets, a solution-finder to the Eight queens puzzle, or ways to create Sudoku- and Sliding-Block-style-games. Apparently it’s easy to understand and great for teaching Python. I’ll give it a try this weekend, I predict lots of FAIL and burning eyes from staring at spaghetti-code. (The picture above was taken in Berlin, near Görlitzer Bahnhof)
import random from itertools import izip, imap digits = 4 fmt = ‘%0’ + str(digits) + ’d’ searchspace = tuple([tuple(map(int,fmt % i)) for i in range(0,10**digits)]) def compare(a, b, map=imap, sum=sum, zip=izip, min=min): count1 =  * 10 count2 =  * 10 strikes = 0 for dig1, dig2 in zip(a,b): if dig1 == dig2: strikes += 1 count1[dig1] += 1 count2[dig2] += 1 balls = sum(map(min, count1, count2)) - strikes return (strikes, balls)
def rungame(target, strategy, maxtries=15): possibles = list(searchspace) for i in xrange(maxtries): g = strategy(i, possibles) print “Out of %7d possibilities. I’ll guess %r” % (len(possibles), g), score = compare(g, target) print ‘ —> ‘, score if score == digits: print “That’s it. After %d tries, I won.” % (i+1,) break possibles = [n for n in possibles if compare(g, n) == score] return i+1
def s_allrand(i, possibles): ‘Simple strategy that randomly chooses one remaining possibility’ return random.choice(possibles) hiddencode = (4, 3, 3, 7) rungame(hiddencode, s_allrand)