Skip to content

Instantly share code, notes, and snippets.

# Steve Minerminer

• Sort options
Created Nov 1, 2019
View smt.clj
 ;;; http://johnj.com/from-elegance-to-speed.html ;;; ;;; The author of the above blog post says that his `smt-8` was slow so he re-wrote it in ;;; Common Lisp and got nearly 300x improvement. I wrote some pure Clojure variations ;;; showing much improved performance over the original. ;;; ;;; Criterium for benchmarking: https://github.com/hugoduncan/criterium/ (ns miner.smt (:require [criterium.core :as cc]))
Created Oct 2, 2018
find longest palindromic substring using Clojure
View pal.clj
 (ns miner.pal (:require [criterium.core :as crit] [clojure.string :as str])) ;; An exercise from Apropos Clojure #18 video cast: ;; https://www.youtube.com/watch?v=elF9BPa0Np4 ;; ;; Their solution is something like this...
Created Mar 19, 2018
a stateful transducer inspired by @apropos_cast episode #3
View apropos3.clj
 (defn digits [n] {:pre [(int? n) (>= n 0)]} (loop [digs () remainder n] (if (< remainder 10) (conj digs remainder) (recur (conj digs (rem remainder 10)) (quot remainder 10))))) (defn digits+rev [n] (let [ds (digits n)] (concat ds (reverse ds))))
Created Mar 14, 2018
map-alt transducer
View map-alt.clj
 ;; map-alt is like the map xform but calls the funtions in an alternating order ;; (f i0) (g i1) (h i2) (f i3) ... ;; ;; In other words, map-alt spreads fn calls across elements, whereas (mapcat (juxt ...)) calls all ;; fns on each element. (defn map-alt ([] (map identity)) ([f] (map f))
Last active Apr 29, 2017 — forked from cgrand/kein.sh
Launch a plain clojure repl according to project.clj without leiningen (most of the time)
View kein.sh
 #!/bin/bash # launch a clojure plain repl but with options and classpath matching project.clj # Except when project.clj changes (and on first launch), lein is not called. if [ ! -f "project.clj" ]; then echo "No project.clj" exit 1 fi # stat (mostly) protects against staleness of copied project dir
Last active May 19, 2016
Bowling Kata in Clojure
View bowling.clj
 (ns miner.bowling) ;; http://codingdojo.org/cgi-bin/index.pl?KataBowling ;; https://www.javacodegeeks.com/2016/05/bowling-kata-clojure-f-scala.html ;; game is a string, encoding balls rolled ;; X for strike ;; / for spare ;; - for a miss or gutter ball ;; 1-9 for that many pins
Last active Jun 20, 2020
using FileMerge as git difftool on Mac OS X
View gdiff
 #!/bin/bash # my git difftool, calls FileMerge with project as -merge target # better than using opendiff # # cd to your project dir and and run difftool like this: # git difftool -d -x gdiff # find top level of git project dir=\$PWD until [ -e "\$dir/.git" ]; do
Last active Apr 7, 2016
View dijkstra_primes.clj
 (ns miner.dijkstra-primes) ;; ---------------------------------------------------------------------- ;; http://heinrichhartmann.com/2016/04/03/Dijkstra's-Prime-Number-Algorithm.html ;; https://github.com/HeinrichHartmann/DijkstraPrimes/blob/master/Primes.lua ;; Converted to Clojure by SEM. Note that there are lots of shadowing and recursive calls in ;; the Clojure code to avoid the mutation in the original code. The Clojure loops are a bit ;; ugly. Not sure if this is the best way to do things. However, the performance is pretty ;; good.
Created Feb 25, 2015
View keybase.md

### Keybase proof

I hereby claim:

• I am miner on github.
• I am miner (https://keybase.io/miner) on keybase.
• I have a public key whose fingerprint is DB15 4E49 B5BD BE5A 10B4 4437 6A9B 8B0A 4D6A 8900

To claim this, I am signing this object:

Created Feb 23, 2015
View lucky.clj
 (ns miner.lucky (:require [clojure.data.avl :as avl])) ;; http://en.wikipedia.org/wiki/Lucky_number (defn lucky-avl ([max] (lucky-avl 1 (apply avl/sorted-set (range 1 max 2)))) ([i avl] (let [n (nth avl i nil)] (if (and n (<= n (count avl)))
You can’t perform that action at this time.