Skip to content

Instantly share code, notes, and snippets.

View kuribas's full-sized avatar

Kristof Bastiaensen kuribas

View GitHub Profile
#include "set"
#include "vector"
#include "deque"
#include "algorithm"
struct PointRef {
int vecIdx;
int ptIdx;
};
#include "set"
#include "vector"
#include "deque"
#include "algorithm"
struct PointRef {
int vecIdx;
int ptIdx;
};
@kuribas
kuribas / bench.hs
Created July 21, 2017 16:54
reddit programming problem
import qualified Data.Map as M
import qualified Data.Set as S
import Data.Semigroup
import Control.Applicative
import Data.List
import Data.Maybe
import Criterion.Main
import System.Random
import Data.Char
@kuribas
kuribas / towers
Last active August 7, 2017 19:34
reddit towers benchmark
import Criterion.Main
import System.Random
import Data.List
import qualified Data.Vector.Unboxed as U
rainfall1 :: [Int] -> Int
rainfall1 xs = sum (zipWith (-) mins xs)
where
mins = zipWith min maxl maxr
maxl = scanl1 max xs
@kuribas
kuribas / tower.c
Created August 3, 2017 11:14
sse code
#include "emmintrin.h"
#include "stdlib.h"
int tower(int length, int *towers)
{
unsigned char *maxt, *towers8;
int i, length8;
__m128i vec1, vec2, vec3;
length8 = (length+15)/16;
@kuribas
kuribas / results
Created August 7, 2017 19:04
watertower problem in haskell, C and SSE
benchmarking rainfall/list
time 2.697 s (2.532 s .. 3.065 s)
0.998 R² (NaN R² .. 1.000 R²)
mean 2.771 s (2.712 s .. 2.800 s)
std dev 51.39 ms (0.0 s .. 51.77 ms)
variance introduced by outliers: 19% (moderately inflated)
benchmarking rainfall/unboxed vector
time 51.66 ms (51.59 ms .. 51.83 ms)
1.000 R² (1.000 R² .. 1.000 R²)
@kuribas
kuribas / speedtest.c
Last active June 19, 2018 10:24
speedtest
#include <stdio.h>
#include <stdlib.h>
inline long f(long x, long y) {
return x + (y*2);
}
long g(long n) {
long s = 0;
for (long i = 0; i < n; i++) {
@kuribas
kuribas / all_numbers.hs
Last active June 25, 2018 07:26
all numbers in a string
import Data.List
import Data.Function
import Text.Read
import Data.Maybe
import Data.Char
all_numbers :: String -> [Int]
all_numbers =
mapMaybe (readMaybe :: String -> Maybe Int) .
@kuribas
kuribas / rank.hs
Last active June 25, 2018 08:55
numbers rank
import Data.List
import Data.Function
rank :: [Int] -> [Int]
rank = order . order
where
order =
map fst .
sortBy (compare `on` snd) .
zip [1..]
@kuribas
kuribas / triangle.hs
Last active June 25, 2018 09:24
triangle
triangle = map (\i -> [(i * (i-1) `quot` 2) + 1 ..
(i * (i+1) `quot` 2)])
[1..]