Playing Go with Clojure
summary
Shows a working Clojure Go program that uses Monte Carlo tree search plus a multi-armed bandit (UCB) selector, implements pseudo-liberty bookkeeping to avoid full chain walks, and benchmarks with Criterium. The implementation targets ~10k random 9x9 games/sec (measured ~120 µs per random game), uses deftype mutable structures and bytebuffer-style layouts for speed, and results in a bot called Pushkin that beats canogo sometimes but fails on many life-and-death cases.
AI-written summary · about
chapters (25)
- 0:00Intro
- 0:14RULES OF GO
- 3:20SHALL WE PLAY A GAME?
- 4:24THE GAME TREE
- 5:34MINIMAX
- 6:52EVALUATION FUNCTIONS
- 7:39THE TROUBLE
- 10:34HISTORICAL APPROACHES
- 11:39MONTE CARLO SIMULATION
- 13:15MONTE CARLO EVALUATION
- 14:51MULTI-ARMED BANDIT
- 15:59MONTE CARLO TREE SEARCH
- 17:10SIMULATING GO WITH CLOJURE
- 18:25INCREMENTAL STATE
- 20:07A LITTLE ARITHMETIC
- 20:45A MILLION TIMES A SECOND
- 21:09execute typical instruction
- 22:44NOT YOUR DAY JOB
- 23:45MUTABLE STATE
- 26:14MEASURE TWICE CODE ONCE
- 26:26CRITERIUM
- 27:21BOTTOM-UP PERFORMANCE
- 28:02INDIRECTION
- 30:10PUT IT ALL TOGETHER
- 30:30PLUMBING THE DEPTHS OF PERFORMANCE INSANITY
related talks
46mBeating Go thanks to the power of randomness
36mLearning Clojure and CLJS by playing a card game
36mLearning Clojure and ClojureScript by playing a card game
01h 02mSolving Problems the Clojure Way
40mGenetic Programming in Clojure
38mFun with Functional Programming in Clojure
40mFun with Functional Programming in Clojure
38mUSE lisp WITH game - Making an Adventure Game with Clojure
