Skip to content

Instantly share code, notes, and snippets.

View hammeiam's full-sized avatar

David Hamme hammeiam

  • San Francisco, CA
View GitHub Profile
import itertools
"""
The following math problem illustrates the essence of hacking:
Use each of the numbers 1, 3, 4, and 6 exactly once with any of the four basic math operations (addition, subtraction, multiplication, and division) to total 24. Each number must be used once and only once, and you may define the order of operations; for example, 3 * (4 + 6) + 1 = 31 is valid, however incorrect, since it doesn’t total 24.
The rules for this problem are well defined and simple, yet the answer eludes many. Like the solution to this problem (shown on the last page of this book), hacked solutions follow the rules of the system, but they use those rules in counterintuitive ways.
"""
nums = ['1','3','4','6']
@hammeiam
hammeiam / elf-marbles.py
Last active December 9, 2018 09:46
Advent of Code 2018: Day 9
"""
The Elves play this game by taking turns arranging the marbles in a circle
according to very particular rules. The marbles are numbered starting with 0
and increasing by 1 until every marble has a number.
First, the marble numbered 0 is placed in the circle. At this point,
while it contains only a single marble, it is still a circle:
the marble is both clockwise from itself and counter-clockwise from itself.
This marble is designated the current marble.
@hammeiam
hammeiam / closest-word.js
Last active March 9, 2021 19:50
Simple Find Closest Word
// You can modify these
const wordsToCheck = ["Apple", "red delisous", "orangg", "rgapefruit"];
const dictionary = ["apple", "banana", "orange", "grapefruit", "red delicious"];
// Don't modify below here
const ALPHABET = "qwertyuiopasdfghjklzxcvbnm1234567890_ ".split("").sort();
const BASE_ALPHABET_HASH = ALPHABET.reduce((acc, x) => ({[x]: 0, ...acc}), {});
const DICTIONARY_HASHES = dictionary.map((w) => buildFreqHash(cleanStr(w)));
@hammeiam
hammeiam / jq-scripts.md
Created August 14, 2022 03:05
Running list of helpful JQ scripts

Merkle tree to address: amount map

Select the key containing merkle proofs and amounts. to_entries[] returns objects on new lines instead of in an array, so wrap the statement in [()] to make it an array again. For each entry, map the amount to the address key. Merge back in to one big object with add.

jq '.recipients | [(to_entries[] | {(.key): .value.amount})] | add' results.json