Skip to content

Instantly share code, notes, and snippets.

@robinhouston
robinhouston / README.md
Last active March 31, 2017 00:09
Using transition.attr as usual

Implementing the transition the usual way, using transition.attr.

Click the circle to restart

@robinhouston
robinhouston / README.md
Last active March 31, 2017 00:16
Clamp at each tick

Clamp at each tick, rather than clamping the target value.

Click the circle to restart

@robinhouston
robinhouston / permute.js
Last active April 30, 2017 23:31
Matt Day’s in-place permutation algorithm using JavaScript generators
function* allPermutationsOf(array, level=0) {
array = array.slice(0);
const calling = (level === array.length-1);
let index = level;
do {
if (calling) yield array;
else yield *allPermutationsOf(array, level+1);
if (index > 0) {
const tmp = array[index];
@robinhouston
robinhouston / README.md
Last active May 7, 2017 13:12
Circles animated with WebGL

50,000 circles in fixed positions, with their radius and color animated through 52 datapoints.

@robinhouston
robinhouston / index.html
Last active May 26, 2017 23:51
findBasis([a,b,c,d], 4, [a,b,e]) does not enclose e
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>MSW algorithm demo</title>
<script src="https://d3js.org/d3.v4.min.js"></script>
<style>
body { margin: 0; height: 500px; position: relative; }
#info { position: absolute; width: 100%; height: 100px; bottom: 0; padding: 35px; box-sizing: border-box; }
#info.step-0 span.step-0,
PARAMETER_FILE = lkh/par/5.par
Reading PROBLEM_FILE: "atsp/5.atsp" ... done
ASCENT_CANDIDATES = 50
BACKBONE_TRIALS = 0
BACKTRACKING = YES
# CANDIDATE_FILE =
CANDIDATE_SET_TYPE = ALPHA
EXCESS = 0.00416667
EXTRA_CANDIDATES = 0
EXTRA_CANDIDATE_SET_TYPE = QUADRANT
This file has been truncated, but you can view the full file.
npm ERR! Invalid version: "1.0.3-CHAPTER.1.Loomings.Call.me.Ishmael.Some.years.ago.never.mind.how.long.precisely.having.little.or.no.money.in.my.purse.and.nothing.particular.to.interest.me.on.shore.I.thought.I.would.sail.about.a.little.and.see.the.watery.part.of.the.world.It.is.a.way.I.have.of.driving.off.the.spleen.and.regulating.the.circulation.Whenever.I.find.myself.growing.grim.about.the.mouth.whenever.it.is.a.damp.drizzly.November.in.my.soul.whenever.I.find.myself.involuntarily.pausing.before.coffin.warehouses.and.bringing.up.the.rear.of.every.funeral.I.meet.and.especially.whenever.my.hypos.get.such.an.upper.hand.of.me.that.it.requires.a.strong.moral.principle.to.prevent.me.from.deliberately.stepping.into.the.street.and.methodically.knocking.peoples.hats.off.then.I.account.it.high.time.to.get.to.sea.as.soon.as.I.can.This.is.my.substitute.for.pistol.and.ball.With.a.philosophical.flourish.Cato.throws.himself.upon.his.sword.I.quietly.take.to.the.ship.There.is.nothing.surprising.in.this.If.they.but.knew.it.a
const http = require("http");
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
const server = http.createServer(async (req, res) => {
res.writeHead(200, { "Content-Type": "text/plain; charset=UTF-8" });
// Send enough padding to fill up the browser’s buffer
data T = Two (T, T) | One T deriving (Eq, Show)
type X = Either (Either T T) ()
f :: Either X X -> Either (X, X) ()
f (Left (Left (Left (Two (t1, t2))))) = Left (Left (Left t1), Left (Left t2))
f (Right (Left (Left (Two (t1, t2))))) = Left (Left (Left t1), Left (Right t2))
f (Left (Left (Right (Two (t1, t2))))) = Left (Left (Right t1), Left (Left t2))
f (Right (Left (Right (Two (t1, t2))))) = Left (Left (Right t1), Left (Right t2))
@robinhouston
robinhouston / bijective-truncatable-primes.txt
Created June 19, 2019 07:47
The left-truncatable primes in base 10 bijective numeration
3
13
113
2113
12113
612113
5113
6113
26113
326113