package dna import "errors" const testVersion = 2 var ErrInvalid = errors.New("invalid") type Histogram map[byte]int type DNA string func (d DNA) Count(b byte) (int, error) { h, err := d.Counts() if err != nil { return 0, err } if v, ok := h[b]; ok { return v, nil } return 0, ErrInvalid } func (d DNA) Counts() (Histogram, error) { h := Histogram{'A': 0, 'C': 0, 'G': 0, 'T': 0} for _, v := range d { b := byte(v) if _, ok := h[b]; !ok { return nil, ErrInvalid } h[b]++ } return h, nil }