src/problems/dna.lisp @ 4cad0eb1a700

Restructure, do GC
author Steve Losh <steve@stevelosh.com>
date Thu, 01 Nov 2018 21:10:34 -0400
parents (none)
children 6088027147e1
(in-package :rosalind)

;; A string is simply an ordered collection of symbols selected from some
;; alphabet and formed into a word; the length of a string is the number of
;; symbols that it contains.
;;
;; An example of a length 21 DNA string (whose alphabet contains the symbols
;; 'A', 'C', 'G', and 'T') is "ATGCTTCAGAAAGGTCTTACG."
;;
;; Given: A DNA string s of length at most 1000 nt.  Return: Four integers
;; (separated by spaces) counting the respective number of times that the
;; symbols 'A', 'C', 'G', and 'T' occur in s.

(define-problem dna (data)
    "AGCTTTTCATTCTGACTGCAACGGGCAATATGTCTCTGTGTGGATTAAAAAAAGAGTGTCTGATAGCAGC"
    "20 12 17 21"
  (let ((results (frequencies data)))
    (format nil "~D ~D ~D ~D"
            (gethash #\A results)
            (gethash #\C results)
            (gethash #\G results)
            (gethash #\T results))))