Skip to content

Instantly share code, notes, and snippets.

View gilbertw1's full-sized avatar

Bryan Gilbert gilbertw1

View GitHub Profile
@gilbertw1
gilbertw1 / Palindrome.clj
Created September 26, 2012 14:09
leap year
(defn is-leap-year? [year]
(or
(and
(= 0 (mod year 4))
(not= 0 (mod year 100)))
(= 0 (mod year 400))))
@gilbertw1
gilbertw1 / samplemacro.clj
Created July 29, 2013 21:27
->>> Sample Macro
(defn replace-if-underscore [element val]
(if (= element '_)
val
element))
(defn replace-underscores [form val]
(map #(replace-if-underscore % val) form))
(defn convert-forms [val [next-form & other-forms]]
(if (nil? next-form)
(def grid [[8 2 22 97 38 15 0 40 0 75 4 5 7 78 52 12 50 77 91 8]
[49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 4 56 62 0]
[81 49 31 73 55 79 14 29 93 71 40 67 53 88 30 3 49 13 36 65]
[52 70 95 23 4 60 11 42 69 24 68 56 1 32 56 71 37 2 36 91]
[22 31 16 71 51 67 63 89 41 92 36 54 22 40 40 28 66 33 13 80]
[24 47 32 60 99 3 45 2 44 75 33 53 78 36 84 20 35 17 12 50]
[32 98 81 28 64 23 67 10 26 38 40 67 59 54 70 66 18 38 64 70]
[67 26 20 68 2 62 12 20 95 63 94 39 63 8 40 91 66 49 94 21]
[24 55 58 5 66 73 99 26 97 17 78 78 96 83 14 88 34 89 63 72]
[21 36 23 9 75 0 76 44 20 45 35 14 0 61 33 97 34 31 33 95]
(def grid [[8 2 22 97 38 15 0 40 0 75 4 5 7 78 52 12 50 77 91 8]
[49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 4 56 62 0]
[81 49 31 73 55 79 14 29 93 71 40 67 53 88 30 3 49 13 36 65]
[52 70 95 23 4 60 11 42 69 24 68 56 1 32 56 71 37 2 36 91]
[22 31 16 71 51 67 63 89 41 92 36 54 22 40 40 28 66 33 13 80]
[24 47 32 60 99 3 45 2 44 75 33 53 78 36 84 20 35 17 12 50]
[32 98 81 28 64 23 67 10 26 38 40 67 59 54 70 66 18 38 64 70]
[67 26 20 68 2 62 12 20 95 63 94 39 63 8 40 91 66 49 94 21]
[24 55 58 5 66 73 99 26 97 17 78 78 96 83 14 88 34 89 63 72]
[21 36 23 9 75 0 76 44 20 45 35 14 0 61 33 97 34 31 33 95]
@gilbertw1
gilbertw1 / clj-intro.clj
Created October 3, 2013 13:43
Clojure Intro Lighttable Presentation
(ns clojintro.core
(:require [clojure.string :as str]))
Source
.fromFile("biglist.txt")
.getLines
.foldLeft(mutable.Map[String,Int]()) { (m,w) =>
m(w) = m.getOrElseUpdate(w,0)+1; m
}
@gilbertw1
gilbertw1 / multilet.clj
Created October 4, 2013 14:21
Versions of if-let and when-let which take any number of test bindings.
(defn recursive-when-let [[[form tst] & othrs] body]
`(let [temp# ~tst]
(when temp#
(let [~form temp#]
~@(if (nil? othrs)
body
`(~(recursive-when-let othrs body)))))))
(defmacro when-let* [bindings & body]
(recursive-when-let (partition 2 bindings) body))
@gilbertw1
gilbertw1 / wordfreqs.scala
Created October 5, 2013 15:44
In memory word frequency. Single core and parallel
/* Non-parallel Version -- Time: 5546ms */
val freqs = calculateFrequencies(words, 0, words.length)
/* Parallel Version -- Time 2891ms */
val pfactor = 4
val workSize = words.length / pfactor
val freqs = combineMaps (
(0 until pfactor).par.map { unit =>
calculateFrequencies(words, (unit * workSize), ((unit+1) * workSize))
}
@gilbertw1
gilbertw1 / DependentFutures.scala
Last active June 9, 2017 09:23
Composing Dependent Futures
// filter out empty options and unbox
def transform[T](fut: Future[Option[T]]): Future[T] = {
fut.filter(_.isDefined).map(_.get)
}
val result = for (
foo <- transform(fooService.get(1));
bar <- transform(barService.get(foo.barId));
quux <- transform(quuxService.get(bar.quuxId))
) yield(Ok("Quux = " + quux))
@gilbertw1
gilbertw1 / light-theme.tmTheme
Created August 13, 2014 15:22
Bryan's Super Awesome Wacktastic Sublime Text Light Theme
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<!-- Generated by: TmTheme-Editor -->
<!-- ============================================ -->
<!-- app: http://tmtheme-editor.herokuapp.com -->
<!-- code: https://github.com/aziz/tmTheme-Editor -->
<plist version="1.0">
<dict>
<key>author</key>
<string>Chris Kempson (http:&#x2f;&#x2f;chriskempson.com)</string>