Skip to content

Instantly share code, notes, and snippets.

View mortenpi's full-sized avatar

Morten Piibeleht mortenpi

View GitHub Profile
@mortenpi
mortenpi / pcniter.py
Created March 17, 2014 17:41
Previous / current / next iterator in Python
def previous_current_next(iterable):
"""Make an iterator that yields an (previous, current, next) tuple per element.
Returns None if the value does not make sense (i.e. previous before
first and next after last).
"""
iterable=iter(iterable)
prv = None
cur = iterable.next()
try:
# Try to find gnu scientific library GSL
# See
# http://www.gnu.org/software/gsl/ and
# http://gnuwin32.sourceforge.net/packages/gsl.htm
#
# Based on a script of Felix Woelk and Jan Woetzel
# (www.mip.informatik.uni-kiel.de)
#
# Available at: http://www.miscdebris.net/blog/2010/06/21/cmake-module-to-find-gnu-scientific-library-findgsl-cmake/
#
@mortenpi
mortenpi / read_urandom.cc
Created March 24, 2014 17:30
Short generic C++ function to read random data of any type from /dev/urandom.
#include <fstream>
#include <cstdlib>
template<class T>
T read_urandom()
{
union {
T value;
char cs[sizeof(T)];
} u;
@mortenpi
mortenpi / Timer.cc
Created April 28, 2014 08:14
C++ Timer class using POSIX times()
#include "Timer.hh"
#include <iostream>
#include <sys/times.h>
#include <unistd.h>
// ---------------------------------------------------------------------
// class Time
// ---------------------------------------------------------------------
const long Time::sc_clk_tck = sysconf(_SC_CLK_TCK);
#include <iostream>
using namespace std;
struct type_t {
int i;
};
void function()
{
@mortenpi
mortenpi / acbh-audio.py
Created August 21, 2015 19:52
Assassin's Creed: Brotherhood audio puzzle solver
#!/usr/bin/env python3
import itertools
def powerset(iterable):
xs = list(iterable)
return itertools.chain.from_iterable(
itertools.combinations(xs,n) for n in range(len(xs)+1)
)
samples = [
@mortenpi
mortenpi / range.cc
Created August 28, 2015 18:35
Function to create a vector of evenly spaced numbers in C++.
// Create a vector of evenly spaced numbers.
vector<double> range(double min, double max, size_t N) {
vector<double> range;
double delta = (max-min)/double(N-1);
for(int i=0; i<N; i++) {
range.push_back(min + i*delta);
}
return range;
}
@mortenpi
mortenpi / yumhelp-dbgen.py
Last active September 6, 2015 20:38
A quick hack to generate a sqlite database from yumdb and repository cache to ease understanding what packages are installed and available.
#!/usr/bin/env python3
import argparse
import os
import os.path
import re
import sqlite3
def yumdb_packages(path):
dirs = os.listdir(path)
dirs.sort()
@mortenpi
mortenpi / NoninteractiveGadfly.jl
Created September 7, 2015 14:06
Makes the plots in Gadfly non-interactive (Juno lags with interactive plots)
module NoninteractiveGadfly
import Compose
import Compose: writemime
import Gadfly
export @noninteractive
type NoninteractivePlot
p::Gadfly.Plot
end
@mortenpi
mortenpi / ComposeHacks.jl
Last active September 21, 2015 18:56
A collection of helper macros and stuff for Julia's Compose and Gadfly packages.
# ComposeHacks module
#
# This module is a collection of hacks to make working with Compose and Gadfly
# more convenient (in Julia).
#
# The MIT License (MIT)
#
# Copyright (c) 2015 Morten Piibeleht
#
# Permission is hereby granted, free of charge, to any person obtaining a copy