Skip to content

Instantly share code, notes, and snippets.

View Abhiroop's full-sized avatar
:electron:
"Syntactic sugar causes cancer of the semicolon."

Abhiroop Sarkar Abhiroop

:electron:
"Syntactic sugar causes cancer of the semicolon."
View GitHub Profile
@Abhiroop
Abhiroop / gist:6366385
Last active December 21, 2015 21:09
Knight's Tour
board = []
board_size = -1
def initiateBoard (board_dimensions):
global board
global board_size
global knights_moves
board_size = board_dimensions
for i in range(0, board_size):
board.append(board_size*[0])
settings_table = {
{
-- Edit this table to customise your rings.
-- You can create more rings simply by adding more elements to settings_table.
-- "name" is the type of stat to display; you can choose from 'cpu', 'memperc', 'fs_used_perc', 'battery_used_perc'.
name='time',
-- "arg" is the argument to the stat type, e.g. if in Conky you would write ${cpu cpu0}, 'cpu0' would be the argument. If you would not use an argument in the Conky variable, use ''.
arg='%I.%M',
-- "max" is the maximum value of the ring. If the Conky variable outputs a percentage, use 100.
max=12,
@Abhiroop
Abhiroop / Performance
Last active August 1, 2016 20:07
Top k elements from a vector
Timing the performance of various ways of extracting top k elements from a vector:
Here sequence size is about 10000
and k=300
Here is a randomly generated vector containing 10K maps. Each of the maps look like this
{
:id 123
:data (0 1 2 3 ....)
:more-data (0 1 2 3 ....)
@Abhiroop
Abhiroop / BST.hs
Last active October 16, 2017 14:37
Creating a balanced binary search tree type in Haskell
{-# LANGUAGE GADTs, DataKinds #-}
module BST where
data Nat = Zero | Succ Nat
data Tree n a where
Branch :: T n a -> Tree (Succ n) a
Leaf :: Tree Zero a
data T n a = NodeR (Tree n a) a (Tree (Succ n) a) -- right subtree has height + 1
data Nat = Zero | Succ Nat
data T n a = NodeR (Tree n a) a (Tree (Succ n) a) -- right subtree has height + 1
| NodeL (Tree (Succ n) a) a (Tree n a) -- left subtree has height + 1
| Node (Tree n a) a (Tree n a) -- both subtrees are of equal height
data Tree n a where
Branch :: T n a -> Tree (Succ n) a
Leaf :: Tree Zero a
{-# LANGUAGE GADTs, DataKinds #-}
delete :: (Ord a) => a -> Tree a -> Tree a
delete x t = makeBlack $ del x t
where makeBlack (T _ a y b) = T B a y b
makeBlack E = E
del :: (Ord a) => a -> Tree a -> Tree a
del x t@(T _ l y r)
| x < y = delL x t
| x > y = delR x t
| otherwise = fuse l r
fuse (T B t1 x t2) (T B t3 y t4) =
let s = fuse t2 t3
in case s of
(T R s1 z s2) -> (T R (T B t1 x s1) z (T B s2 y t4)) -- consfusing case
(T B s1 z s2) -> balL (T B t1 x (T B s y t4))
fuse (T R t1 x t2) (T R t3 y t4) =
let s = fuse t2 t3
in case s of
(T R s1 z s2) -> (T R (T R t1 x s1) z (T R s2 y t4))
(T B _ _ _) -> (T R t1 x (T R s y t4))
fuse t1@(T B _ _ _) (T R t3 y t4) = T R (fuse t1 t3) y t4
fuse (T R t1 x t2) t3@(T B _ _ _) = T R t1 x (fuse t2 t3)