Skip to content

Instantly share code, notes, and snippets.

@geofflane
geofflane / robot3.rb
Created November 21, 2012 01:09 — forked from st23am/robot3.rb
geoff_and_joe_bot.rb
require 'rrobots'
class Gml_robot
include Robot
INIT_SCAN_DEG = 60
CLOSE_ENOUGH_DEG = 5
MAX_GUN_TURN_DEG = 30
def initialize()
@geofflane
geofflane / timer.ex
Created March 15, 2017 14:28
Elixir function that can be used to wrap a function to log the amount of time it takes to execute. Good for profiling in development.
defmodule App.Timer do
require Logger
def log(name, fun) do
{time, result} = :timer.tc(fun)
Logger.error("#{name}: #{time / 1000}ms")
result
end
end
@geofflane
geofflane / json_to_elixir_map.exs
Last active February 20, 2017 15:04
Convert JSON to a file containing an Elixir Map
map = File.read!("/path/to/file.json") |> Poison.decode!()
{:ok,of} = File.open("/path/to/file.exs", [:write, :utf8])
IO.inspect(of, map, limit: 100000, pretty: true)
File.close!(of)
@geofflane
geofflane / http_posion_client.ex
Last active January 18, 2017 03:42
HTTPoison Stateless API
@doc """
Struct to hold the configurable portions of HTTPoision
"""
defmodule HTTPoison.Client do
defstruct process_url: &__MODULE__.process_url/1,
process_request_body: &__MODULE__.process_request_body/1,
process_request_headers: &__MODULE__.process_request_headers/1,
process_request_options: &__MODULE__.process_request_options/1,
process_response_body: &__MODULE__.process_response_body/1,
process_headers: &__MODULE__.process_headers/1,
@geofflane
geofflane / Bot.scala
Created November 14, 2012 00:45
Scalatron Bot
import util.Random
// Example Bot #1: The Reference Bot
/**
* This bot builds a 'direction value map' that assigns an attractiveness score to
* each of the eight available 45-degree directions. Additional behaviors:
* - aggressive missiles: approach an enemy master, then explode
* - defensive missiles: approach an enemy slave and annihilate it
@geofflane
geofflane / zombie_wasteland.rb
Created January 22, 2014 02:17
Got to get to the safe house and avoid the zombies.
class ZombieWasteland
DEFAULT_WASTELAND = %q(@*^^^
zz*z.
**...
^..*z
zz*zS)
def initialize(wasteland=DEFAULT_WASTELAND)
@wasteland = wasteland.gsub(' ', '')
end
@geofflane
geofflane / load.go
Last active December 21, 2015 23:39
Go JSON HTTP load testing
// This is a program to load test the OAuth Token API in AlphaAuth
// It's written in Go to allow it to take advantage of parallelism and run many requests at the same time
// MRI Ruby doesn't handle parallelism well so isn't very appropriate for this task.
// Install Go v1.1.2
// Build with "go build load.go" to build a native binary for your platform. Go builds statically linked binaries, so you don't
// need the go runtime installed where the app is run (but you do need to build it for the target architecture)
// ./load -h for command line options
// Currently this is only good for testing oauth token API
# Life:
# Rule 1: Any live cell with fewer than 2 live neighbors dies
# Rule 2: Any live cell with more than 3 live neighbors
# Rule 3: Any live cell with two or three live neighbors lives on
# Rule 4: Any dead cell with exatctly three live cells becomes a live cell
require "rspec/given"
describe "grid" do
Given(:grid) { Grid.new(input) }
source 'https://rubygems.org'
gem 'celluloid'
gem 'celluloid-io'
@geofflane
geofflane / minesweeper.rb
Last active December 15, 2015 04:29
Ruby user group minesweeper kata
require 'rspec/given'
describe "minesweeper" do
Given(:minesweeper) { Minesweeper.new(input) }
context "the example minesweeper" do
Given(:input) { "*...\n....\n.*..\n...." }
Then { minesweeper.solve.should == "*100\n2210\n1*10\n1110" }
end