src/problems/perm.lisp @ 8f6ef53eac55

ASPC, portability fixes
author Steve Losh <steve@stevelosh.com>
date Mon, 20 Jan 2020 13:41:09 -0500
parents 2735aa6aab79
children 86d92162dc1f
(defpackage :rosalind/perm (:use :cl :rosalind :losh :iterate))
(in-package :rosalind/perm)

(defparameter *input* "3")

(defparameter *output* "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* *output*
  (let* ((n (parse-integer data))
         (count (u:factorial n))
         (perms (u:permutations (alexandria:iota n :start 1))))
    (format nil "~D~%~{~A~^~%~}"
            count
            ;; sort to ensure consistent output for the unit test
            (sort (mapcar (u:curry #'str:join " ") perms) #'string<))))