Skip to content

Instantly share code, notes, and snippets.

View supki's full-sized avatar
🇸🇴
🤝 🏳️‍🌈

Matvey Aksenov supki

🇸🇴
🤝 🏳️‍🌈
  • Gorgoroth, Mordor
  • 05:39 (UTC)
View GitHub Profile
@supki
supki / pemis.hs
Last active December 11, 2015 09:38
Typesafe stack
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE InstanceSigs #-}
{-# LANGUAGE KindSignatures #-}
{-# LANGUAGE Rank2Types #-}
module Stack where
data Nat = Zero | Succ Nat
@supki
supki / pemis.hs
Created January 16, 2013 20:36
Design and Analysis of Algorithms Part II, week 4.
{-# LANGUAGE BangPatterns #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE Rank2Types #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}
module Main (main) where
import Control.Applicative
@supki
supki / pe135.hs
Last active December 10, 2015 17:48
Project Euler Problem 135.
module Main (main) where
main :: IO ()
main = print . length $ filter ((== 10) . sum . map points . divisors) [1..1000000]
divisors :: Int -> [(Int, Int)]
divisors n = [(t, n `quot` t) | t <- [1 .. round (sqrt (fromIntegral n))], n `rem` t == 0]
@supki
supki / pe105.hs
Created January 5, 2013 22:10
Project Euler Problem 105.
module Main (main) where
import Control.Applicative
import Data.Function (on)
import Data.List (sort, subsequences)
import Data.Attoparsec.ByteString.Char8 hiding (take)
import qualified Data.ByteString as B
import Data.ByteString (ByteString)
import qualified Data.Set as S
@supki
supki / pe103.hs
Created January 5, 2013 21:31
Problem Euler Problem 103.
module Main (main) where
import Data.Function (on)
import Data.List (minimumBy, sort, subsequences)
import qualified Data.Set as S
main :: IO ()
main = putStrLn . concatMap show . minimumBy (compare `on` sum) .
@supki
supki / pe101.hs
Created January 5, 2013 19:59
Project Euler Problem 101.
module Main (main) where
import Data.Packed.Matrix
import qualified Data.Packed.Vector as V
import Numeric.LinearAlgebra.Algorithms (inv)
import Numeric.Container
type Dimension = Int
type Point = Int
@supki
supki / pemis.hs
Last active December 5, 2017 21:03
Design and Analysis of Algorithms Part II, week 3.
{-# LANGUAGE DeriveGeneric #-}
module Main where
import Control.Applicative
import Control.Monad (replicateM)
import GHC.Generics (Generic)
import Control.Lens
import Control.Monad.State.Strict (State, evalState, get, modify)
import Data.Array
@supki
supki / pemis.hs
Created December 24, 2012 10:30
WIS
module Main where
import Control.Applicative
import Control.Monad (replicateM)
import Data.Array
import Data.Attoparsec
import Data.Attoparsec.ByteString.Char8
import qualified Data.ByteString as B
@supki
supki / pemis.rkt
Created December 17, 2012 18:19
Church lists.
(define nil (λ (f) (λ (t) t)))
(define cons (λ (h) (λ (t) (λ (f) (λ (z) ((f h) ((t f) z)))))))
(equal? ((nil +) 3) 3)
(equal? ((((cons 1) ((cons 2) ((cons 3) ((cons 4) nil)))) (λ (x) (λ (y) (+ x y)))) 0) 10)
(equal? ((((cons 1) ((cons 2) ((cons 3) ((cons 4) nil)))) (λ (x) (λ (y) (* x y)))) 1) 24)
(define isnil? (λ (xs) ((xs (λ (x) (λ (y) false))) true)))
(equal? (((isnil? nil) 4) 7) 4)
@supki
supki / pemis.v
Created December 14, 2012 22:05
coqs
Inductive natlist : Type :=
| nil : natlist
| cons : nat -> natlist -> natlist.
Definition bag := natlist.
Fixpoint count (v : nat) (s : bag) : nat :=
match s with
| p :: ps => if beq_nat p v then 1 + count v ps else count v ps
| nil => 0