src/problems/perm.lisp @ 474d88a2af2e

Refactor to remove some boilerplate
author Steve Losh <steve@stevelosh.com>
date Sat, 23 Feb 2019 12:42:07 -0500
parents 11df545d1a41
children 2735aa6aab79
(in-package :rosalind)

(defparameter *input-perm* "3")

(defparameter *output-perm* "6
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1")


(define-problem perm (data string)
    *input-perm*
    *output-perm*
  (let* ((n (parse-integer data))
         (count (factorial n))
         (perms (permutations (alexandria:iota n :start 1))))
    (format nil "~D~%~{~A~^~%~}"
            count
            ;; sort to ensure consistent output for the unit test
            (sort (mapcar (curry #'str:join " ") perms) #'string<))))

;; (problem-perm "3")
;; (solve perm)