Skip to content

Instantly share code, notes, and snippets.

View biesnecker's full-sized avatar

biesnecker

  • Orlando, FL
  • 11:37 (UTC -04:00)
View GitHub Profile
@biesnecker
biesnecker / rflick.rb
Created December 12, 2012 09:28
Because sometimes you need to get pictures of kittens into your browser from the command line, fast. Usage: rflick.rb "search query" It will open the image in your browser (on OSX)
#!/usr/bin/env ruby
require 'flickraw'
FlickRaw.api_key = "YOUR FLICKR API KEY"
FlickRaw.shared_secret = "YOUR FLICKR SHARED SECRET"
ARGV[0] ||= "kittens"
search_query = ARGV[0]
(server/add-middleware
friend/authenticate
{ :credential-fn (partial creds/bcrypt-credential-fn users)
:workflows [(workflows/interactive-form)]
:login-uri "/login"
:unauthorized-redirect-uri "/login"
:default-landing-uri "/" })
(pre-route [:any "/app/*"] { :as req } (let [id (friend/identity req)]
(when-not (friend/authorized? [::user] id) (friend/throw-unauthorized id {}))))
@biesnecker
biesnecker / bell.clj
Created February 7, 2012 03:01
Bell numbers
(defn bell
"Returns the nth Bell number"
[n]
(cond
(= n 0) 1
(= n 1) 1
:else (reduce + (map #(abs (stirling-2 n %)) (range 0 (inc n))))))
@biesnecker
biesnecker / stirling-dynamic.clj
Created January 31, 2012 03:59
Stirling numbers
(defn- stirling-loop-internal
[^long n ^long k compfunc]
{ :pre [(<= k n)] }
(let [workitems (for [n' (range 1 (inc n)) k' (range 0 (inc (- n k)))
:when (and (>= (- n' k') 0) (>= k (- n' k')))] [n' (- n' k')])]
(loop [current (first workitems) items (rest workitems) results {}]
(cond
(= current [n k]) ((compfunc current results) current)
(= (current 0) (current 1))
(recur (first items) (rest items)
@biesnecker
biesnecker / chakravala.clj
Created January 28, 2012 02:34
Project Euler 66
(defn natural?
"Returns true if n is a natural number (greater than zero, and with no
fractional component), else false."
[n]
(and (> n 0) (zero? (rem n 1))))
(defn nth-sgonal
"For a given s-gonal number P(s,n) = x, returns n (n is a natural number if
x is a term of the given s-gonal sequence)."
^double [^long x ^long s]
@biesnecker
biesnecker / euler-4.clj
Created January 24, 2012 22:56
Project Euler solutions in Clojure (4-6)
(defn palindrome? [n] (let [numseq (seq (str n))] (= (reverse numseq) numseq)))
(defn euler-4 []
(apply max
(for [x (range 999 900 -1) y (range x 900 -1)
:when (palindrome? (* x y))]
(* x y))))
@biesnecker
biesnecker / euler-1.clj
Created January 23, 2012 07:38
Snippets for Project Euler 1-3 in Clojure
(defn prog-sum
"Calculates the sum of an arithmetic progression"
([n a] (prog-sum n a a))
([n a d] (/ (* n (+ (* 2 a) (* (dec n) d))) 2)))
(defn euler-1 [n f1 f2]
(let [
b (dec n)
d1 (quot b f1)
d2 (quot b f2)
@biesnecker
biesnecker / shockbob-ttt.clj
Created January 22, 2012 01:07
#73 Analyze a Tic-Tac-Toe Board
#(some {[:o :o :o] :o [:x :x :x] :x}
(partition 3
(map
(vec (flatten %))
[0 1 2 3 4 5 6 7 8
0 3 6 1 4 7 2 5 8
0 4 8 2 4 6])))
@biesnecker
biesnecker / good-solution.clj
Created January 20, 2012 09:38
#77: Anagram Finder
;; by inecas (http://www.4clojure.com/user/inecas)
(fn [c]
(set (map set
(filter #(< 1 (count %))
(vals (group-by sort c))))))
(def charvals (apply vector "ABCDEFGHJKMNPQRSTUVWXYZ23456789")) ; some characters weren't allowed in the codes
(defn rand-char [] (charvals (rand-int (count charvals))))
(apply str (take 10 (repeatedly rand-char)))