Skip to content

Instantly share code, notes, and snippets.

goulu /
Created May 28, 2021
"stores" and prints gogol and gogolplex numbers
from itertools import product
from Goulib.itertools2 import ilen
ten = range(10)
def tenpow(p):
# p is the log of exponent
return product(ten, repeat=p)
def tenprint(iter):
goulu /
Last active May 16, 2019
very (un)useful class for test driven development: objects of the PassAll class will pass any test you can think of :-D
import inspect
import re
#TODO: expand for test frameworks like unittest, nose ...
def _make_true(op,value):
# returns a value that satisfies comparizon
goulu / index.html
Last active Jun 27, 2018
Table using D3.js and clusterize.js
View index.html
<!doctype html>
<meta charset="utf-8"/>
<link rel="stylesheet" href=""></script>
<script src=""></script>
<script src='' type='text/javascript'></script>
<script src="./table.js" type='text/javascript'></script>
View python_finesses.ipynb
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
goulu / image.js
Last active Jun 11, 2018
D3 zoomable canvas class
View image.js
const margin = {top: 20, right: 10, bottom: 20, left: 60};
class Figure {
constructor(div,width,height) {
this.width = width;
this.height = height;
// Canvas is drawn first, and then SVG over the top.
this.canvas = div.append("canvas")
goulu /
Last active May 26, 2017
Finds a better constant than 299792458 to define the meter
from fractions import gcd
s=9192631770 # number of caesium oscillations in a second
bestm=299792458 # fraction of a second in a meter
bestgcd=gcd(s,bestm) #14 . we want a larger one
for m in range(299792458, 300000000):
if g>bestgcd:
goulu /
Last active Apr 26, 2017
compute fibonacci(n)%m for very large n
from Goulib.math2 import digits, identity
def mod_matmul(A,B, mod=0):
return [[sum(a*b for a,b in zip(A_row,B_col))%mod for B_col in zip(*B)] for A_row in A]
def mod_matpow(M, power, mod=0):
result = identity(2)
for power in digits(power,2,True):
if power:
result = mod_matmul(result, M, mod)
goulu /
Last active Dec 17, 2016
An inefficient way to generate Pythagorean triples
import itertools, math
def triples():
""" generates Pythagorean triples sorted by z,y,x with x<y<z
for z in itertools.count(5):
for y in range(z-1,3,-1):
if x<y and abs(x-round(x))<1e-12:
yield (int(x),y,z)
goulu /
Last active Oct 4, 2016
Efficient search of Munchausen numbers
#!/usr/bin/env python
# coding: utf8
efficient search of Münchausen numbers
motivated by
__author__ = "Philippe Guglielmetti"
goulu /
Last active Jul 15, 2016
Faulhaber formula to calculate sum of powers of integers using a generator for Bernouilli numbers
from scipy.special import binom as binomial
def bernouilli_gen(init=1):
"""generator of Bernouilli numbers
:param init: int -1 or +1.
* -1 for "first Bernoulli numbers" with B1=-1/2
* +1 for "second Bernoulli numbers" with B1=+1/2