Skip to content

Instantly share code, notes, and snippets.

qntm qntm

Block or report user

Report or block qntm

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
@qntm
qntm / everyfloat.js
Created Sep 20, 2019
Get some popcorn, we're iterating over every 64-bit float
View everyfloat.js
const nextafter = require('nextafter')
for (let i = -Number.MAX_VALUE; i !== Infinity; i = nextafter(i, Infinity)) {
console.log(i)
}
View high-water-mark-roman.js
// What is the smallest number which, when expressed in Roman numerals, won't
// fit in a 280-character Tweet?
// <https://twitter.com/Revolvolutionry/status/1165616879009816576>
const { arabicToRoman, romanToArabic } = require('big-roman')
// The entry at index `i` in this array is the smallest Roman numeral
// of length `i`
const results = ['']
const stopAt = 281
@qntm
qntm / roman.js
Last active Jun 17, 2019
An extremely spare Roman numerals converter
View roman.js
// No bounds/type checking
// No support for the overbar extension for numbers past 3999
const banks = [
['', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX'],
['', 'X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC'],
['', 'C', 'CC', 'CCC', 'CD', 'D', 'DC', 'DCC', 'DCCC', 'CM'],
['', 'M', 'MM', 'MMM']
]
@qntm
qntm / quine.js
Last active Jul 5, 2019
There are others like it, but this one is quine
View quine.js
(s => console.log(s + '\n(' + JSON.stringify(s) + ')'))
("(s => console.log(s + '\\n(' + JSON.stringify(s) + ')'))")
@qntm
qntm / index.js
Last active Sep 12, 2019
Promises/A+ implementation in 300 bytes
View index.js
let P=exports.P=(t,e,r=t=>typeof t==typeof P,c,o=t=>c=t,h=(t,e)=>{try{e=t(e),l==e?c():e===Object(e)&&r(t=e.then)?t.call(e,t=>e&&h(e=>t,e=0),t=>e&&o([t],e=0)):o([e,1])}catch(t){o([t])}},l={r:(c,P)=>setTimeout(l=>r(P=c[1]?t:e)?h(P,c[0]):o(c)),then:(t,e,r=P(t,e),h=o)=>(c?r.r(c):o=t=>r.r(t,h(t)),r)})=>l
@qntm
qntm / doubleEquals.js
Last active Nov 18, 2017
An implementation of the JavaScript `==` operator without using `==` itself.
View doubleEquals.js
'use strict'
// <http://www.ecma-international.org/ecma-262/5.1/#sec-8> Type
var type = function (x) {
// The `typeof` operator gives us almost what we want
return (
typeof x === 'function' ? 'object'
: x === null ? 'null'
: typeof x
)
@qntm
qntm / variadic.js
Last active Jun 5, 2017
Variadic fixed point combinators? They're more likely than you think
View variadic.js
/**
Analogous to Array.prototype.map but for objects. If you
REALLY don't want to modify Object.prototype you can
modify this into a regular function `objectMap(obj, f)` I GUESS
but it doesn't affect the basic idea of what happens below
*/
Object.prototype.map = function(f) {
const mapped = {};
Object.keys(this).forEach(key => {
mapped[key] = f(this[key], key, this);
@qntm
qntm / daylengths.js
Created Nov 17, 2016
Which day was the shortest?
View daylengths.js
"use strict";
var tai = require("t-a-i");
var prevlen = undefined;
var prevcount = 0;
for(var d = Date.UTC(1961, 0, 1); d < Date.UTC(2017, 0, 1); d += 86400000) {
var d2 = d + 86400000;
var len = tai.unixToAtomic(d2) - tai.unixToAtomic(d);
len = Math.round(len * 10000) / 10000;
@qntm
qntm / yearlengths.js
Last active Jul 5, 2019
Which year was the longest?
View yearlengths.js
"use strict"
const tai = require("t-a-i")
for (let y = 1961; y <= new Date().getFullYear(); y++) {
const start = tai.unixToAtomic(Date.UTC(y, 0, 1))
const end = tai.unixToAtomic(Date.UTC(y + 1, 0, 1))
console.log(y, end - start)
}
@qntm
qntm / indent.py
Last active Nov 25, 2017
Fibonindentation! Works in Python!
View indent.py
if True:
pass
if True:
if True:
if True:
if True:
if True:
if True:
if True:
print("yup, syntactically valid Python")
You can’t perform that action at this time.