Skip to content

Instantly share code, notes, and snippets.

View Tiny King CLA
Fiduciary License Agreement 2.0
based on the
Individual Contributor exclusive License Agreement
(including the TRADITIONAL PATENT LICENSE OPTION)
Thank you for your interest in contributing to Think Code Learn Ltd t/a Revelation Games's Tiny King ("We" or "Us").
The purpose of this contributor agreement ("Agreement") is to clarify and document the rights granted by contributors to Us. To make this document effective, please follow the instructions at ____________________.
0. Preamble
View gist:bba955ce15777516f185a92a87dd2e4b
def assert_equal(expected, actual)
print expected == actual ? "." : "Expected #{expected}, but got #{actual}\n"
end
class PriceRule
def initialize(code, price)
@code = code
@price = price
end
@chrismdp
chrismdp / plus.rb
Created Oct 3, 2018
Plus / Sandwich solution
View plus.rb
def plus(num)
(1..num).to_a.map {|x| yield(x) }.join
end
p plus(3) { "ding" }
p plus(3) { |x| "...#{x}" }
p plus(5) { |x| (x + 2).to_s }
def sandwich(layers = 1, &block)
View -
def assert_equal(expected, actual)
print expected == actual ? "." : "Expected #{expected.inspect} but got #{actual.inspect}\n"
end
Discount = Struct.new(:amount, :value) do
def apply(basket, item)
(basket.count(item)/amount) * value
end
end
@chrismdp
chrismdp / achievements.sh
Last active Jun 7, 2017
ImagicMagick + Shell script to generate my Kickstarter reward chart on this campaign: https://www.kickstarter.com/projects/chrismdp/ealdorlight?ref=2q0zxb
View achievements.sh
#!/bin/bash
TITLE_BG=title-bg.png
EL_BG=el-circle.png
OUT=achievements.png
# A colon-seperated rewards list.
# First column is the type of reward:
# <text> - a text number.
# Columns are alpha divisor (eg 4 is 25%), percentage complete, big number, smaller label and text description.
View checkout.rb
def assert_equal(expected, actual)
print expected == actual ? "." : "Expected #{expected.inspect} but got #{actual.inspect}\n"
end
class SummingRule
def initialize(item, price)
@item = item
@price = price
end
View t.rb
class Checkout
def initialize
@total = 0
end
PRICES = { "Apple" => 30, "Banana" => 50 }
def scan(item)
@total += PRICES[item]
end
@chrismdp
chrismdp / s3.sh
Last active Jan 26, 2021
Uploading to S3 in 18 lines of Shell (used to upload builds for http://soltrader.net)
View s3.sh
# You don't need Fog in Ruby or some other library to upload to S3 -- shell works perfectly fine
# This is how I upload my new Sol Trader builds (http://soltrader.net)
# Based on a modified script from here: http://tmont.com/blargh/2014/1/uploading-to-s3-in-bash
S3KEY="my aws key"
S3SECRET="my aws secret" # pass these in
function putS3
{
path=$1
@chrismdp
chrismdp / unsplash.sh
Last active Dec 28, 2015
Script to grab one of the 10 more recent images from Unsplash, and tint and blur it for use as an iTerm background using Solarized Dark
View unsplash.sh
#!/bin/bash
# NOTE: requires ImageMagick
# NOTE: will tint to the Solarized Dark default background scheme, as the iTerm background blend option didn't lower the contrast enough for me
# NOTE: Optimised for a 1280x800 point screen (my 13" Retina MBP)
set -e
index=$[ 1 + $[ RANDOM % 10 ]]
img=`curl https://unsplash.com/rss/ | xmllint --xpath '/rss/channel/item['$index']/image/url/text()' -`
curl "$img" > ~/unsplash-latest.jpg &&
@chrismdp
chrismdp / Blob.cpp
Created Sep 3, 2014
A reasonably naïve Blob implementation in C++, complete with Array and Hash packed data types.
View Blob.cpp
#include "Blob.h"
namespace sol {
unsigned Object::used() const {
BlobType type = (BlobType)_blob.getByte(0);
switch (type) {
case BL_INT:
return Integer(_blob).used();
case BL_ARRAY:
return Array::wrap(_blob).used();