Skip to content

Instantly share code, notes, and snippets.

View ballpointcarrot's full-sized avatar
💭
Perpetually confused.

Christopher Kruse ballpointcarrot

💭
Perpetually confused.
View GitHub Profile
@ballpointcarrot
ballpointcarrot / content.rb
Created May 23, 2012 06:38
Generic substitution with Procs
class Content
MATCHERS = [{:regex => /\[Contact\]/i, :proc => Proc.new{|options| options[:contact].name}},
{:regex => /\[Site\]/i, :proc => Proc.new{|options| options[:site].name}}]
attr_accessor :body
def prepare_form_letter(contact, site)
parsed = self.body
MATCHERS.each do |matcher|
parsed.gsub!(matcher[:regex], matcher[:proc].call({:contact => contact, :site => site}))

Keybase proof

I hereby claim:

  • I am ballpointcarrot on github.
  • I am ballpointcarrot (https://keybase.io/ballpointcarrot) on keybase.
  • I have a public key whose fingerprint is 3ACB 1562 B92F BD0E 50A9 1985 B1E5 55FB 2A02 1EC4

To claim this, I am signing this object:

@ballpointcarrot
ballpointcarrot / aoc1.clj
Created December 2, 2018 23:45
Advent of Code - 2018 - Day 1
(ns aoc1)
(defn calibrate-1
"Simple solution for part 1 of AoC 2018 Day 1"
[input-file]
(let [raw-input (slurp input-file)
freqs (map #(Integer. %) (clojure.string/split-lines raw-input))]
(reduce + freqs)))
;; Below contents are from part 2, which didn't work well.
@ballpointcarrot
ballpointcarrot / aoc2.clj
Created December 3, 2018 04:53
Advent of Code 2018 - Day 2
(ns aoc.aoc2)
(defn reduce-twos-threes
"check the given frequency map n for twos or threes matches, and update
the memo map to indicate if the string has a match. Used for a reducer."
[memo n]
(let [t-memo (transient memo)]
(if (some (fn [[k v]] (= v 2)) n) (assoc! t-memo :twos (inc (:twos t-memo))))
(if (some (fn [[k v]] (= v 3)) n) (assoc! t-memo :threes (inc (:threes t-memo))))
(persistent! t-memo)))
@ballpointcarrot
ballpointcarrot / aoc3.clj
Last active December 3, 2018 13:13
Advent of Code 2018 - Day 3
(ns aoc.aoc3
(:require [clojure.string :as s]
[clojure.set :as set]))
(defrecord Claim [claim-number squares])
(defn convert-to-grid
"Converts a claim into a sequence of 'taken' squares."
[claim grid-width]
;; Named groups would be great here, but Clojure doesn't support this natively.
@ballpointcarrot
ballpointcarrot / aoc5.clj
Created December 6, 2018 01:41
Advent of Code 2018 - Day 5
(ns aoc.aoc5)
(defn polymer-drop [[c1 c2]]
(cond
(= c1 c2) false
(or (nil? c1) (nil? c2)) false
(= (Character/toLowerCase c1) (Character/toLowerCase c2)) true
:else false))
(defn shrink [input]
@ballpointcarrot
ballpointcarrot / example.json
Created April 10, 2020 22:21
example for reading json from JS
{
"calculatedValue": 14
}
@ballpointcarrot
ballpointcarrot / spiral_numbers.rb
Created April 19, 2011 03:45
Calculating the diagonal sum of a number spiral, with '1' in the center.
#adds the diagonals of a number spiral (where 1 is center)
def spiral(n)
sum = 1
max = n**2
corner = 1
step = 2
while corner < max
4.times do |i|
corner += step
sum += corner