Skip to content

Instantly share code, notes, and snippets.

@darkf
darkf / rpn.py
Created September 4, 2012 08:57
Dumb pure RPN calculator in Python
import operator
def do_op(op, lhs, rhs):
return \
{'+': operator.add,
'-': operator.sub,
'*': operator.mul}[op](lhs, rhs)
def rpn(lst, stack):
if lst == []:
@darkf
darkf / rpn.erl
Created August 31, 2012 07:24
RPN calculator in Erlang
-module(rpn).
-export([eval/2, op/1, is_op/1, start/0]).
%% I hope I never have to touch Erlang again
op("+") -> fun(L,R) -> L+R end;
op("*") -> fun(L,R) -> L*R end.
is_op(X) -> X == "+" orelse X == "*".
@darkf
darkf / prog.erl
Created August 31, 2012 01:50
Parallel (N-process) factorial in Erlang
-module(prog).
-export([main/0, take/2, drop/2, par/2, splitAt/2, product/1, manager/3, worker/3, fact/2]).
take(0, _) -> [];
take(_, []) -> [];
take(N, Lst) ->
[hd(Lst) | take(N-1, tl(Lst))].
drop(0, Lst) -> Lst;
drop(_, []) -> [];
@darkf
darkf / prog.erl
Created August 30, 2012 20:18
Bisect parallel factorial in Erlang
-module(prog).
-export([fact/2, worker/3, manager/1, main/0]).
fact(N, Start) -> lists:foldl(fun(L, R) -> L*R end, 1, lists:seq(Start, N)).
worker({Start, End}, I, Pid) ->
R = fact(End, Start),
Pid ! {finished, I, R}.
manager(Queue) ->
@darkf
darkf / rpn.fs
Created August 12, 2012 23:37
F# RPN calculator
type Atom =
| Num of int
| Op of char
let opToProc = function
| '+' -> (+)
| '*' -> (*)
| _ -> failwith "invalid operation"
let rec evalRPN (expr : Atom list) (stack : int list) =
@darkf
darkf / rpn.rkt
Created August 12, 2012 22:37
Racket pure-functional RPN calculator
#lang racket
(define (op? e)
(member e '(+ *)))
(define (op->procedure op)
(case op
[(+) +]
[(*) *]))
@darkf
darkf / logic.py
Created July 30, 2012 06:22
Logic, how does it work?
def parse(expr):
lst = []
for line in expr.split('\n'):
s = line.split(' -> ')
if len(s) == 1:
lst.append(('def', line))
else:
lst.append(('imply', s[0], s[1]))
@darkf
darkf / sieve.c
Created July 28, 2012 07:39
Sieve of Eratosthenes in C99
#include <stdio.h>
#include <stdbool.h>
#include <math.h>
#include <string.h>
#define n 100
static bool A[n];
int main() {
int i, j;
@darkf
darkf / heh.txt
Created June 6, 2012 21:34
Pylike -> JS
struct vec2 (x, y);
def vec2_add(a, b) {
vec2(a.x + b.x, a.y + b.y);
}
def main() {
x = [1, 2, 3];
print("hi! length of x is #{len(x)}");
type actor = {mutable hp : int; name : string}
type battle = {enemy : actor; mutable turn : int}
type attack = Slash of int
let player = {hp=100; name="Player"}
let runAttack by who atk =
match atk with
| Slash dmg -> printfn "%s slashes %s for %d" by.name who.name dmg; who.hp <- who.hp - dmg