I love Pi. It has always fascinated me. And since I also create sudoku puzzles, I just found myself wanting to make a Pi sudoku puzzle one day. I wanted it rotational symmetric, as a good puzzle should be, and I wanted it with as few given as possible. Since I didn’t find anyone with 20 givens, I ended up with 21 givens. I also wanted it to have the first line with the numbers 314, with an opening between 3 and 14, since that’s what most people think of as Pi. I ended up creating about 20 puzzles, and picked one which I think looks good, and is pretty difficult to solve. So here it is. Read the puzzle from upper left to bottom right and you’ll get 21 digits of Pi. If you want to solve it, head to my website.
slowmove.pl
slowmove.pl /cygwin/d/dropbox/ /cygwin/d/gdrive/ 1 100 2
So I moved the files back to the internal SSD, reformatted the T3 to Mac OS Extended (Journaled), and moved the files to the T3 again. And, voila, the speed was back again.
]]>$ ./stockfish-7-linux/Linux/stockfish\ 7\ x64 ./stockfish-7-linux/Linux/stockfish 7 x64: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by ./stockfish-7-linux/Linux/stockfish 7 x64) ./stockfish-7-linux/Linux/stockfish 7 x64: /lib64/libc.so.6: version `GLIBC_2.17' not found (required by ./stockfish-7-linux/Linux/stockfish 7 x64)
And when I ran komodo 10.1 (which you have to buy), I got:
$ ./komodo-10.1-linux ./komodo-10.1-linux: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by ./komodo-10.1-linux) ./komodo-10.1-linux: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by ./komodo-10.1-linux)
The problem is Centos 6 has too old glibc version. So how to fix this? The short version is to download the finished files I’ll show you how to create in the long answer. They are ld-linux-x64-64.so.2, libc.so.6 and libstdc++.so.6.
Short answer:
wget http://www.menneske.no/libs/chesslib.tar.gz tar zxvf chesslib.tar.gz ./ld-linux-x86-64.so.2 --library-path . <path to komodo or stockfish>
Voila, they both works fine on Centos 6.
Long answer:
For stockfish you can download the src and compile it. But for komodo that is not possible. So, you need to compile both gcc and glibc to be able to get the files. It takes a long time, and some GB of space, but here is how you do it, if you don’t trust my precompiled files:
# First we assure we have the development tools to build stuff yum groupinstall "Development tools" yum install -y glibc-devel glibc-i686 # Now we build glibc. This will not overwrite your current glibc, so don't worry cd /tmp wget http://ftp.gnu.org/gnu/glibc/glibc-2.17.tar.gz tar -xvzf glibc-2.17.tar.gz cd glibc-2.17 mkdir glibc cd glibc ../configure --prefix='/opt/glibc-2.17' make make install # Then compile gcc cd /tmp wget ftp://ftp.gwdg.de/pub/misc/gcc/releases/gcc-4.6.4/gcc-4.6.4.tar.gz tar -xvzf gcc-4.6.4.tar.gz cd gcc-4.6.4 ./contrib/download_prerequisites mkdir objdir cd objdir ../configure --prefix=/opt/gcc-4.6.4 make make install
Now we have all the files, and we copy them out to our preferred directory.
cd <your path> cp /opt/gcc-4.6.4/lib64/libstdc++.so.6 . cp /opt/glibc-2.17/lib/libc.so.6 . cp /opt/glibc-2.17/lib/ld-linux-x86-64.so.2 .
And then you run it with:
./ld-linux-x86-64.so.2 --library-path . <path to komodo or stockfish>
But how did I reach it from my other computer? Well, ssh to the resque.
cat <<EOT > komodo #!/bin/sh # ssh chess.test.com -l chess ./ld-linux-x86-64.so.2 --library-path . <path to komodo or stockfish> ssh <yourhost> -l <youruser> <path to komodo on host> EOT # fix permissions chmod 750 komodo
Remember to add pub ssh key to the host, so you don’t need to write the password to login. Voila, then you just add “komodo” as the engine in your favourite GUI.
]]>Solve 100 puzzles to earn trophies and certificates. Or try solve random puzzles in different sizes and difficult levels. If you feel lucky, try a 10×10 insane puzzle.
The game will soon be available for iPhone and Windows Phone too.
]]>phaser-swipe-pages
Phaser component to manage a state of pages
Can be useful for eg help screens etc. It will use the Phaser.Camera to move around, and take care of
positioning your objects
Install
The easies way of using it is compiling your project with browserify and install it like:
npm install phaser-swipe-pages
Usage
var SwipePages = require('phaser-swipe-pages'); // in create this.pages = new SwipePages(this.game, 3); // If you want standard menus. Else you can create your own and pages.addToStationary(obj); this.pages.createMenu({}, this.back, this); // Create your pages. All objects should be created as positioned on the primary screen. The component will // move them to correct place var text = this.game.add.text(0,0,'page 1'); this.pages.addToPage(1, text); // Here we add a text to page 2. But the positioning is still 0,0 var text2 = this.game.add.text(0,0,'page 2'); this.pages.addToPage(2, text2); // Go to page 1 this.pages.goPage(1); this.back = function() { // This.will be called when the user presses SKIP on the menu }]]>
You can grab the swipe.js file and include it in your project, or you can use npm or bower:
npm install phaser-swipe bower install phaser-swipe
Usage
You can use it in two ways. With or without a model. This is without model
var Swipe = require('phaser-swipe'); // in create this.swipe = new Swipe(this.game); // in update var direciton = this.swipe.check(); if (direction!==null) { // direction= { x: x, y: y, direction: direction } switch(direction.direction) { case this.swipe.DIRECTION_LEFT: // do something case this.swipe.DIRECTION_RIGHT: case this.swipe.DIRECTION_UP: case this.swipe.DIRECTION_DOWN: case this.swipe.DIRECTION_UP_LEFT: case this.swipe.DIRECTION_UP_RIGHT: case this.swipe.DIRECTION_DOWN_LEFT: case this.swipe.DIRECTION_DOWN_RIGHT: } }
This is with a model. Here you define your methods in your model. Only those methods defined will be used. So if you do not want the diagonals, you can just omit those methods.
function YourModel() { up: function(point) {}, down: function(point) {}, left: function(point) {}, right: function(point) {}, upLeft: function(point) {}, upRight: fuction(point) {}, downLeft: function(point) {}, downRight: fuction(point) {} }; // in create this.swipe = new Swipe(this.game, yourmodel); // in update. The methods will only be called if you have a swipe. // point: { x: x, y: y } this.swipe.check();]]>
You can use it like:
// If you used browerify. Else just add it in script tag and use class UpdatableLabel. var UpdatableLabel = require('phaser-updatable-label'); // Sample style for the label text var textStyle = { font: '50px Arial', fill: '#00', align: 'center'}; // The initial value of the label var initValue = 0; // Create the label. The true is to set if the label is ment to be positive var label = new UpdatableLabel(this.game, startX, startY, initValue, textStyle, true); // Add a value to the label. We define the start position for the value we add // This will start the animation and add the value label.addValue(10, {x: 100, y: 100}); // Get the new value. This is the updated value even though the label is not var newValue = label.getValue(); // We can also add multiplications. If the value was 1 and we add multiplier by 2 // the new value will be 2 label.addMultiplier(value, {x: 100, y: 100}); // And remove it. The module take care of correct number, so you should use // the value of 2 if you used 2 in addMultiplier label.removeMultiplier(value);]]>
Try it out at iTunes.
Can you solve them all with 3 stars? If you’re stuck, try YouTube
]]>