Skip to content

Instantly share code, notes, and snippets.

@wobh
wobh / near-chars.cl
Created July 2, 2015 07:53
Near alphabetic standard characters
(defun char-next (char)
"Return the next alphabetic character, per CL standard."
(assert (char-lessp char #\Z)
(char) "No further characters in the standard alphabet.")
(let* ((char-num (digit-char-p (char-upcase char) 36))
(char-next (digit-char (1+ char-num) 36)))
(if (lower-case-p char)
(char-downcase char-next)
char-next)))
@wobh
wobh / cl-pretty-print.org
Created June 25, 2015 06:55
Common Lisp Pretty Printing DRAFT

Common Lisp Pretty Printing

Introduction

For some time, I found Common Lisp’s pretty printer to be intimidating, obscure, and complex, and, for as long as I’ve been comfortable with the basics of FORMAT I felt able to ignore it, as

@wobh
wobh / mismatch-count-test.lisp
Last active August 29, 2015 14:22
mismatch-count
(ql:quickload "lisp-unit")
(defpackage #:mismatch-count-test
(:use #:cl #:lisp-unit)
(:export #:run))
(in-package #:mismatch-count-test)
;;; Tests
@wobh
wobh / min-conf.rb
Created January 29, 2015 11:26
Minimum configurable Ruby class
# Goals
# 1. Small class configurable with a block
# 2. puts settings in a ruby Struct
require 'Forwardable'
class Settable
extend Forwardable
def_delegator :@config, :foo
def_delegator :@config, :bar
@wobh
wobh / quadratic-macrolet.lisp
Last active August 29, 2015 14:12
Common Lisp quadratic formula (a macrolet example)
;;; One use of `macrolet' is to simplify purely structural concerns in
;;; one's functions. As one example, consider this implementation of
;;; the quadratic formula:
(defun quadratic (a b c)
(macrolet ((plus-or-minus-div (x y z)
`(values (/ (+ ,x ,y) ,z) (/ (- ,x ,y) ,z))))
(plus-or-minus-div (- b) (sqrt (- (* b b) (* 4 a c))) (* 2 a))))
;;; Although there's still some redundancy, it's contained to the point
@wobh
wobh / dna-min-test-results.txt
Last active August 29, 2015 14:10
Setting up quicklisp in clisp, for exercism
CL-USER> (load "point-mutations-test.lisp")
;; Loading file point-mutations-test.lisp ...
To load "lisp-unit":
Load 1 ASDF system:
lisp-unit
; Loading "lisp-unit"
;; Loading file /Users/wclifford/exercism/lisp/point-mutations/dna.lisp ...
;; Loaded file /Users/wclifford/exercism/lisp/point-mutations/dna.lisp
INVALID-TO-GET-DISTANCE-FOR-DIFFERENT-LENGTH-STRINGS: 3 assertions passed, 0 failed.
@wobh
wobh / wavelets.rb
Last active December 16, 2015 04:19
Wavelets calculations and tests
# Wavelets calculations
# http://dmr.ath.cx/gfx/haar/
require 'prime'
class NotPowerOfTwoError < StandardError; end
class NotEvenNumberError < StandardError; end
@wobh
wobh / primal.rb
Last active December 15, 2015 11:19
Some fun with primes in ruby
require 'prime'
def list_primes_below(n)
# List primes below argument
return Prime::EratosthenesGenerator.new.take_while { |i| i <= n }
end
def list_primes_count(n)
# List argument number of primes
return Prime::EratosthenesGenerator.new.take(n)
class Robot
attr_reader :name, :instruction_count, :created_at, :reset_at
def make_name(name_length=5)
return Array.new(name_length){rand(36).to_s(36)}.join.upcase
end
def incf_instruction_count
@instruction_count += 1
end
def set_name()
@name = make_name
#Scrabblesque
class ScrabblesquePlay
def inititialize(word, multipliers)
end
# TODO I haven't decided the class properties quite yet.
end
$letter_values = {