Skip to content

Instantly share code, notes, and snippets.

pnf /
Last active Dec 21, 2015
Two algorithms for finding the longest anagram in a list of words.
die "Note that there are two different algorithms here. Don't expect it to run as is."
# ~0.15s on i7 1.7GHz
my @all;
my $m=0;
while(<>) {
$l = length($_);
$m = $l if $l>$m;
View lazysieve.clj
(defn maintain-non-primes [non-primes]
"Remove first non-prime entry, and create new entries based on it"
(let [[n ps] (first non-primes)
xs (dissoc non-primes n)
new-non-primes (map (fn [p] [(+ n p) (cons p (xs (+ n p))) ]) ps)]
(into xs new-non-primes)))
(defn seive
([] (seive (sorted-map) 2))
([n] (take n (seive (sorted-map) 2)))
([non-primes n]
pnf / tictactoe.clj
Last active Dec 19, 2015
AI-ish tic-tac-toe.
View tictactoe.clj
; list of winning positions
(def wp
[2r111000000 2r000111000 2r000000111 2r100100100 2r010010010 2r001001001 2r100010001 2r001010100])
;; Is a particular bitmask winning?
(defn winner? [p]
(some (fn [c] (= (bit-and c p) c)) wp))
;; list of possible moves, filtering out ones already made
(defn moves [p]
(filter pos? (map #(bit-and (bit-not p) (bit-shift-left 1%)) (range 9))))
;; A board position comprises a bitarray for each player and an indicaiton of whose turn it is.
pnf / frascii
Created Jun 24, 2013
Print out a fractal tree
View frascii
#!/usr/bin/env python
from math import *
import sys
# draw line from x,y of length s at angle theta, spawn growth of length s*r, theta+/-q unless n==0
def grow(x, y, theta, s, q, r, n):
ret = [(x,y,theta,s)]
n = n-1
if n>0:
x2 = x + s*cos(theta)
View view-bounds
Welcome to Scala version 2.10.2 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_21).
Type in expressions to have them evaluated.
Type :help for more information.
scala> implicit def strToInt(x:String) = x.toInt
warning: there were 1 feature warning(s); re-run with -feature for details
strToInt: (x: String)Int
scala> class C[A](v:A){def a(implicit ev:A=>Int)=123+ev(v)}
defined class C
pnf /
Created Jun 21, 2013
Draw a sort-of-pretty ascii graph from input data in outline form.
#!/usr/bin/env python
import re
import sys
from collections import deque
class Frame:
def __init__(self,node,indent):
self.node = node
self.indent = indent
pnf / mapf
Created Jun 10, 2013
Explore sequential composition and chained futures
View mapf
object mapfunc {
println("Let's do wacky things with lists") //> Let's do wacky things with lists
import scala.concurrent._
// Hold a list of functions of no arguments producing A
class SeqF[A] (l : Seq[()=>A]) {
def map[B](f : A =>B) = new SeqF( x => () => f(x())))
def scanLeft[B](b0 : B)(f : (B,A)=>B) : SeqF[B] = {
You can’t perform that action at this time.