Skip to content

Instantly share code, notes, and snippets.

View jbowles's full-sized avatar
💭
working on it...

josh bowles jbowles

💭
working on it...
View GitHub Profile
/*
RatcliffObserhelp distance
SEE tokenizer
[NIST Ratcliff/Obershelp pattern recognition](https://xlinux.nist.gov/dads/HTML/ratcliffObershelp.html):
Compute the similarity of two strings as the number of matching characters divided by the total number of characters in the two strings.
Matching characters are those in the longest common subsequence plus, recursively, matching characters in the unmatched region on either side of the longest common subsequence.
*/
@jbowles
jbowles / working_luhn_rust.rs
Created September 18, 2018 13:33
working_luhn_rust
//Luhn trait
pub trait Luhn {
fn luhn(self) -> bool;
}
impl Luhn for String {
fn luhn(self) -> bool {
let s = remove_whitespace(&self);
let d = Digits::digits(s);
if d.len() < 16 {
return false;
@jbowles
jbowles / luhn_4_styles_julia.jl
Last active July 5, 2018 16:34
luhn in julia, 4 styles
using BenchmarkTools
dbl2nd(da::Array{Int64,1}) = for i in 1:2:(length(da))
da[i] *= 2
end
mod9(da::Array{Int64,1}) = for i in 1:2:length(da)
if da[i] > 9
da[i] -= 9
end
@jbowles
jbowles / cz_ue_world_data_enrollment.fsx
Last active December 10, 2017 15:29
From the fslabbasic template get world bank data (updated version of the fslab.org getting started example)
#load "../packages/FsLab/FsLab.fsx"
(* My Environment
visual studio code 2017 Version 1.18.1
mono --version ‹2.4.1›
Mono JIT compiler version 5.4.1.7 (2017-06/e66d9abbb27 Wed Oct 25 12:10:41 EDT 2017)
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
TLS: normal
SIGSEGV: altstack
@jbowles
jbowles / fibonacci_two_ways.ex
Created December 3, 2014 16:00
tail call optimizations through pattern matching in elixir
defmodule Mather do
def numbers(x,y) do
f = fn
x,y when x>0 -> x + y
x,y -> x*y
end
IO.puts f.(x,y)
end
# A tail call optimized fibonacci.
// Using the Unicode Names package: http://www.rust-ci.org/huonw/unicode_names/doc/unicode_names/#cargo-enabled
//require macros...
// in Cargo.toml looks like this:
// [dependencies.unicode_names_macros]
// git = "https://github.com/huonw/unicode_names"
#![feature(phase)]
#[phase(plugin)] extern crate unicode_names_macros;

I can only rebind a variable that is explicitly declared as mutable; cool.

fn main() {
    let mut x: int = 5;
    x = 10i;
    println!("value of x: {}", x); // -> 10
}
defmodule WordCounter do
def count(sent) do
sent |> normalize |> find_words |> count_unique |> Enum.sort()
end
def find_words(sent) do
Regex.scan(~r/\w+/, sent)
end
@jbowles
jbowles / gist:9946328
Created April 3, 2014 00:51
keybase.md
### Keybase proof
I hereby claim:
* I am jbowles on github.
* I am jbowles (https://keybase.io/jbowles) on keybase.
* I have a public key whose fingerprint is 18A2 A842 FEB6 3E60 3CB3 AC80 3A7B 98D5 D2AA FE72
To claim this, I am signing this object:
# Too lazy to make a pull request and too impatient to wait,
# Just tuck 1.2 into the devel version
## First,
## $brew unlink go
## $vim /usr/local/Library/Formula/go.rb
## around line 20 under the `devel' block edit the following
devel do
#url 'https://go.googlecode.com/files/go1.2rc5.src.tar.gz'
#version '1.2rc5'