I hereby claim:
- I am vaibhavsagar on github.
- I am vaibhavsagar (https://keybase.io/vaibhavsagar) on keybase.
- I have a public key whose fingerprint is C358 4D99 C4E3 B6FF AE66 4BFC 1CE0 EE35 7CFB 9A10
To claim this, I am signing this object:
I hereby claim:
To claim this, I am signing this object:
-- 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 |
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 |
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 |
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 |
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 |
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] |