Skip to content

Instantly share code, notes, and snippets.

View vaibhavsagar's full-sized avatar
🕺
🪩

Vaibhav Sagar vaibhavsagar

🕺
🪩
View GitHub Profile
@vaibhavsagar
vaibhavsagar / expressionmatch.hs
Created November 7, 2016 21:23
Cute interview question solution
import qualified Data.Map.Strict as Map
import Data.List (inits, tails, any)
match "" "" _ = True
match "" _ _ = False
match _ "" _ = False
match expr text matches = let
possibilities = zip (tail $ inits text) (tail $ tails text)
pattern = head expr
expr' = tail expr
@vaibhavsagar
vaibhavsagar / decompress-fail.hs
Last active November 13, 2016 17:59
Reproduction of a bug in pipes(?)
#!/usr/bin/env stack
{- stack
--resolver lts-6.24
runghc
--package attoparsec
--package pipes-bytestring
--package containers
--package pipes-zlib -}
{-# LANGUAGE OverloadedStrings #-}
@vaibhavsagar
vaibhavsagar / empty-producer.hs
Last active November 27, 2016 22:21
Reproduction of a different bug in pipes-zlib(?)
#!/usr/bin/env stack
{- stack
--resolver lts-6.24
runghc
--package attoparsec
--package pipes-bytestring
--package containers
--package pipes-zlib -}
{-# LANGUAGE OverloadedStrings #-}
@vaibhavsagar
vaibhavsagar / code-dojo-2016-11-29.hs
Created November 29, 2016 23:09
Code Dojo solution
import Data.List (inits, tails)
partitionSum [] n = n
partitionSum ls n = let
pairs = zip (tail $ inits ls) (tail $ tails ls)
pass = filter (\(l,r) -> (sum l) == (sum r)) pairs
maxes = map (\(l,r) -> max (partitionSum l (n+1)) (partitionSum r (n+1))) pass
in if (maxes == []) then n else (maximum maxes)
@vaibhavsagar
vaibhavsagar / Leftovers.ipynb
Created December 20, 2016 04:24
Zlib decompression with leftovers.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@vaibhavsagar
vaibhavsagar / KVStore.hs
Created January 24, 2017 03:01
A simple key-value store.
#!/usr/bin/env stack
{- stack --resolver lts-7 --install-ghc runghc
--package aeson
--package servant-server
--package text
--package transformers
--package unordered-containers
--package warp
-}
@vaibhavsagar
vaibhavsagar / count8s.hs
Created February 21, 2017 22:57
Code Dojo 35 with @dalecr
import Data.List
count8s number = let
len = length $ filter (\string -> (read string :: Int) `mod` 8 == 0) $ tail $ subsequences number
in len `mod` (10^9+7)
@vaibhavsagar
vaibhavsagar / Owl.hs
Created October 5, 2017 00:19
Fun with (.).(.)
module Owl where
import System.FilePath ((</>))
fromMaybe :: a -> Maybe a -> a
fromMaybe a m = case m of
Nothing -> a
Just b -> b
prependPath :: FilePath -> FilePath -> FilePath
@vaibhavsagar
vaibhavsagar / default.nix
Created January 30, 2018 08:39
Nix expression for Exference
{ nixpkgs ? import <nixpkgs> {}, compiler ? "default" }:
let
inherit (nixpkgs) pkgs;
f = { mkDerivation, base, base-orphans, bifunctors, containers
, data-pprint, deepseq, deepseq-generics, directory, either
, hashable, haskell-src-exts, hood, lens, mmorph, mtl, multistate
, parsec, pqueue, pretty, process, safe, split, stdenv
@vaibhavsagar
vaibhavsagar / 2SAT.hs
Last active February 13, 2019 04:22
A series of 2SAT checker refactorings
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE ScopedTypeVariables #-}
import qualified Data.Graph as G
import qualified Data.Array as A
import qualified Prelude as P
import Prelude hiding (lookup, read, replicate)