Skip to content

Instantly share code, notes, and snippets.

View willtim's full-sized avatar

Tim Williams willtim

  • London
View GitHub Profile
@willtim
willtim / gist:797604
Created January 26, 2011 22:18
Google Code Jam C - ThemePark
module Main where
import Text.Printf
import Data.List
profit :: Int -> Int -> [Int] -> Int
profit cap rides groups
| sum groups <= cap = rides * sum groups
| otherwise =
case toCaps . findCycle $ rideCaps cap rides groups of
@willtim
willtim / query_comprehension.clj
Created January 25, 2011 10:52
Clojure Query Comprehension Macro
(ns query-comprehension
(:use clojure.contrib.prxml))
;;
;; Enhanced List Comprehensions supporting arbitary group-by, filtering and ordering.
;;
;; (from [ BINDING GENERATOR -- One or more Generator clauses
;; :when PREDICATE ] -- Zero or more Guards
;; :group-by [ EXPRESSION :into [KEY_NAME GROUP_NAME]] -- Optional Group-By qualifier
;; :having PREDICATE -- Optional Group Guard
@willtim
willtim / Parser.hs
Created November 2, 2010 22:48
Applicative Parsing
import Data.Maybe
import Text.Printf
import Control.Applicative
data Expr = Term Int | Op Operator Expr Expr | Var String
deriving (Show, Eq)
data Operator = Sum | Mult | Sub | Div
deriving (Show, Eq)
module Expressions where
import qualified Data.Map as M
import Text.Printf
import Control.Monad
import qualified Control.Monad.Error as E
testExpr = (Op Sum (Val 1) (Symbol "x"))
type Value = Either Error Int