Skip to content

Instantly share code, notes, and snippets.

View msgodf's full-sized avatar

Mark Godfrey msgodf

View GitHub Profile
@msgodf
msgodf / look-and-say.rb
Created April 14, 2011 08:36
A reduce solution to Conway's "Look and Say" sequence
def lookandsay(seq)
seq.reduce{|s, v| s = [[1, s]] if s != s.to_a;if s.last.last == v then s[ s.length - 1 ] = [ s.last.first + 1 , v] else s.push [1, v] end; s}.flatten
end
@msgodf
msgodf / look-and-say.clj
Created April 14, 2011 14:27
Solution to Conway's Look and Say sequence generation in Clojure
(defn seq-groups [seq]
(partition-by (fn [x] seq)))
(defn look-and-say [seq]
(interleave
(map count (seq-groups seq))
(map first (seq-groups seq))))
@msgodf
msgodf / fib_generator.coffee
Created May 22, 2011 17:01
Fibonacci sequence generator
class fib_generator
constructor: ->
last = 0
current = 1
@first = ->
last = 0
current = 1
@next = ->
temp = last
last = current
@msgodf
msgodf / generator_compact.js
Created May 23, 2011 11:47
Generator/lazy sequence class for JavaScript
function Generator(f,s,i){i=0;return{first:function(){return s[i=0];},next:function(){return s.length<=++i?s[i]=f(s):s[i];},nth:function(n){while(s.length<=n)this.next();return s[n];},take:function(n){this.nth(n);return s.slice(0,n);}};}
@msgodf
msgodf / gist:986659
Created May 23, 2011 13:10
Attempt to add list comprehension sugar to lazy lists
range = (function(s,e){var i=s,r={};f=fuction(){r[i+1]=f;i++;return i;};r[i]=f;r.length=e-s;return r;};
some_range = range( 0 , 10 );
for ( i = 0 ; i <= some_range.length ; ++i ) {
console.log( some_range[ i ]() );
}
@msgodf
msgodf / localStorage.js
Created May 26, 2011 16:59
Rough and ready localStorage object for node.js
localStorage=(function(){function t(){this.store={};};t.prototype={constructor:t,setItem:function(k,v){this.store[k]=v;},getItem:function(k){return this.store[k];}};return new t;})()
@msgodf
msgodf / ABCD.js
Created June 1, 2011 09:56
Code to run arbitrary JavaScript code as a string, using only the characters []$=()-+~""!_
[][$___=(($=(({}+"")))[$__=-~-~-~-~-~[]]+$[-~[]]+(""[+[]]+"")[-~[]]+(![]+"")[-~-~-~[]]+(($_=(!""+"")))[+[]]+$_[-~[]]+$_[-~-~[]]+$[$__]+$_[+[]]+$[-~[]]+$_[-~[]])][$___](($$=($_____=(!""+"")[-~[]]+(!""+"")[-~-~-~[]]+(!""+"")[+[]]+(!""+"")[-~-~[]]+(!""+"")[-~[]]+(""[+[]]+"")[-~[]]
)+"[][$___][$___]('"+$_____+"\"\\"+(""[+[]]+"")[+[]]
+(+[])+(+[]))+($$$=""+(-~-~-~-~[])+(-~[]))+($$$$="\"')()"))()+[][$___][$___]($$+($$$=-~$$$)+$$$$)()+[][$___][$___]($$+($$$=-~$$$)+$$$$)()+[][$___][$___]($$+($$$=-~$$$)+$$$$)()
@msgodf
msgodf / color_maven.sh
Created January 4, 2012 15:46
Colour Maven output
# Modified from http://repo.or.cz/w/anomen-overlay.git/tree/HEAD:/dev-java/maven-color
color_maven() {
local BOLD=`tput bold`
local TEXT_RED=`tput setaf 1`
local TEXT_GREEN=`tput setaf 2`
local TEXT_YELLOW=`tput setaf 3`
local RESET_FORMATTING=`tput sgr0`
$MAVEN_HOME/bin/mvn $@ | sed -e "s/\(\[INFO\]\ \-\-\-\ .*\)/${TEXT_BLUE}\1${RESET_FORMATTING}/g" \
-e "s/\(\[INFO\]\ \[.*\)/${RESET_FORMATTING}\1${RESET_FORMATTING}/g" \
-e "s/\(\[INFO\]\ \)\(BUILD SUCCESS\)/\1${TEXT_GREEN}\2${RESET_FORMATTING}/g" \
@msgodf
msgodf / dijkstra-core.clj
Created May 30, 2012 07:28 — forked from mjg123/dijkstra-core.clj
Brisfunctional dojo code implementing dijkstra's algorithm 29-05-2012
(ns dijkstra.core)
(def initial-node {:score Integer/MAX_VALUE :route [] :dead? false})
(defn make-initial-state [edges start-node]
(-> (zipmap (keys edges) (repeat initial-node))
(assoc-in [start-node :score] 0)
(assoc-in [start-node :route] [start-node])))
(defn live-nodes [state]
@msgodf
msgodf / dijkstra-core.clj
Created May 30, 2012 07:32 — forked from tcoupland/dijkstra-core.clj
Brisfunctional dojo code implementing dijkstra's algorithm 29-05-2012
(ns dijkstra.core)
(def edges {:A {:F 14 :C 9 :B 7}
:B {:A 7 :C 10 :D 15}
:C {:A 9 :B 10 :D 11 :F 2}
:D {:B 15 :C 11 :E 6}
:E {:D 6 :F 9}
:F {:A 14 :C 2 :E 9}})
(def inf Integer/MAX_VALUE)