            :times-solved 0
            :description "Given a string of comma separated integers, write a function which returns a new comma separated string that only contains the numbers which are perfect squares."
            :tags ["medium"]
+	   :approved true
            :tests ["(= (__ \"4,5,6,7,8,9\") \"4,9\")"
 		   "(= (__ \"15,16,25,36,37\") \"16,25,36\")"]}) 
 

           :times-solved 0
           :description "The trampoline function takes a function f and a variable number of parameters.  Trampoline calls f with any parameters that were supplied.  If f returns a function, trampoline calls that function with no arguments.  This is repeated, until the return value is not a function, and then trampoline returns that non-function value.  This is useful for implementing mutually recursive algorithms in a way that won't consume the stack."
           :tags ["medium", "recursion"]
           :tests ["(= __\n   (letfn\n     [(foo [x y] #(bar (conj x y) y))\n      (bar [x y] (if (> (last x) 10)\n                   x\n                   #(foo x (+ 2 y))))]\n     (trampoline foo [] 1)))"]})

      (insert! :problems
          {:_id 77
           :title "Create an Equation"
           :times-solved 0
           :description "Write a function which takes three or more integers.  Using these integers, your function should generate clojure code representing an equation.  The following rules for the equation must be satisfied:\n\n    1. All integers must be used once and only once.\n    2. The order of the integers must be maintained when reading the equation left-to-right.\n    3. The only functions you may use are +, *, or =.\n    4. The equation must use the minimum number of parentheses.\n    5. If no satisfying equation exists, return nil."
           :tags ["hard", "code-generation"]
           :tests ["(= (__ 3 4 7) '(= (+ 3 4) 7))"
		   "(= (__ 3 4 12) '(= (* 3 4) 12))"
		   "(= (__ 3 4 14) nil)"


      
      (insert! :problems
           {:_id 80
            :title "Power Set"
            :times-solved 0
            :description "A power set is the set of all subsets of a given set. Given a list, produce a set of sublists while preserving the order of elements."
            :approved true
            :tags ["hard" "seqs"]
	    :approved true
            :tests ["(= (__ '(1 :a)) '#{(1 :a) (:a) () (1)})"
                    "(= (__ '()) '#{()})"
                    "(= (__ '(1 2 3)) '#{() (1) (2) (3) (1 2) (1 3) (2 3) (1 2 3)})"
