Попробовал, наконец, классную математическую настольную игру "Машина Тьюринга".
На самом деле не столько игра, сколько головоломка, которую вы можете решать в одиночку, совместно или соревнуясь. Она совершенно гениально сделана, и я не до конца понимаю, как именно, но она работает и приносит много удовольствия.
Каждая задача в игре — трехзначное число с цифрами 1..5, зашифрованное в наборе карточек. Карточки двух видов: выражение и его валидатор. Выражение, например, может быть таким: "Вторая цифра меньше трех". Вы выдвигаете гипотезу, каким именно будет число-ответ. А дальше происходит магия — каждое такое число собирается из трёх перфокарт с отверстиями, вы прикладываете к сборке валидатор, и в единственном оставшемся отверстии видете бинарный результат: истина или ложь. Таким образом, получаете информацию о том, справедливо ли выражение для загаданного числа.
Ход за ходом вы должны выбирать самые эффективные гипотезы и выражения, которые отсекут больше всего неверных вариантов. В какой-то момент информации для однозначного ответа становится достаточно. Чем меньше ходов вы потратили, тем лучше.
Если вы нерд и любите фокусы с цифрами, то это прям мастхэв. Играется очень приятно, и вызывает неподдельный кайф каждый раз, когда вы собираете из кусочков ответ, хотя за мгновение до этого может казаться, что до решения ещё очень далеко.
Если же вы не фанат подобного, то подарите коробку знакомому математику, он будет рад!
#games
https://bit.ly/coroutines
At Open Source Bridge and #PyGotham in 2015, and at SCALE14x, I demonstrated that you can code a Python 3 #async framework in under an hour. I start the demo by writing a callback-based async framework, built on non-blocking sockets and a simple event loop. Then I adapt the framework to use generator-based #coroutines, which are cleaner than callbacks but still more efficient than threads for async I/O.