Congrats on your 1st place entry. Hope it keeps its position.
The substring is 32nd to 41st characters, hence for yours fdf1648f8. Still some space to squeeze in to the top position.

32nd? Dang! Oh, it is. Can you fix this typo:
// Concatenate txid, nonce and tournament address
// txid and tournament address are hex strings while nonce is string in integer
composite = txid.toString() + nonce of first confirming block + tournament address;
// SHA-256 it
hash = sha256(composite);
// Get a substring of hash at 32nd to 41st position
// with string length of 9 characters
score_in_hex = hash.substring(31, 40);
// Convert it into decimal
score = parseInt(score_in_hex, 16);
It's not a typo, in common programming language, esp. for
.substring(), 1st character is at position 0. 32nd character is at position 31 (starting from 0). Even though the doc is using psuedo-code, we are using JavaScript as the base.