Skip to content

Commit

Permalink
Merge pull request #34 from wobh/difference-of-squares
Browse files Browse the repository at this point in the history
xlisp #23: Difference of squares
  • Loading branch information
verdammelt committed Jan 27, 2015
2 parents 4e5677e + e8c1bf1 commit 4e75ca7
Show file tree
Hide file tree
Showing 4 changed files with 59 additions and 1 deletion.
3 changes: 2 additions & 1 deletion config.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,8 @@
"anagram",
"nucleotide-count",
"meetup",
"triangle"
"triangle",
"difference-of-squares"
],
"deprecated": [

Expand Down
33 changes: 33 additions & 0 deletions difference-of-squares/difference-of-squares-test.lisp
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
(ql:quickload "lisp-unit")

(defpackage #:squares-test
(:use #:cl #:lisp-unit))

(load "squares")

(in-package #:squares-test)

(define-test square-of-sums-to-5
(assert-equal 225 (squares:square-of-sums 5)))
(define-test sum-of-squares-to-5
(assert-equal 55 (squares:sum-of-squares 5)))
(define-test difference-of-sums-to-5
(assert-equal 170 (squares:difference 5)))

(define-test square-of-sums-to-10
(assert-equal 3025 (squares:square-of-sums 10)))
(define-test sum-of-squares-to-10
(assert-equal 385 (squares:sum-of-squares 10)))
(define-test difference-of-sums-to-10
(assert-equal 2640 (squares:difference 10)))

(define-test square-of-sums-to-100
(assert-equal 25502500 (squares:square-of-sums 100)))
(define-test sum-of-squares-to-100
(assert-equal 338350 (squares:sum-of-squares 100)))
(define-test difference-of-sums-to-100
(assert-equal 25164150 (squares:difference 100)))

(let ((*print-errors* t)
(*print-failures* t))
(run-tests :all :squares-test))
17 changes: 17 additions & 0 deletions difference-of-squares/example.lisp
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
(defpackage #:squares
(:use #:cl)
(:export #:sum-of-squares
#:square-of-sums
#:difference))

(in-package #:squares)

(defun square-of-sums (n)
(expt (* 1/2 n (1+ n)) 2))

(defun sum-of-squares (n)
(* 1/6 n (1+ n) (1+ (* 2 n))))

(defun difference (n)
(- (square-of-sums n)
(sum-of-squares n)))
7 changes: 7 additions & 0 deletions difference-of-squares/squares.lisp
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
(defpackage #:squares
(:use #:cl)
(:export #:sum-of-squares
#:square-of-sums
#:difference))

(in-package #:squares)

0 comments on commit 4e75ca7

Please sign in to comment.