Skip to content

Instantly share code, notes, and snippets.

Avatar
🕺
🌐

Vaibhav Sagar vaibhavsagar

🕺
🌐
View GitHub Profile
@vaibhavsagar
vaibhavsagar / expressionmatch.hs
Created Nov 7, 2016
Cute interview question solution
View expressionmatch.hs
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
View Week12.hs
import Control.Applicative
import Control.Monad
import System.IO
import Data.List (foldl')
import Data.Maybe
main :: IO ()
main = do
t <- fmap read getLine :: IO Int
lns <- mapM (const getLine) [1..t]
View Week11.hs
import qualified Data.Map.Strict as Map
import qualified Data.Set as Set
import Data.Map.Strict ((!))
import Data.List (partition)
getNeighbours list i j = let
possible = [(i-1, j-1),(i-1, j), (i-1, j+1), (i, j-1), (i, j+1), (i+1, j-1), (i+1, j), (i+1, j+1)]
actual = filter (\(x, y) -> x >=0 && y >= 0 && x < length list && y < length (head list)) possible
View Week10.hs
sherlock :: Int -> Int -> Int -> [Int] -> Bool
sherlock left current sm [] =
if left == sm
then True
else False
sherlock left current sm rest =
case compare left sm of
LT -> let
left' = left + current
@vaibhavsagar
vaibhavsagar / project-euler-12.hs
Created Sep 8, 2016
Code dojo solution for Week 4 with @sofiajeanne
View project-euler-12.hs
import Control.Monad.Trans.State
import Data.Map.Strict as Map
import Data.Set as Set
triangle n = sum [1..n]
factors n = [f | f <- [1..n], n `mod` f == 0 ]
addFactors :: Int -> Int -> Map.Map Int (Set.Set Int) -> Map.Map Int (Set.Set Int)
addFactors n i factorMap
| n == i = Map.insert n (Set.fromList (factors n)) factorMap
View Week8.hs
import Data.List (groupBy, sortBy)
import Data.Ord (comparing)
data DisjointSet = DisjointSet {index :: Int, value :: Int, parent :: Int} deriving Show
find :: [DisjointSet] -> Int -> Int
find ls i = let
djs = ls !! (i - 1)
ix = index djs
p = parent djs
@vaibhavsagar
vaibhavsagar / Week7.ipynb
Created Sep 27, 2016
hackerrank pairs code dojo with @sranso
View Week7.ipynb
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@vaibhavsagar
vaibhavsagar / Week6.ipynb
Created Sep 21, 2016
2016-09-20 solution with @satabdidas
View Week6.ipynb
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@vaibhavsagar
vaibhavsagar / Week5.ipynb
Last active Sep 14, 2016
Week 5 code dojo solution with @phasedchirp
View Week5.ipynb
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@vaibhavsagar
vaibhavsagar / sherlock_and_the_beast.hs
Last active Sep 8, 2016
Solution for code dojo 30/08/2016 with @miguel-vila
View sherlock_and_the_beast.hs
-- Slow solution that fails for n>19 due to integer overflow
import Data.List
import Data.Ord
maxPair n = sortBy (comparing snd) [(x,y) | x <- [0,3..n], y <- [0,5..(n-x)], x+y==n]
gen [] = -1
gen ((x,y):_) = let
noOf5s = (replicate x '5')
noOf3s = (replicate y '3')
in read (noOf5s ++ noOf3s) :: Int