Skip to content

Instantly share code, notes, and snippets.

@dripolles
dripolles / pythonmro.py
Created July 10, 2012 09:52
simple example of Python MRO and class attributes
In [1]: class A(object):
...: x = [1,2,3]
...:
In [2]: class B(A): pass
...:
In [3]: b = B()
In [4]: b.x.append(33)
@dripolles
dripolles / multilang
Created July 3, 2013 08:57
This program prints "Hola mundo" 100 times. It works in Python, C and Brainfuck.
#define is_C 1
#ifndef is_C
#>++++[<+++++++++++++++++++++++++>-]<[>>[-]>++++[<++++++++++++++++++>-]
#<.>+++++[<++++++++>-]<-.---.-----------.[-]>++++[<++++++++>-]<.>+++++++
#[<+++++++++++>-]<.++++++++.-------.----------.+++++++++++.[-]++++++++++.<<-]
#[-][
def principal():
return
def semicolon():
return
@dripolles
dripolles / pairToList.hs
Created March 13, 2014 12:52
1HaskellADay 2014/03/13
-- See http://codepad.org/gXEcCgBI
import Control.Applicative
pairToList :: (a,a) -> [a]
pairToList = (:) <$> fst <*> replicate 1 . snd
main = print $ pairToList (1,2)
@dripolles
dripolles / maximumList.hs
Last active August 29, 2015 13:57
1HaskellADay 2014/03/17
-- http://codepad.org/4ZT5ZCwH
import Control.Applicative
import Control.Arrow
import Data.List
maximumList :: Ord a => [a] -> [a]
maximumList = mapAccumL (\x -> max x &&& max x) <$> head <*> id >>> snd
-- Different approach
maximumList' :: Ord a => [a] -> [a]
@dripolles
dripolles / wedding.hs
Last active August 29, 2015 13:57
1HaskellADay 2014/03/18
-- http://codepad.org/JkbvjiK3
import Test.QuickCheck
-- $setup
-- >>> import Data.Maybe
-- >>> let backPartner = (>>= partner) . (>>= partner)
data Person a = Single a | Married a (Person a) deriving Show
partner :: Person a -> Maybe (Person a)
partner (Married _ p) = Just p
@dripolles
dripolles / mostRepeatedElem.hs
Created March 19, 2014 17:54
1HaskellADay 2014/03/19
-- http://codepad.org/QollsjCw
import Control.Monad
import Data.Function
import Data.List
import Test.QuickCheck
-- $setup
-- >>> import Control.Applicative ((<*>))
-- >>> import Data.List (isInfixOf)
-- >>> import Test.QuickCheck
@dripolles
dripolles / addNoise.hs
Last active August 29, 2015 13:57
1HaskellADay 2014/03/20
-- http://codepad.org/QomzEZSD
import System.Random
import Control.Arrow
addNoise :: (Num a, Random a) => a -> [a] -> StdGen -> ([a], StdGen)
addNoise x l gen = let
range = ((id &&& negate) . abs) x
noised = zipWith (+) l (randomRs range gen)
in (noised, fst $ split gen)
@dripolles
dripolles / squareList.hs
Last active August 29, 2015 13:57
1HaskellADay 24/03/2014
-- http://codepad.org/rwuXZKKQ
import Data.List.Split
squareList :: Int -> a -> [a] -> [[a]]
squareList n z xs = let
(x', xs') = splitAt n $ xs ++ repeat z
in take n (x' : squareList n z xs')
squareList' :: Int -> a -> [a] -> [[a]]
squareList' n z xs = take n $ chunksOf n (xs ++ repeat z)
@dripolles
dripolles / empytIndices.hs
Created March 31, 2014 16:10
1HaskellADay 2014/03/31
import Data.Maybe
emptyIndices :: [Maybe a] -> [Int]
emptyIndices = map fst . filter (isNothing . snd) . zip [0..]
main = do
print $ emptyIndices [Just 1,Nothing,Just 2,Nothing,Nothing,Just 3]
@dripolles
dripolles / foo.hs
Created April 3, 2014 08:42
1HaskellADay 2014/04/03
import Control.Applicative
import Control.Arrow
foo :: (a -> b) -> [a] -> [(a,b)]
foo f = map ((,) <$> id <*> f)
foo' :: (a -> b) -> [a] -> [(a,b)]
foo' = map . (id &&&)
main = do