Skip to content

Instantly share code, notes, and snippets.

@kungfuant
kungfuant / gist:60710b68a45d56399ec7
Created November 14, 2014 03:26
MoneyPot new crashpoint generation
var crypto = require('crypto');
function divisible(hash, mod) {
/* Reduce the hash digit by digit to stay in the signed 32-bit integer range. */
var val = hash.split('').reduce(function(r,d) {
return ((r << 4) + parseInt(d,16)) % mod ; }, 0);
return val == 0;
}
function genCrashpoint(serverSeed, clientSeed) {
@kungfuant
kungfuant / DirtySocks.js
Created December 3, 2014 16:07
Consolidate dogecoin dust
var rpcuser = '';
var rpcpass = '';
// Maximum number of inputs per transaction.
var maximumInputs = 32;
// Maximum number of transaction to generate;
var maximumTransactions = 5;
function getfee(inputs) {
@kungfuant
kungfuant / moneypot-profit.gp
Created February 9, 2015 15:52
Plot moneypot profit chart
#!/usr/local/bin/gnuplot
reset
set terminal png size 1920,1200
set output "moneypot-profit.png"
set xlabel "Time"
set ylabel "Profit"
set title "MoneyPot - Profit"
set xtics 2592000 # 30 days in seconds
@kungfuant
kungfuant / gist:e85e07f602c2247ef05a
Created February 11, 2015 13:32
Find missing games
SELECT vs.* FROM
GENERATE_SERIES(1e6::bigint, (SELECT max(id) FROM games)) vs
LEFT JOIN games ON vs = games.id
WHERE games.id IS null;
@kungfuant
kungfuant / moneypot-wagered.gp
Created February 11, 2015 17:38
Plot MoneyPot wagered and profit
#!/usr/local/bin/gnuplot
reset
set terminal png size 1920,1200
set output "moneypot-wagered.png"
set title "MoneyPot - Wagered and profit"
set xlabel "Time"
set xtics 2592000 # 30 days in seconds
@kungfuant
kungfuant / moneypot-houseedge.gp
Created February 12, 2015 05:29
MoneyPot house edge
#!/usr/local/bin/gnuplot
reset
# set terminal png size 1280,600
# set output "moneypot-houseedge.png"
set terminal svg enhanced size 1920 1080
set output "moneypot-houseedge.svg"
set ylabel "house edge %"
set xlabel "cashout multiplier"
@kungfuant
kungfuant / repair.js
Last active August 29, 2015 14:15
Repair MP games
var fs = require('fs');
var readline = require('readline');
var fp = process.argv[2];
var st = fs.createReadStream(fp, 'utf8');
var rl = readline.createInterface({input: st});
rl.on('line', function(line) {
var fields = line.split(',');
var id = parseInt(fields[0]);
@kungfuant
kungfuant / Kelly.js
Created February 26, 2015 01:21
kelly criterion with more than two outcomes
var _ = require('lodash');
var a = [0.2,0.1];
var b = [10,30];
var a0 = 1 - _.reduce(a, function(s, n) { return s + n; });
function concave(x) {
var result = a0 * Math.log(1 - x);
for (var i = 0; i < a.length; ++i)
result += a[i] * Math.log(1 + b[i] * x);
WITH t AS
(SELECT
user_id,
(COALESCE(sum(cash_out - bet), 0::numeric)
+ COALESCE(sum(bonus), 0::numeric))::bigint AS gross_profit,
(COALESCE(sum(cash_out), 0::numeric)
+ COALESCE(sum(bonus), 0::numeric)
- COALESCE(sum(bet), 0::numeric))::bigint AS net_profit,
COUNT(*) AS games_played
FROM plays
data Bit = I | O
deriving Show
type Bits = [Bit]
factorial :: Integer -> Integer
factorial 0 = 1
factorial n = n * factorial (n-1)
binom :: Integer -> Integer -> Integer